diff --git a/.eslintrc.json b/.eslintrc.json index 22e06a476..b6d903eb9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,6 +19,7 @@ "global-require": "off", "implicit-arrow-linebreak": "off", "import/newline-after-import": "off", + "import/no-unresolved": ["error", { "ignore": ["^uuid$"] }], // uuid v9+ uses ES modules; eslint-plugin-import has trouble resolving it but it works fine at runtime "import/order": "off", "lines-between-class-members": "off", "max-classes-per-file": "off", diff --git a/lib/data/briefcase.js b/lib/data/briefcase.js index 2720253a9..770130652 100644 --- a/lib/data/briefcase.js +++ b/lib/data/briefcase.js @@ -10,7 +10,7 @@ const { Transform } = require('stream'); const hparser = require('htmlparser2'); const { identity, last } = require('ramda'); -const csv = require('csv-stringify'); +const { stringify: csv } = require('csv-stringify'); const sanitize = require('sanitize-filename'); const { SchemaStack } = require('./schema'); const { rejectIfError } = require('../util/promise'); diff --git a/lib/data/client-audits.js b/lib/data/client-audits.js index 9a8277df4..2245e90fd 100644 --- a/lib/data/client-audits.js +++ b/lib/data/client-audits.js @@ -8,8 +8,8 @@ // except according to the terms contained in the LICENSE file. const { Transform } = require('stream'); -const parse = require('csv-parse'); -const csv = require('csv-stringify'); +const { parse } = require('csv-parse'); +const { stringify: csv } = require('csv-stringify'); const sanitize = require('sanitize-filename'); const { PartialPipe } = require('../util/stream'); const { zipPart } = require('../util/zip'); @@ -17,7 +17,7 @@ const { zipPart } = require('../util/zip'); const headers = [ 'event', 'node', 'start', 'end', 'latitude', 'longitude', 'accuracy', 'old-value', 'new-value', 'user', 'change-reason' ]; // used by parseClientAudits below. -const parseOptions = { bom: true, trim: true, skip_empty_lines: true, relax_column_count: true, relax: true }; +const parseOptions = { bom: true, trim: true, skip_empty_lines: true, relax_column_count: true, relax_quotes: true }; const headerLookup = {}; for (const header of headers) headerLookup[header] = true; diff --git a/lib/data/entity.js b/lib/data/entity.js index 7c686d357..ca93f7f31 100644 --- a/lib/data/entity.js +++ b/lib/data/entity.js @@ -11,10 +11,10 @@ // for dealing with the XForms XML schema and transforming submission XML into // entities. -const csv = require('csv-stringify'); +const { stringify: csv } = require('csv-stringify'); const { clone, path, mergeLeft } = require('ramda'); const { Transform } = require('stream'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const hparser = require('htmlparser2'); const { last } = require('ramda'); const { PartialPipe } = require('../util/stream'); diff --git a/lib/data/odk-reporter.js b/lib/data/odk-reporter.js index 6130dae37..68cfe1f64 100644 --- a/lib/data/odk-reporter.js +++ b/lib/data/odk-reporter.js @@ -7,7 +7,7 @@ // including this file, may be copied, modified, propagated, or distributed // except according to the terms contained in the LICENSE file. -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { encodeXML } = require('entities'); const metaWithUuidXml = () => { diff --git a/lib/data/schema.js b/lib/data/schema.js index 86ca84094..3a0dd1375 100644 --- a/lib/data/schema.js +++ b/lib/data/schema.js @@ -20,7 +20,7 @@ const { always, equals, last, map } = require('ramda'); const ptr = last; // just rename to make it more relevant to our context. const hparser = require('htmlparser2'); -const parse = require('csv-parse/lib/sync'); +const { parse } = require('csv-parse/sync'); const { decodeXML } = require('entities'); const semverSatisfies = require('semver/functions/satisfies'); const Option = require('../util/option'); diff --git a/lib/model/frame.js b/lib/model/frame.js index cd1212def..1cbd1ef7d 100644 --- a/lib/model/frame.js +++ b/lib/model/frame.js @@ -9,7 +9,7 @@ const { sql } = require('slonik'); const { pick, without, remove, indexOf } = require('ramda'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { pickAll, noargs } = require('../util/util'); const Option = require('../util/option'); const { rejectIf } = require('../util/promise'); diff --git a/lib/model/frames/submission.js b/lib/model/frames/submission.js index dc78f7e1d..4976290c3 100644 --- a/lib/model/frames/submission.js +++ b/lib/model/frames/submission.js @@ -7,7 +7,7 @@ // including this file, may be copied, modified, propagated, or distributed // except according to the terms contained in the LICENSE file. -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { Frame, table, readable, writable, embedded, into } = require('../frame'); const { consumeAndBuffer } = require('../../util/stream'); const { resolve } = require('../../util/promise'); diff --git a/lib/model/migrations/20171030-01-add-default-authz-records.js b/lib/model/migrations/20171030-01-add-default-authz-records.js index 24e10e608..b1f28a935 100644 --- a/lib/model/migrations/20171030-01-add-default-authz-records.js +++ b/lib/model/migrations/20171030-01-add-default-authz-records.js @@ -8,7 +8,7 @@ // except according to the terms contained in the LICENSE file. // -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); /* eslint-disable */ // because eslint's indentation expectations here are insane. const up = (db) => diff --git a/lib/model/migrations/20180112-02-add-field-keys.js b/lib/model/migrations/20180112-02-add-field-keys.js index aee3c1710..f3a3a524c 100644 --- a/lib/model/migrations/20180112-02-add-field-keys.js +++ b/lib/model/migrations/20180112-02-add-field-keys.js @@ -8,7 +8,7 @@ // except according to the terms contained in the LICENSE file. // -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const up = (knex) => knex.schema.createTable('field_keys', (fk) => { diff --git a/lib/model/migrations/20181206-01-add-projects.js b/lib/model/migrations/20181206-01-add-projects.js index 53e4d761b..d0e579078 100644 --- a/lib/model/migrations/20181206-01-add-projects.js +++ b/lib/model/migrations/20181206-01-add-projects.js @@ -7,7 +7,7 @@ // including this file, may be copied, modified, propagated, or distributed // except according to the terms contained in the LICENSE file. -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const up = async (db) => { // first create the projects table itself. diff --git a/lib/model/query/actees.js b/lib/model/query/actees.js index acaedb40b..cdc5f49f7 100644 --- a/lib/model/query/actees.js +++ b/lib/model/query/actees.js @@ -7,7 +7,7 @@ // including this file, may be copied, modified, propagated, or distributed // except according to the terms contained in the LICENSE file. -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { sql } = require('slonik'); const { Actee } = require('../frames'); const { construct } = require('../../util/util'); diff --git a/package-lock.json b/package-lock.json index 81622a944..ecf62e9f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,8 @@ "commander": "^14.0.2", "config": "^4.1.1", "cookie-parser": "^1.4.6", - "csv-parse": "~4", - "csv-stringify": "~5", + "csv-parse": "^6.1.0", + "csv-stringify": "^6.6.0", "digest-stream": "~2", "entities": "^7.0.0", "express": "~4.21", @@ -25,7 +25,7 @@ "fast-myers-diff": "~3", "htmlparser2": "~3.9", "knex": "~0.21", - "luxon": "~0.3", + "luxon": "^3.7.2", "minio": "8.0.4", "morgan": "^1.10.0", "multer": "^2.0.0", @@ -43,19 +43,19 @@ "semver": "^7.7.3", "slonik": "npm:@getodk/slonik@23.6.2-4", "tmp-promise": "~3", - "uuid": "^11.1.0", + "uuid": "^13.0.0", "yauzl": "^3.2.0" }, "devDependencies": { - "@playwright/test": "^1.52.0", - "@redocly/cli": "^2.8.0", - "@sinonjs/fake-timers": "^14.0.0", + "@playwright/test": "^1.57.0", + "@redocly/cli": "^2.12.2", + "@sinonjs/fake-timers": "^15.0.0", "app-root-path": "~3", "eslint": "^8.57.1", "eslint-config-airbnb-base": "~15", "eslint-plugin-import": "^2.32.0", "eslint-plugin-no-only-tests": "^3.3.0", - "fetch-cookie": "^2.2.0", + "fetch-cookie": "^3.1.0", "http-proxy-middleware": "^2.0.9", "jsonschema": "^1.5.0", "lodash": "^4.17.21", @@ -2009,13 +2009,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", - "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.56.1" + "playwright": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -2332,16 +2332,16 @@ "license": "BSD-3-Clause" }, "node_modules/@redocly/ajv": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.3.tgz", - "integrity": "sha512-4P3iZse91TkBiY+Dx5DUgxQ9GXkVJf++cmI0MOyLDxV9b5MUBI4II6ES8zA5JCbO72nKAJxWrw4PUPW+YP3ZDQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js-replace": "^1.0.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -2356,9 +2356,9 @@ "license": "MIT" }, "node_modules/@redocly/cli": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.8.0.tgz", - "integrity": "sha512-Q0/IF0V5amwIdRei/pAA/bMqXErfuWcBOG1KkKoJs9fxDTmbb54Z1qazBhBo5e6U04Sz4GjHOsNF5jR/kByipw==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.12.2.tgz", + "integrity": "sha512-2fQ1f0xTRHJ9LF/qC58qxVolJwkljL0fDerRuVHnSMgQNqNN11LPe+aqzeENxEQTlqdpH4Pz4WbORLS0gVqLJg==", "dev": true, "license": "MIT", "dependencies": { @@ -2366,8 +2366,8 @@ "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-trace-node": "2.0.1", "@opentelemetry/semantic-conventions": "1.34.0", - "@redocly/openapi-core": "2.8.0", - "@redocly/respect-core": "2.8.0", + "@redocly/openapi-core": "2.12.2", + "@redocly/respect-core": "2.12.2", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -2564,9 +2564,9 @@ } }, "node_modules/@redocly/config": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.31.0.tgz", - "integrity": "sha512-KPm2v//zj7qdGvClX0YqRNLQ9K7loVJWFEIceNxJIYPXP4hrhNvOLwjmxIkdkai0SdqYqogR2yjM/MjF9/AGdQ==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.40.0.tgz", + "integrity": "sha512-MZQZs7QEGnue3rVN9Q9QvDbcGjesxbpKXUvDeckS69R1xjtgsnT9B39VA25zmwSJtgUeA9ST+sMf9GxIqixNbw==", "dev": true, "license": "MIT", "dependencies": { @@ -2574,15 +2574,15 @@ } }, "node_modules/@redocly/openapi-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.8.0.tgz", - "integrity": "sha512-DynoBVRk47TanYWp5E8gTPuvC/n18Jq+CtbESLlq7i6WE4iBtxL1hd+dgkn8z7aZRGpb1eMqBR+QNL8gMVIxBw==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.12.2.tgz", + "integrity": "sha512-UisEJGpGJWrX0UNO1cWDNcC3U2DSMPGAvrRmBz93j5ABo8DwbqgrSTIVaqp6AKqCD4+++WE7VhvSFSztVGU2hg==", "dev": true, "license": "MIT", "dependencies": { - "@redocly/ajv": "^8.11.2", - "@redocly/config": "^0.31.0", - "ajv-formats": "^2.1.1", + "@redocly/ajv": "^8.17.1", + "@redocly/config": "^0.40.0", + "ajv-formats": "^3.0.1", "colorette": "^1.2.0", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", @@ -2609,16 +2609,16 @@ } }, "node_modules/@redocly/respect-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.8.0.tgz", - "integrity": "sha512-s1fd1WR9WcZk7j42t+wqSJQxb5wMUBHTtCGJtWP6UVDWJPwWaZTExesKRLvrCBfSaKvulpCsAzmETM5/XukoDA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.12.2.tgz", + "integrity": "sha512-CxZVyI/wc691tn81xizYoIOTQ1ofbpE0RNeUR0OJSRc4Rk6lO8xCxja9exZpNs383EFEk7IMaf2QScn6yQop+A==", "dev": true, "license": "MIT", "dependencies": { "@faker-js/faker": "^7.6.0", "@noble/hashes": "^1.8.0", - "@redocly/ajv": "8.11.2", - "@redocly/openapi-core": "2.8.0", + "@redocly/ajv": "8.17.1", + "@redocly/openapi-core": "2.12.2", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "json-pointer": "^0.6.2", @@ -2631,23 +2631,6 @@ "npm": ">=10" } }, - "node_modules/@redocly/respect-core/node_modules/@redocly/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js-replace": "^1.0.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@redocly/respect-core/node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -2655,13 +2638,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@redocly/respect-core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2791,9 +2767,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-14.0.0.tgz", - "integrity": "sha512-QfoXRaUTjMVVn/ZbnD4LS3TPtqOkOdKIYCKldIVPnuClcwRKat6LI2mRZ2s5qiBfO6Fy03An35dSls/2/FEc0Q==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.0.0.tgz", + "integrity": "sha512-dlUB2oL+hDIYkIq/OWFBDhQAuU6kDey3eeMiYpVb7UXHhkMq/r1HloKXAbJwJZpYWkFWsydLjMqDpueMUEOjXQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3037,9 +3013,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4858,15 +4834,16 @@ "license": "MIT" }, "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", + "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==", "license": "MIT" }, "node_modules/csv-stringify": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", - "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.6.0.tgz", + "integrity": "sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==", + "license": "MIT" }, "node_modules/culvert": { "version": "0.1.2", @@ -6422,14 +6399,14 @@ "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==" }, "node_modules/fetch-cookie": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-2.2.0.tgz", - "integrity": "sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.1.0.tgz", + "integrity": "sha512-s/XhhreJpqH0ftkGVcQt8JE9bqk+zRn4jF5mPJXWZeQMCI5odV9K+wEWYbnzFPHgQZlvPSMjS4n4yawWE8RINw==", "dev": true, "license": "Unlicense", "dependencies": { "set-cookie-parser": "^2.4.8", - "tough-cookie": "^4.0.0" + "tough-cookie": "^5.0.0" } }, "node_modules/file-entry-cache": { @@ -9314,11 +9291,12 @@ "license": "MIT" }, "node_modules/luxon": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-0.3.1.tgz", - "integrity": "sha512-8aiFrZ/mBrYTiC7tCOK0Je5smsf0/zZae6reikl4Thlg4P9aun+ZFXQzBRWJ/6ZKTaFBYfhXZ9+VdNlK0XbbjQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/make-dir": { @@ -11618,13 +11596,13 @@ } }, "node_modules/playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.56.1" + "playwright-core": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -11637,9 +11615,9 @@ } }, "node_modules/playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12219,19 +12197,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -12278,13 +12243,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14510,6 +14468,26 @@ "node": ">=8" } }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -14610,29 +14588,16 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "node": ">=16" } }, "node_modules/tr46": { @@ -15038,30 +15003,12 @@ "punycode": "^2.1.0" } }, - "node_modules/uri-js-replace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz", - "integrity": "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==", - "dev": true, - "license": "MIT" - }, "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", @@ -15118,16 +15065,16 @@ } }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/uuid-parse": { @@ -16907,12 +16854,12 @@ "optional": true }, "@playwright/test": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", - "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "dev": true, "requires": { - "playwright": "1.56.1" + "playwright": "1.57.0" } }, "@pm2/agent": { @@ -17164,15 +17111,15 @@ "dev": true }, "@redocly/ajv": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.3.tgz", - "integrity": "sha512-4P3iZse91TkBiY+Dx5DUgxQ9GXkVJf++cmI0MOyLDxV9b5MUBI4II6ES8zA5JCbO72nKAJxWrw4PUPW+YP3ZDQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js-replace": "^1.0.1" + "require-from-string": "^2.0.2" }, "dependencies": { "json-schema-traverse": { @@ -17184,17 +17131,17 @@ } }, "@redocly/cli": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.8.0.tgz", - "integrity": "sha512-Q0/IF0V5amwIdRei/pAA/bMqXErfuWcBOG1KkKoJs9fxDTmbb54Z1qazBhBo5e6U04Sz4GjHOsNF5jR/kByipw==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.12.2.tgz", + "integrity": "sha512-2fQ1f0xTRHJ9LF/qC58qxVolJwkljL0fDerRuVHnSMgQNqNN11LPe+aqzeENxEQTlqdpH4Pz4WbORLS0gVqLJg==", "dev": true, "requires": { "@opentelemetry/exporter-trace-otlp-http": "0.202.0", "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-trace-node": "2.0.1", "@opentelemetry/semantic-conventions": "1.34.0", - "@redocly/openapi-core": "2.8.0", - "@redocly/respect-core": "2.8.0", + "@redocly/openapi-core": "2.12.2", + "@redocly/respect-core": "2.12.2", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -17318,23 +17265,23 @@ } }, "@redocly/config": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.31.0.tgz", - "integrity": "sha512-KPm2v//zj7qdGvClX0YqRNLQ9K7loVJWFEIceNxJIYPXP4hrhNvOLwjmxIkdkai0SdqYqogR2yjM/MjF9/AGdQ==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.40.0.tgz", + "integrity": "sha512-MZQZs7QEGnue3rVN9Q9QvDbcGjesxbpKXUvDeckS69R1xjtgsnT9B39VA25zmwSJtgUeA9ST+sMf9GxIqixNbw==", "dev": true, "requires": { "json-schema-to-ts": "2.7.2" } }, "@redocly/openapi-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.8.0.tgz", - "integrity": "sha512-DynoBVRk47TanYWp5E8gTPuvC/n18Jq+CtbESLlq7i6WE4iBtxL1hd+dgkn8z7aZRGpb1eMqBR+QNL8gMVIxBw==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.12.2.tgz", + "integrity": "sha512-UisEJGpGJWrX0UNO1cWDNcC3U2DSMPGAvrRmBz93j5ABo8DwbqgrSTIVaqp6AKqCD4+++WE7VhvSFSztVGU2hg==", "dev": true, "requires": { - "@redocly/ajv": "^8.11.2", - "@redocly/config": "^0.31.0", - "ajv-formats": "^2.1.1", + "@redocly/ajv": "^8.17.1", + "@redocly/config": "^0.40.0", + "ajv-formats": "^3.0.1", "colorette": "^1.2.0", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", @@ -17352,15 +17299,15 @@ } }, "@redocly/respect-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.8.0.tgz", - "integrity": "sha512-s1fd1WR9WcZk7j42t+wqSJQxb5wMUBHTtCGJtWP6UVDWJPwWaZTExesKRLvrCBfSaKvulpCsAzmETM5/XukoDA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.12.2.tgz", + "integrity": "sha512-CxZVyI/wc691tn81xizYoIOTQ1ofbpE0RNeUR0OJSRc4Rk6lO8xCxja9exZpNs383EFEk7IMaf2QScn6yQop+A==", "dev": true, "requires": { "@faker-js/faker": "^7.6.0", "@noble/hashes": "^1.8.0", - "@redocly/ajv": "8.11.2", - "@redocly/openapi-core": "2.8.0", + "@redocly/ajv": "8.17.1", + "@redocly/openapi-core": "2.12.2", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "json-pointer": "^0.6.2", @@ -17369,29 +17316,11 @@ "outdent": "^0.8.0" }, "dependencies": { - "@redocly/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js-replace": "^1.0.1" - } - }, "colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true } } }, @@ -17489,9 +17418,9 @@ } }, "@sinonjs/fake-timers": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-14.0.0.tgz", - "integrity": "sha512-QfoXRaUTjMVVn/ZbnD4LS3TPtqOkOdKIYCKldIVPnuClcwRKat6LI2mRZ2s5qiBfO6Fy03An35dSls/2/FEc0Q==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.0.0.tgz", + "integrity": "sha512-dlUB2oL+hDIYkIq/OWFBDhQAuU6kDey3eeMiYpVb7UXHhkMq/r1HloKXAbJwJZpYWkFWsydLjMqDpueMUEOjXQ==", "dev": true, "requires": { "@sinonjs/commons": "^3.0.1" @@ -17686,9 +17615,9 @@ } }, "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "requires": { "ajv": "^8.0.0" @@ -18925,14 +18854,14 @@ "dev": true }, "csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", + "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==" }, "csv-stringify": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", - "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.6.0.tgz", + "integrity": "sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==" }, "culvert": { "version": "0.1.2", @@ -20063,13 +19992,13 @@ "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==" }, "fetch-cookie": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-2.2.0.tgz", - "integrity": "sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.1.0.tgz", + "integrity": "sha512-s/XhhreJpqH0ftkGVcQt8JE9bqk+zRn4jF5mPJXWZeQMCI5odV9K+wEWYbnzFPHgQZlvPSMjS4n4yawWE8RINw==", "dev": true, "requires": { "set-cookie-parser": "^2.4.8", - "tough-cookie": "^4.0.0" + "tough-cookie": "^5.0.0" } }, "file-entry-cache": { @@ -22096,9 +22025,9 @@ "dev": true }, "luxon": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-0.3.1.tgz", - "integrity": "sha512-8aiFrZ/mBrYTiC7tCOK0Je5smsf0/zZae6reikl4Thlg4P9aun+ZFXQzBRWJ/6ZKTaFBYfhXZ9+VdNlK0XbbjQ==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" }, "make-dir": { "version": "3.1.0", @@ -23732,19 +23661,19 @@ } }, "playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, "requires": { "fsevents": "2.3.2", - "playwright-core": "1.56.1" + "playwright-core": "1.57.0" } }, "playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "dev": true }, "pluralize": { @@ -24151,15 +24080,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "requires": { - "punycode": "^2.3.1" - } - }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -24190,12 +24110,6 @@ "strict-uri-encode": "^2.0.0" } }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -25807,6 +25721,21 @@ "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" }, + "tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "requires": { + "tldts-core": "^6.1.86" + } + }, + "tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true + }, "tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -25883,23 +25812,12 @@ } }, "tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } + "tldts": "^6.1.32" } }, "tr46": { @@ -26191,27 +26109,11 @@ "punycode": "^2.1.0" } }, - "uri-js-replace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz", - "integrity": "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==", - "dev": true - }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", @@ -26258,9 +26160,9 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==" + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==" }, "uuid-parse": { "version": "1.1.0", diff --git a/package.json b/package.json index 372c220cb..1b5301e51 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "commander": "^14.0.2", "config": "^4.1.1", "cookie-parser": "^1.4.6", - "csv-parse": "~4", - "csv-stringify": "~5", + "csv-parse": "^6.1.0", + "csv-stringify": "^6.6.0", "digest-stream": "~2", "entities": "^7.0.0", "express": "~4.21", @@ -26,7 +26,7 @@ "fast-myers-diff": "~3", "htmlparser2": "~3.9", "knex": "~0.21", - "luxon": "~0.3", + "luxon": "^3.7.2", "minio": "8.0.4", "morgan": "^1.10.0", "multer": "^2.0.0", @@ -44,19 +44,19 @@ "semver": "^7.7.3", "slonik": "npm:@getodk/slonik@23.6.2-4", "tmp-promise": "~3", - "uuid": "^11.1.0", + "uuid": "^13.0.0", "yauzl": "^3.2.0" }, "devDependencies": { - "@playwright/test": "^1.52.0", - "@redocly/cli": "^2.8.0", - "@sinonjs/fake-timers": "^14.0.0", + "@playwright/test": "^1.57.0", + "@redocly/cli": "^2.12.2", + "@sinonjs/fake-timers": "^15.0.0", "app-root-path": "~3", "eslint": "^8.57.1", "eslint-config-airbnb-base": "~15", "eslint-plugin-import": "^2.32.0", "eslint-plugin-no-only-tests": "^3.3.0", - "fetch-cookie": "^2.2.0", + "fetch-cookie": "^3.1.0", "http-proxy-middleware": "^2.0.9", "jsonschema": "^1.5.0", "lodash": "^4.17.21", diff --git a/test/e2e/soak/index.js b/test/e2e/soak/index.js index f94347efe..f6836f176 100644 --- a/test/e2e/soak/index.js +++ b/test/e2e/soak/index.js @@ -9,7 +9,7 @@ const fs = require('node:fs'); const _ = require('lodash'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { program } = require('commander'); const SUITE_NAME = 'test/e2e/soak'; diff --git a/test/integration/api/audits.js b/test/integration/api/audits.js index 5b8e0bb71..d31f2632d 100644 --- a/test/integration/api/audits.js +++ b/test/integration/api/audits.js @@ -1,6 +1,6 @@ const appRoot = require('app-root-path'); const should = require('should'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { sql } = require('slonik'); const { plain } = require('../../util/util'); const { testService } = require('../setup'); diff --git a/test/integration/api/entities-from-repeats.js b/test/integration/api/entities-from-repeats.js index 01db2db82..2c3780629 100644 --- a/test/integration/api/entities-from-repeats.js +++ b/test/integration/api/entities-from-repeats.js @@ -568,7 +568,7 @@ describe('Entities from Repeats', () => { // First entity in this submission is an update with no prior version so // it will be put in the backlog - const uuid = require('uuid').v4; + const { v4: uuid } = require('uuid'); const branchId = uuid(); await asAlice.post('/v1/projects/1/forms/repeatEntityTrees/submissions') .send(testData.instances.repeatEntityTrees.two diff --git a/test/integration/api/offline-entities.js b/test/integration/api/offline-entities.js index dc6cf1362..7e2c1e893 100644 --- a/test/integration/api/offline-entities.js +++ b/test/integration/api/offline-entities.js @@ -1,7 +1,7 @@ const appRoot = require('app-root-path'); const { testService, testServiceFullTrx } = require('../setup'); const testData = require('../../data/xml'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const should = require('should'); const { sql } = require('slonik'); diff --git a/test/integration/api/submissions.js b/test/integration/api/submissions.js index 586fbe7c8..f945089df 100644 --- a/test/integration/api/submissions.js +++ b/test/integration/api/submissions.js @@ -1,6 +1,6 @@ const appRoot = require('app-root-path'); const should = require('should'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { sql } = require('slonik'); const { createReadStream, readFileSync } = require('fs'); const { testService, testServiceFullTrx } = require('../setup'); diff --git a/test/integration/other/analytics-queries.js b/test/integration/other/analytics-queries.js index d006c9ccf..77e8f39df 100644 --- a/test/integration/other/analytics-queries.js +++ b/test/integration/other/analytics-queries.js @@ -2,7 +2,7 @@ const appRoot = require('app-root-path'); const { sql } = require('slonik'); const { testService, testContainer } = require('../setup'); const { createReadStream, readFileSync } = require('fs'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const { promisify } = require('util'); const testData = require('../../data/xml'); diff --git a/test/integration/other/knex-migrations.js b/test/integration/other/knex-migrations.js index fe50e4c4d..248479fb7 100644 --- a/test/integration/other/knex-migrations.js +++ b/test/integration/other/knex-migrations.js @@ -8,7 +8,7 @@ */ const appRoot = require('app-root-path'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const config = require('config'); const { testContainerFullTrx, testServiceFullTrx } = require('../setup'); const { sql } = require('slonik'); diff --git a/test/unit/data/briefcase.js b/test/unit/data/briefcase.js index 3b2e7351d..c41c3ecd9 100644 --- a/test/unit/data/briefcase.js +++ b/test/unit/data/briefcase.js @@ -1,5 +1,5 @@ const appRoot = require('app-root-path'); -const uuid = require('uuid').v4; +const { v4: uuid } = require('uuid'); const streamTest = require('streamtest').v2; const testData = require(appRoot + '/test/data/xml'); const { zipStreamToFiles } = require(appRoot + '/test/util/zip'); diff --git a/test/util/authenticate-user.js b/test/util/authenticate-user.js index 3c45b281b..96d536874 100644 --- a/test/util/authenticate-user.js +++ b/test/util/authenticate-user.js @@ -1,7 +1,7 @@ // Allow main functionality to stay at top of file: /* eslint-disable no-use-before-define */ -const makeFetchCookie = require('fetch-cookie'); +const { default: makeFetchCookie } = require('fetch-cookie'); module.exports = async (service, user, includeCsrf) => { if (!user) throw new Error('Did you forget the **service** arg?');