diff --git a/.changeset/five-hounds-wash.md b/.changeset/five-hounds-wash.md new file mode 100644 index 000000000..9128cc306 --- /dev/null +++ b/.changeset/five-hounds-wash.md @@ -0,0 +1,61 @@ +--- +'@flatfile/plugin-webhook-event-forwarder': minor +'@flatfile/plugin-foreign-db-extractor': minor +'@flatfile/plugin-delimiter-extractor': minor +'@flatfile/plugin-convert-sql-ddl': minor +'@flatfile/plugin-connect-via-merge': minor +'@flatfile/util-response-rejection': minor +'@flatfile/plugin-export-workbook': minor +'@flatfile/plugin-space-configure': minor +'@flatfile/bundler-config-rollup': minor +'@flatfile/plugin-graphql-schema': minor +'@flatfile/plugin-json-extractor': minor +'@flatfile/plugin-convert-openapi-schema': minor +'@flatfile/plugin-webhook-egress': minor +'@flatfile/plugin-xlsx-extractor': minor +'@flatfile/plugin-dxp-configure': minor +'@flatfile/plugin-pdf-extractor': minor +'@flatfile/plugin-psv-extractor': minor +'@flatfile/plugin-tsv-extractor': minor +'@flatfile/plugin-xml-extractor': minor +'@flatfile/plugin-zip-extractor': minor +'@flatfile/bundler-config-tsup': minor +'@flatfile/common-plugin-utils': minor +'@flatfile/plugin-constraints': minor +'@flatfile/plugin-job-handler': minor +'@flatfile/plugin-convert-json-schema': minor +'@flatfile/plugin-record-hook': minor +'@flatfile/plugin-view-mapped': minor +'@flatfile/plugin-convert-yaml-schema': minor +'@flatfile/plugin-convert-what3words': minor +'@flatfile/plugin-export-pivot-table': minor +'@flatfile/plugin-extract-html-table': minor +'@flatfile/plugin-import-llm-records': minor +'@flatfile/util-fetch-schema': minor +'@flatfile/plugin-convert-translate': minor +'@flatfile/util-file-buffer': minor +'@flatfile/plugin-convert-currency': minor +'@flatfile/plugin-enrich-sentiment': minor +'@flatfile/plugin-enrich-summarize': minor +'@flatfile/plugin-extract-markdown': minor +'@flatfile/plugin-autocast': minor +'@flatfile/plugin-validate-boolean': minor +'@flatfile/plugin-automap': minor +'@flatfile/plugin-rollout': minor +'@flatfile/util-extractor': minor +'@flatfile/plugin-validate-number': minor +'@flatfile/plugin-validate-string': minor +'@flatfile/plugin-enrich-geocode': minor +'@flatfile/plugin-dedupe': minor +'@flatfile/plugin-validate-email': minor +'@flatfile/plugin-validate-phone': minor +'@flatfile/utils-testing': minor +'@flatfile/plugin-validate-date': minor +'@flatfile/plugin-validate-isbn': minor +'@flatfile/plugin-import-faker': minor +'@flatfile/util-common': minor +'@flatfile/plugin-enrich-gpx': minor +'@flatfile/plugin-import-rss': minor +--- + +The release swaps the package's bundler to tsup. diff --git a/bundlers/rollup-config/CHANGELOG.md b/bundlers/rollup-config/CHANGELOG.md index a0d1dc3dc..cca7e4e35 100644 --- a/bundlers/rollup-config/CHANGELOG.md +++ b/bundlers/rollup-config/CHANGELOG.md @@ -1,4 +1,4 @@ -# @flatfile/rollup-config +# @flatfile/bundler-config-rollup ## 0.1.1 diff --git a/bundlers/rollup-config/index.mjs b/bundlers/rollup-config/index.mjs index 15bb75bd4..1e7ef2682 100644 --- a/bundlers/rollup-config/index.mjs +++ b/bundlers/rollup-config/index.mjs @@ -35,30 +35,36 @@ function commonPlugins(browser, umd = false) { export function buildConfig({ external = [], + includeNode = true, includeBrowser = true, + includeDefinition = true, includeUmd = false, umdConfig = { name: undefined, external: [] }, }) { return [ // Node.js build - { - input: 'src/index.ts', - output: [ - { - exports: 'auto', - file: 'dist/index.cjs', - format: 'cjs', - }, - { - exports: 'auto', - file: 'dist/index.mjs', - sourcemap: false, - format: 'es', - }, - ], - plugins: commonPlugins(false), - external, - }, + ...(includeNode + ? [ + { + input: 'src/index.ts', + output: [ + { + exports: 'auto', + file: 'dist/index.cjs', + format: 'cjs', + }, + { + exports: 'auto', + file: 'dist/index.js', + sourcemap: false, + format: 'es', + }, + ], + plugins: commonPlugins(false), + external, + }, + ] + : []), // Browser build ...(includeBrowser ? [ @@ -72,7 +78,7 @@ export function buildConfig({ }, { exports: 'auto', - file: 'dist/index.browser.mjs', + file: 'dist/index.browser.js', sourcemap: false, format: 'es', }, @@ -83,11 +89,15 @@ export function buildConfig({ ] : []), // Definition file - { - input: 'src/index.ts', - output: [{ file: 'dist/index.d.ts', format: 'es' }], - plugins: [dts()], - }, + ...(includeDefinition + ? [ + { + input: 'src/index.ts', + output: [{ file: 'dist/index.d.ts', format: 'es' }], + plugins: [dts()], + }, + ] + : []), // UMD build ...(includeUmd ? [ @@ -95,7 +105,7 @@ export function buildConfig({ input: 'src/index.ts', output: [ { - file: 'dist/index.js', + file: 'dist/index.umd.js', format: 'umd', name: umdConfig.name, }, diff --git a/bundlers/rollup-config/package.json b/bundlers/rollup-config/package.json index b5d9b738d..4824e7ca6 100644 --- a/bundlers/rollup-config/package.json +++ b/bundlers/rollup-config/package.json @@ -1,5 +1,5 @@ { - "name": "@flatfile/rollup-config", + "name": "@flatfile/bundler-config-rollup", "version": "0.1.1", "description": "", "private": true, diff --git a/bundlers/tsup-config/index.mjs b/bundlers/tsup-config/index.mjs new file mode 100644 index 000000000..ebbb6e17d --- /dev/null +++ b/bundlers/tsup-config/index.mjs @@ -0,0 +1,52 @@ +import dotenv from 'dotenv' +import { defineConfig as tsupDefineConfig } from 'tsup' + +dotenv.config() + +export function defineConfig({ includeBrowser = true, includeNode = true }) { + const minify = process.env.NODE_ENV === 'production' + if (!minify) { + console.log('Not in production mode - skipping minification') + } + + const EXTENSION_MAP = { + browser: { + cjs: '.browser.cjs', + default: '.browser.js', + }, + node: { + cjs: '.cjs', + default: '.js', + }, + } + const getOutExtension = + (platform) => + ({ format }) => ({ + js: EXTENSION_MAP[platform][format] || EXTENSION_MAP[platform].default, + }) + + const createConfig = (platform) => ({ + name: platform, + platform, + minify, + entryPoints: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + outDir: 'dist', + clean: true, + sourcemap: true, + treeshake: true, + splitting: true, + globalName: 'FlatFileJavaScript', + outExtension: getOutExtension(platform), + }) + + const nodeConfig = createConfig('node') + const browserConfig = createConfig('browser') + + const configs = [] + if (includeNode) configs.push(nodeConfig) + if (includeBrowser) configs.push(browserConfig) + + return tsupDefineConfig(configs) +} diff --git a/bundlers/tsup-config/package.json b/bundlers/tsup-config/package.json new file mode 100644 index 000000000..159102c70 --- /dev/null +++ b/bundlers/tsup-config/package.json @@ -0,0 +1,13 @@ +{ + "name": "@flatfile/bundler-config-tsup", + "version": "0.0.0", + "description": "", + "private": true, + "main": "index.mjs", + "scripts": {}, + "author": "Flatfile, Inc.", + "license": "ISC", + "dependencies": { + "tsup": "^8.3.0" + } +} diff --git a/convert/currency/jest.config.js b/convert/currency/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/convert/currency/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/convert/currency/package.json b/convert/currency/package.json index ac9cc4344..a77b57304 100644 --- a/convert/currency/package.json +++ b/convert/currency/package.json @@ -1,35 +1,50 @@ { "name": "@flatfile/plugin-convert-currency", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/convert/currency", "description": "A Flatfile plugin for currency conversion using Open Exchange Rates API", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "registryMetadata": { + "category": "convert" + }, + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" - }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -49,11 +64,11 @@ "@flatfile/listener": "^1.0.1" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "convert/currency" }, "browserslist": [ diff --git a/convert/currency/rollup.config.mjs b/convert/currency/rollup.config.mjs deleted file mode 100644 index 1e95e60a0..000000000 --- a/convert/currency/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config'; - -const config = buildConfig({}); - -export default config; \ No newline at end of file diff --git a/convert/currency/src/convert.currency.plugin.spec.ts b/convert/currency/src/convert.currency.plugin.spec.ts index 837dbd80c..e0cfcb80d 100644 --- a/convert/currency/src/convert.currency.plugin.spec.ts +++ b/convert/currency/src/convert.currency.plugin.spec.ts @@ -1,112 +1,135 @@ -import { validateAmount, validateDate, convertCurrency, calculateExchangeRate, fetchExchangeRates } from './convert.currency.plugin'; -import fetch from 'cross-fetch'; - -jest.mock('cross-fetch'); +import fetch from 'cross-fetch' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { + calculateExchangeRate, + convertCurrency, + fetchExchangeRates, + validateAmount, + validateDate, +} from './convert.currency.plugin' + +vi.mock('cross-fetch') describe('Currency Converter Plugin Utility Functions', () => { describe('validateAmount', () => { it('should return a valid number for correct input', () => { - expect(validateAmount(100)).toEqual({ value: 100 }); - expect(validateAmount('100')).toEqual({ value: 100 }); - }); + expect(validateAmount(100)).toEqual({ value: 100 }) + expect(validateAmount('100')).toEqual({ value: 100 }) + }) it('should return an error for invalid input', () => { - expect(validateAmount('')).toEqual({ error: 'Amount is required' }); - expect(validateAmount('abc')).toEqual({ error: 'Amount must be a valid number' }); - }); - }); + expect(validateAmount('')).toEqual({ error: 'Amount is required' }) + expect(validateAmount('abc')).toEqual({ + error: 'Amount must be a valid number', + }) + }) + }) describe('validateDate', () => { it('should return a valid date for correct input', () => { - expect(validateDate('2023-05-01')).toEqual({ value: '2023-05-01' }); - }); + expect(validateDate('2023-05-01')).toEqual({ value: '2023-05-01' }) + }) - it('should return today\'s date if no date is provided', () => { - const today = new Date().toISOString().split('T')[0]; - expect(validateDate('')).toEqual({ value: today }); - }); + it("should return today's date if no date is provided", () => { + const today = new Date().toISOString().split('T')[0] + expect(validateDate('')).toEqual({ value: today }) + }) it('should return an error for invalid date format', () => { - expect(validateDate('05-01-2023')).toEqual({ error: 'Invalid date format. Use YYYY-MM-DD' }); - }); - }); + expect(validateDate('05-01-2023')).toEqual({ + error: 'Invalid date format. Use YYYY-MM-DD', + }) + }) + }) describe('convertCurrency', () => { it('should correctly convert currency', () => { - expect(convertCurrency(100, 1, 0.85)).toBeCloseTo(85, 4); - expect(convertCurrency(100, 0.75, 0.85)).toBeCloseTo(113.3333, 4); - }); - }); + expect(convertCurrency(100, 1, 0.85)).toBeCloseTo(85, 4) + expect(convertCurrency(100, 0.75, 0.85)).toBeCloseTo(113.3333, 4) + }) + }) describe('calculateExchangeRate', () => { it('should correctly calculate exchange rate', () => { - expect(calculateExchangeRate(1, 0.85)).toBeCloseTo(0.85, 6); - expect(calculateExchangeRate(0.75, 0.85)).toBeCloseTo(1.133333, 6); - }); - }); + expect(calculateExchangeRate(1, 0.85)).toBeCloseTo(0.85, 6) + expect(calculateExchangeRate(0.75, 0.85)).toBeCloseTo(1.133333, 6) + }) + }) describe('fetchExchangeRates', () => { - const mockApiKey = 'test-api-key'; - const mockSourceCurrency = 'USD'; - const mockTargetCurrency = 'EUR'; + const mockApiKey = 'test-api-key' + const mockSourceCurrency = 'USD' + const mockTargetCurrency = 'EUR' beforeEach(() => { - (fetch as jest.MockedFunction).mockClear(); - }); + vi.mocked(fetch).mockClear() + }) it('should fetch latest exchange rates when no date is provided', async () => { const mockResponse = { ok: true, - json: jest.fn().mockResolvedValue({ + json: vi.fn().mockResolvedValue({ rates: { USD: 1, EUR: 0.85 }, base: 'USD', timestamp: 1620000000, }), - }; - (fetch as jest.MockedFunction).mockResolvedValue(mockResponse as any); + } + vi.mocked(fetch).mockResolvedValue(mockResponse as any) - const result = await fetchExchangeRates(mockApiKey, mockSourceCurrency, mockTargetCurrency); + const result = await fetchExchangeRates( + mockApiKey, + mockSourceCurrency, + mockTargetCurrency + ) - expect(fetch).toHaveBeenCalledWith(expect.stringContaining('latest.json')); + expect(fetch).toHaveBeenCalledWith(expect.stringContaining('latest.json')) expect(result).toEqual({ rates: { USD: 1, EUR: 0.85 }, base: 'USD', timestamp: 1620000000, - }); - }); + }) + }) it('should fetch historical exchange rates when a date is provided', async () => { - const mockDate = '2023-05-01'; + const mockDate = '2023-05-01' const mockResponse = { ok: true, - json: jest.fn().mockResolvedValue({ + json: vi.fn().mockResolvedValue({ rates: { USD: 1, EUR: 0.83 }, base: 'USD', timestamp: 1682899200, }), - }; - (fetch as jest.MockedFunction).mockResolvedValue(mockResponse as any); - - const result = await fetchExchangeRates(mockApiKey, mockSourceCurrency, mockTargetCurrency, mockDate); - - expect(fetch).toHaveBeenCalledWith(expect.stringContaining('historical/2023-05-01.json')); + } + vi.mocked(fetch).mockResolvedValue(mockResponse as any) + + const result = await fetchExchangeRates( + mockApiKey, + mockSourceCurrency, + mockTargetCurrency, + mockDate + ) + + expect(fetch).toHaveBeenCalledWith( + expect.stringContaining('historical/2023-05-01.json') + ) expect(result).toEqual({ rates: { USD: 1, EUR: 0.83 }, base: 'USD', timestamp: 1682899200, - }); - }); + }) + }) it('should throw an error when the API request fails', async () => { const mockResponse = { ok: false, status: 400, statusText: 'Bad Request', - }; - (fetch as jest.MockedFunction).mockResolvedValue(mockResponse as any); - - await expect(fetchExchangeRates(mockApiKey, mockSourceCurrency, mockTargetCurrency)) - .rejects.toThrow('Status: 400 Message: Bad Request'); - }); - }); -}); + } + vi.mocked(fetch).mockResolvedValue(mockResponse as any) + + await expect( + fetchExchangeRates(mockApiKey, mockSourceCurrency, mockTargetCurrency) + ).rejects.toThrow('Status: 400 Message: Bad Request') + }) + }) +}) diff --git a/convert/currency/src/convert.currency.plugin.ts b/convert/currency/src/convert.currency.plugin.ts index 5db6bd07e..dfb2a53f6 100644 --- a/convert/currency/src/convert.currency.plugin.ts +++ b/convert/currency/src/convert.currency.plugin.ts @@ -30,7 +30,9 @@ function validateConfig(config: CurrencyConverterConfig): void { throw new Error('Converted amount field is required') } -export function validateAmount(amount: any): { value: number } | { error: string } { +export function validateAmount( + amount: any +): { value: number } | { error: string } { if (!amount) { return { error: 'Amount is required' } } @@ -40,9 +42,11 @@ export function validateAmount(amount: any): { value: number } | { error: string return { value: Number(amount) } } -export function validateDate(date: string): { value: string } | { error: string } { +export function validateDate( + date: string +): { value: string } | { error: string } { if (!date) { - return { value: new Date().toISOString().split('T')[0] } + return { value: new Date().toISOString().split('T')[0]! } } if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) { return { error: 'Invalid date format. Use YYYY-MM-DD' } @@ -73,9 +77,11 @@ export async function fetchExchangeRates( const response = await fetch(fullUrl) if (!response.ok) { - throw new Error(`Status: ${response.status} Message: ${response.statusText}`) + throw new Error( + `Status: ${response.status} Message: ${response.statusText}` + ) } - return await response.json() as ExchangeRateResponse + return (await response.json()) as ExchangeRateResponse } export function convertCurrency( @@ -103,7 +109,7 @@ export function currencyConverterPlugin(config: CurrencyConverterConfig) { async (record: FlatfileRecord, event: FlatfileEvent) => { const apiKey = await event.secrets('OPENEXCHANGERATES_API_KEY') const amountResult = validateAmount(record.get(config.amountField)) - + if ('error' in amountResult) { record.addError(config.amountField, amountResult.error) return record @@ -113,35 +119,55 @@ export function currencyConverterPlugin(config: CurrencyConverterConfig) { let date: string if (config.dateField) { - const dateResult = validateDate(record.get(config.dateField) as string) + const dateResult = validateDate( + record.get(config.dateField) as string + ) if ('error' in dateResult) { record.addError(config.dateField, dateResult.error) return record } date = dateResult.value } else { - date = new Date().toISOString().split('T')[0] + date = new Date().toISOString().split('T')[0]! } try { - const data = await fetchExchangeRates(apiKey, config.sourceCurrency, config.targetCurrency, date) + const data = await fetchExchangeRates( + apiKey, + config.sourceCurrency, + config.targetCurrency, + date + ) const usdToSourceRate = data.rates[config.sourceCurrency] const usdToTargetRate = data.rates[config.targetCurrency] if (!usdToSourceRate) { - record.addError('currency', `Invalid source currency: ${config.sourceCurrency}`) + record.addError( + 'currency', + `Invalid source currency: ${config.sourceCurrency}` + ) } if (!usdToTargetRate) { - record.addError('currency', `Invalid target currency: ${config.targetCurrency}`) + record.addError( + 'currency', + `Invalid target currency: ${config.targetCurrency}` + ) } if (usdToSourceRate && usdToTargetRate) { - const convertedAmount = convertCurrency(amount, usdToSourceRate, usdToTargetRate) + const convertedAmount = convertCurrency( + amount, + usdToSourceRate, + usdToTargetRate + ) record.set(config.convertedAmountField, convertedAmount) if (config.exchangeRateField) { - const exchangeRate = calculateExchangeRate(usdToSourceRate, usdToTargetRate) + const exchangeRate = calculateExchangeRate( + usdToSourceRate, + usdToTargetRate + ) record.set(config.exchangeRateField, exchangeRate) } @@ -157,7 +183,10 @@ export function currencyConverterPlugin(config: CurrencyConverterConfig) { if (error.message.includes('API Error')) { record.addError('general', error.message) } else if (error.message.includes('Failed to fetch')) { - record.addError('general', 'Network error: Unable to reach the API') + record.addError( + 'general', + 'Network error: Unable to reach the API' + ) } else { record.addError('general', `Error: ${error.message}`) } diff --git a/convert/currency/tsup.config.mjs b/convert/currency/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/convert/currency/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/convert/translate/jest.config.js b/convert/translate/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/convert/translate/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/convert/translate/package.json b/convert/translate/package.json index 64478dfca..4e737cdb9 100644 --- a/convert/translate/package.json +++ b/convert/translate/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "convert" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/YourGitHubUsername/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "convert/translate" }, "license": "ISC", @@ -65,6 +73,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/convert/translate/rollup.config.mjs b/convert/translate/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/convert/translate/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/convert/translate/src/convert.translate.plugin.spec.ts b/convert/translate/src/convert.translate.plugin.spec.ts index 504f0116d..c4779180b 100644 --- a/convert/translate/src/convert.translate.plugin.spec.ts +++ b/convert/translate/src/convert.translate.plugin.spec.ts @@ -1,12 +1,16 @@ import { FlatfileListener } from '@flatfile/listener' -import { convertTranslatePlugin, TranslationConfig } from './convert.translate.plugin' import { Translate } from '@google-cloud/translate/build/src/v2' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { + convertTranslatePlugin, + TranslationConfig, +} from './convert.translate.plugin' // Mock the @google-cloud/translate module -jest.mock('@google-cloud/translate/build/src/v2', () => { +vi.mock('@google-cloud/translate/build/src/v2', () => { return { - Translate: jest.fn().mockImplementation(() => ({ - translate: jest.fn().mockResolvedValue([['Hola', 'Mundo']]), + Translate: vi.fn().mockImplementation(() => ({ + translate: vi.fn().mockResolvedValue([['Hola', 'Mundo']]), })), } }) @@ -37,7 +41,7 @@ describe('convertTranslatePlugin', () => { }) it('should add a record hook to the listener', () => { - const useSpy = jest.spyOn(listener, 'use') + const useSpy = vi.spyOn(listener, 'use') convertTranslatePlugin(listener, config) diff --git a/convert/translate/src/convert.translate.plugin.ts b/convert/translate/src/convert.translate.plugin.ts index e83220294..6e7a51ccf 100644 --- a/convert/translate/src/convert.translate.plugin.ts +++ b/convert/translate/src/convert.translate.plugin.ts @@ -1,5 +1,5 @@ -import { recordHook, FlatfileRecord } from '@flatfile/plugin-record-hook' -import { FlatfileListener, FlatfileEvent } from '@flatfile/listener' +import { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import { FlatfileRecord, recordHook } from '@flatfile/plugin-record-hook' import { Translate } from '@google-cloud/translate/build/src/v2' // Configuration options @@ -15,10 +15,10 @@ export interface TranslationConfig { // Initialize the Google Translate client let translate: Translate -export function translateRecord( +export async function translateRecord( record: FlatfileRecord, config: TranslationConfig -): { record: FlatfileRecord; error?: string } { +): Promise<{ record: FlatfileRecord; error?: string }> { try { const textsToTranslate = config.fieldsToTranslate .map((field) => ({ @@ -32,14 +32,14 @@ export function translateRecord( return { record, error: 'No text fields to translate' } } - const translatedTexts = batchTranslateText( + const translatedTexts = await batchTranslateText( textsToTranslate.map((item) => item.text), config.sourceLanguage, config.targetLanguage ) textsToTranslate.forEach((item, index) => { - record.set(item.targetField, translatedTexts[index]) + record.set(item.targetField, translatedTexts[index]!) }) return { record } @@ -68,7 +68,10 @@ export function convertTranslatePlugin( return record } - const { record: updatedRecord, error } = translateRecord(record, config) + const { record: updatedRecord, error } = await translateRecord( + record, + config + ) if (error) { updatedRecord.addError('general', error) diff --git a/convert/translate/tsup.config.mjs b/convert/translate/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/convert/translate/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/convert/what3words/jest.config.js b/convert/what3words/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/convert/what3words/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/convert/what3words/package.json b/convert/what3words/package.json index 06b5b175b..cdc531b13 100644 --- a/convert/what3words/package.json +++ b/convert/what3words/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "convert" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "convert/what3words" }, "license": "ISC", @@ -61,6 +69,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" } } diff --git a/convert/what3words/rollup.config.mjs b/convert/what3words/rollup.config.mjs deleted file mode 100644 index 921ac6b19..000000000 --- a/convert/what3words/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config \ No newline at end of file diff --git a/convert/what3words/tsup.config.mjs b/convert/what3words/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/convert/what3words/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/enrich/geocode/jest.config.js b/enrich/geocode/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/enrich/geocode/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/enrich/geocode/package.json b/enrich/geocode/package.json index 75d96dd21..6f720f042 100644 --- a/enrich/geocode/package.json +++ b/enrich/geocode/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "transform" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "enrich/geocode" }, "license": "ISC", @@ -65,9 +73,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/hooks": "^1.5.0", - "@flatfile/rollup-config": "^0.1.1", - "@types/node": "^22.6.1", - "typescript": "^5.6.2" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/enrich/geocode/rollup.config.mjs b/enrich/geocode/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/enrich/geocode/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/enrich/geocode/src/enrich.geocode.plugin.spec.ts b/enrich/geocode/src/enrich.geocode.plugin.spec.ts index cf4339b7d..34c61cb94 100644 --- a/enrich/geocode/src/enrich.geocode.plugin.spec.ts +++ b/enrich/geocode/src/enrich.geocode.plugin.spec.ts @@ -1,13 +1,14 @@ import fetch from 'cross-fetch' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { performGeocoding } from './enrich.geocode.plugin' -jest.mock('cross-fetch') +vi.mock('cross-fetch') describe('performGeocoding', () => { const apiKey = 'test_api_key' beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) it('should perform forward geocoding successfully', async () => { @@ -26,8 +27,8 @@ describe('performGeocoding', () => { }, ], } - ;(fetch as jest.MockedFunction).mockResolvedValue({ - json: jest.fn().mockResolvedValue(mockResponse), + vi.mocked(fetch).mockResolvedValue({ + json: vi.fn().mockResolvedValue(mockResponse), } as any) const result = await performGeocoding({ address: 'New York' }, apiKey) @@ -60,8 +61,8 @@ describe('performGeocoding', () => { }, ], } - ;(fetch as jest.MockedFunction).mockResolvedValue({ - json: jest.fn().mockResolvedValue(mockResponse), + vi.mocked(fetch).mockResolvedValue({ + json: vi.fn().mockResolvedValue(mockResponse), } as any) const result = await performGeocoding( @@ -86,8 +87,8 @@ describe('performGeocoding', () => { status: 'ZERO_RESULTS', results: [], } - ;(fetch as jest.MockedFunction).mockResolvedValue({ - json: jest.fn().mockResolvedValue(mockResponse), + vi.mocked(fetch).mockResolvedValue({ + json: vi.fn().mockResolvedValue(mockResponse), } as any) const result = await performGeocoding( @@ -102,9 +103,7 @@ describe('performGeocoding', () => { }) it('should handle API errors', async () => { - ;(fetch as jest.MockedFunction).mockRejectedValue( - new Error('API error') - ) + vi.mocked(fetch).mockRejectedValue(new Error('API error')) const result = await performGeocoding({ address: 'New York' }, apiKey) @@ -115,9 +114,7 @@ describe('performGeocoding', () => { }) it('should handle unexpected errors', async () => { - ;(fetch as jest.MockedFunction).mockRejectedValue( - new Error('Network error') - ) + vi.mocked(fetch).mockRejectedValue(new Error('Network error')) const result = await performGeocoding({ address: 'New York' }, apiKey) diff --git a/enrich/geocode/src/enrich.geocode.plugin.ts b/enrich/geocode/src/enrich.geocode.plugin.ts index 797b741a2..9af783c4b 100644 --- a/enrich/geocode/src/enrich.geocode.plugin.ts +++ b/enrich/geocode/src/enrich.geocode.plugin.ts @@ -1,3 +1,6 @@ +import type { FlatfileEvent } from '@flatfile/listener' +import type { FlatfileRecord } from '@flatfile/plugin-record-hook' + import { bulkRecordHook } from '@flatfile/plugin-record-hook' import fetch from 'cross-fetch' @@ -96,36 +99,39 @@ export async function performGeocoding( } export function enrichGeocode(config: GeocodingConfig) { - return bulkRecordHook(config.sheetSlug, async (records, event) => { - const googleMapsApiKey = - process.env.GOOGLE_MAPS_API_KEY || - (await event.secrets('GOOGLE_MAPS_API_KEY')) - for (const record of records) { - const address = record.get(config.addressField) as string - const latitude = record.get(config.latitudeField) as number - const longitude = record.get(config.longitudeField) as number + return bulkRecordHook( + config.sheetSlug, + async (records: FlatfileRecord[], event: FlatfileEvent) => { + const googleMapsApiKey = + process.env.GOOGLE_MAPS_API_KEY || + (await event.secrets('GOOGLE_MAPS_API_KEY')) + for (const record of records) { + const address = record.get(config.addressField) as string + const latitude = record.get(config.latitudeField) as number + const longitude = record.get(config.longitudeField) as number - if (!config.autoGeocode) { - return record - } + if (!config.autoGeocode) { + return record + } - const result = await performGeocoding( - { address, latitude, longitude }, - googleMapsApiKey - ) + const result = await performGeocoding( + { address, latitude, longitude }, + googleMapsApiKey + ) - if ('message' in result) { - record.addError(result.field, result.message) - } else { - record.set(config.latitudeField, result.latitude) - record.set(config.longitudeField, result.longitude) - record.set('formatted_address', result.formatted_address) - if (result.country) record.set('country', result.country) - if (result.postal_code) record.set('postal_code', result.postal_code) + if ('message' in result) { + record.addError(result.field, result.message) + } else { + record.set(config.latitudeField, result.latitude) + record.set(config.longitudeField, result.longitude) + record.set('formatted_address', result.formatted_address) + if (result.country) record.set('country', result.country) + if (result.postal_code) record.set('postal_code', result.postal_code) + } } + return records } - return records - }) + ) } export default enrichGeocode diff --git a/enrich/geocode/tsup.config.mjs b/enrich/geocode/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/enrich/geocode/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/enrich/gpx/jest.config.js b/enrich/gpx/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/enrich/gpx/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/enrich/gpx/package.json b/enrich/gpx/package.json index aa8191778..afe89cb84 100644 --- a/enrich/gpx/package.json +++ b/enrich/gpx/package.json @@ -1,27 +1,55 @@ { "name": "@flatfile/plugin-enrich-gpx", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/enrich/gpx", "description": "A Flatfile plugin for parsing GPX files and extracting relevant data", - "main": "./dist/index.js", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "registryMetadata": { + "category": "enrich" + }, + "type": "module", + "engines": { + "node": ">= 16" + }, + "browserslist": [ + "> 0.5%", + "last 2 versions", + "not dead" + ], "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.js" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -31,25 +59,21 @@ "category-enrich" ], "author": "Flatfile, Inc.", + "repository": { + "type": "git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", + "directory": "enrich/gpx" + }, "license": "ISC", "dependencies": { "@flatfile/plugin-record-hook": "^1.6.1", "xml2js": "^0.6.2" }, "peerDependencies": { - "@flatfile/listener": "^1.0.5" + "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" - }, - "repository": { - "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", - "directory": "enrich/gpx" - }, - "browserslist": [ - "> 0.5%", - "last 2 versions", - "not dead" - ] + "@flatfile/bundler-config-tsup": "^0.0.0", + "@types/xml2js": "^0.4.14" + } } diff --git a/enrich/gpx/rollup.config.mjs b/enrich/gpx/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/enrich/gpx/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/enrich/gpx/src/enrich.gpx.plugin.spec.ts b/enrich/gpx/src/enrich.gpx.plugin.spec.ts index 83b24cbb4..7fb8da000 100644 --- a/enrich/gpx/src/enrich.gpx.plugin.spec.ts +++ b/enrich/gpx/src/enrich.gpx.plugin.spec.ts @@ -1,9 +1,10 @@ +import { describe, expect, it } from 'vitest' import { calculateDistance, - removeDuplicatePoints, - filterByDateRange, calculateStatistics, convertToTabularFormat, + filterByDateRange, + removeDuplicatePoints, } from './enrich.gpx.plugin' describe('GPX Parser Utility Functions', () => { @@ -19,9 +20,24 @@ describe('GPX Parser Utility Functions', () => { describe('removeDuplicatePoints', () => { it('should remove duplicate points', () => { const points = [ - { latitude: 0, longitude: 0, elevation: 100, time: '2023-01-01T00:00:00Z' }, - { latitude: 0, longitude: 0, elevation: 100, time: '2023-01-01T00:00:00Z' }, - { latitude: 1, longitude: 1, elevation: 200, time: '2023-01-01T00:01:00Z' }, + { + latitude: 0, + longitude: 0, + elevation: 100, + time: '2023-01-01T00:00:00Z', + }, + { + latitude: 0, + longitude: 0, + elevation: 100, + time: '2023-01-01T00:00:00Z', + }, + { + latitude: 1, + longitude: 1, + elevation: 200, + time: '2023-01-01T00:01:00Z', + }, ] const result = removeDuplicatePoints(points) expect(result.length).toBe(2) @@ -58,15 +74,25 @@ describe('GPX Parser Utility Functions', () => { describe('convertToTabularFormat', () => { it('should convert waypoints, tracks, and routes to tabular format', () => { - const waypoints = [{ latitude: 0, longitude: 0, time: '2023-01-01T00:00:00Z' }] - const tracks = [{ - segments: [{ - points: [{ latitude: 1, longitude: 1, time: '2023-01-01T00:01:00Z' }] - }] - }] - const routes = [{ - points: [{ latitude: 2, longitude: 2, time: '2023-01-01T00:02:00Z' }] - }] + const waypoints = [ + { latitude: 0, longitude: 0, time: '2023-01-01T00:00:00Z' }, + ] + const tracks = [ + { + segments: [ + { + points: [ + { latitude: 1, longitude: 1, time: '2023-01-01T00:01:00Z' }, + ], + }, + ], + }, + ] + const routes = [ + { + points: [{ latitude: 2, longitude: 2, time: '2023-01-01T00:02:00Z' }], + }, + ] const result = convertToTabularFormat(waypoints, tracks, routes) expect(result.length).toBe(3) expect(result[0].latitude).toBe(0) diff --git a/enrich/gpx/src/enrich.gpx.plugin.ts b/enrich/gpx/src/enrich.gpx.plugin.ts index 0e45a5677..9d95ea219 100644 --- a/enrich/gpx/src/enrich.gpx.plugin.ts +++ b/enrich/gpx/src/enrich.gpx.plugin.ts @@ -1,7 +1,7 @@ -import { FlatfileListener, FlatfileEvent } from '@flatfile/listener' -import { recordHook, FlatfileRecord } from '@flatfile/plugin-record-hook' -import { parseString } from 'xml2js' +import { type FlatfileEvent, type FlatfileListener } from '@flatfile/listener' +import { type FlatfileRecord, recordHook } from '@flatfile/plugin-record-hook' import { promisify } from 'util' +import { parseString } from 'xml2js' const parseXml = promisify(parseString) @@ -93,8 +93,8 @@ export function calculateStatistics(tabularData: Waypoint[]): { let elevationGain = 0 for (let i = 1; i < tabularData.length; i++) { - const prevPoint = tabularData[i - 1] - const currentPoint = tabularData[i] + const prevPoint = tabularData[i - 1]! + const currentPoint = tabularData[i]! totalDistance += calculateDistance(prevPoint, currentPoint) @@ -139,7 +139,7 @@ async function enrichGpxData( startDate: Date, endDate: Date ): Promise { - const parsedGpx = await parseXml(gpxContent) + const parsedGpx = (await parseXml(gpxContent)) as any const metadata = parsedGpx.gpx.metadata?.[0] const waypoints: Waypoint[] = @@ -180,11 +180,7 @@ async function enrichGpxData( tabularData = removeDuplicatePoints(tabularData) } - if ( - filterDates && - !isNaN(startDate.getTime()) && - !isNaN(endDate.getTime()) - ) { + if (filterDates && !isNaN(startDate.getTime()) && !isNaN(endDate.getTime())) { tabularData = filterByDateRange(tabularData, startDate, endDate) } @@ -203,14 +199,17 @@ async function enrichGpxData( } } -export default function enrichGpx(listener: FlatfileListener, config: GpxParserConfig) { +export default function enrichGpx( + listener: FlatfileListener, + config: GpxParserConfig +) { const { sheetSlug, gpxFileField, removeDuplicatesField, filterDatesField, startDateField, - endDateField + endDateField, } = config listener.use( @@ -227,7 +226,9 @@ export default function enrichGpx(listener: FlatfileListener, config: GpxParserC try { const removeDuplicates = record.get(removeDuplicatesField) === 'true' const filterDates = record.get(filterDatesField) === 'true' - const startDate = new Date((record.get(startDateField) as string) || '') + const startDate = new Date( + (record.get(startDateField) as string) || '' + ) const endDate = new Date((record.get(endDateField) as string) || '') const enrichedData = await enrichGpxData( diff --git a/enrich/gpx/tsup.config.mjs b/enrich/gpx/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/enrich/gpx/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/enrich/sentiment/jest.config.js b/enrich/sentiment/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/enrich/sentiment/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/enrich/sentiment/package.json b/enrich/sentiment/package.json index 1c01545e9..1258e507d 100644 --- a/enrich/sentiment/package.json +++ b/enrich/sentiment/package.json @@ -1,35 +1,50 @@ { "name": "@flatfile/plugin-enrich-sentiment", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/enrich/sentiment", "description": "A Flatfile plugin for sentiment analysis of text fields in records", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "registryMetadata": { + "category": "enrich" + }, + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" - }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,12 +63,12 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@types/sentiment": "^5.0.4" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "enrich/sentiment" }, "browserslist": [ diff --git a/enrich/sentiment/rollup.config.mjs b/enrich/sentiment/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/enrich/sentiment/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/enrich/sentiment/src/enrich.sentiment.plugin.spec.ts b/enrich/sentiment/src/enrich.sentiment.plugin.spec.ts index efaf5492f..8b046d456 100644 --- a/enrich/sentiment/src/enrich.sentiment.plugin.spec.ts +++ b/enrich/sentiment/src/enrich.sentiment.plugin.spec.ts @@ -1,9 +1,12 @@ +import { describe, expect, it } from 'vitest' import { performEnrichSentiment } from './enrich.sentiment.plugin' describe('performEnrichSentiment', () => { it('should return an error for empty input', () => { const result = performEnrichSentiment('', 'description') - expect(result.error).toBe('No text found for sentiment analysis in field: description') + expect(result.error).toBe( + 'No text found for sentiment analysis in field: description' + ) expect(result.result).toBeNull() }) @@ -13,7 +16,9 @@ describe('performEnrichSentiment', () => { expect(result.result).toBeTruthy() expect(result.result?.score).toBeGreaterThan(0) expect(result.result?.category).toBe('positive') - expect(result.result?.message).toContain('Sentiment analysis completed for review') + expect(result.result?.message).toContain( + 'Sentiment analysis completed for review' + ) }) it('should analyze negative sentiment correctly', () => { @@ -22,7 +27,9 @@ describe('performEnrichSentiment', () => { expect(result.result).toBeTruthy() expect(result.result?.score).toBeLessThan(0) expect(result.result?.category).toBe('negative') - expect(result.result?.message).toContain('Sentiment analysis completed for review') + expect(result.result?.message).toContain( + 'Sentiment analysis completed for review' + ) }) it('should analyze neutral sentiment correctly', () => { @@ -31,15 +38,22 @@ describe('performEnrichSentiment', () => { expect(result.result).toBeTruthy() expect(result.result?.score).toBe(0) expect(result.result?.category).toBe('neutral') - expect(result.result?.message).toContain('Sentiment analysis completed for review') + expect(result.result?.message).toContain( + 'Sentiment analysis completed for review' + ) }) it('should handle complex sentences', () => { - const result = performEnrichSentiment('The product has some good features, but overall it\'s disappointing.', 'feedback') + const result = performEnrichSentiment( + "The product has some good features, but overall it's disappointing.", + 'feedback' + ) expect(result.error).toBeNull() expect(result.result).toBeTruthy() expect(result.result?.score).toBeDefined() expect(result.result?.category).toBeDefined() - expect(result.result?.message).toContain('Sentiment analysis completed for feedback') + expect(result.result?.message).toContain( + 'Sentiment analysis completed for feedback' + ) }) }) diff --git a/enrich/sentiment/tsup.config.mjs b/enrich/sentiment/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/enrich/sentiment/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/enrich/summarize/jest.config.js b/enrich/summarize/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/enrich/summarize/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/enrich/summarize/package.json b/enrich/summarize/package.json index d81b167f6..2fd3271c2 100644 --- a/enrich/summarize/package.json +++ b/enrich/summarize/package.json @@ -1,41 +1,50 @@ { "name": "@flatfile/plugin-enrich-summarize", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/enrich/summarize", "description": "A Flatfile plugin for text summarization and key phrase extraction", "registryMetadata": { - "category": "records" + "category": "enrich" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -44,10 +53,10 @@ "flatfile-plugins", "category-enrich" ], - "author": "Flatfile", + "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "enrich/summarize" }, "license": "ISC", @@ -60,6 +69,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } \ No newline at end of file diff --git a/enrich/summarize/rollup.config.mjs b/enrich/summarize/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/enrich/summarize/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/enrich/summarize/src/summarize.plugin.spec.ts b/enrich/summarize/src/summarize.plugin.spec.ts index 1b004e09f..d4e0aad7d 100644 --- a/enrich/summarize/src/summarize.plugin.spec.ts +++ b/enrich/summarize/src/summarize.plugin.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { extractKeyPhrases, generateSummary } from './summary.util' describe('Summary Utility Functions', () => { diff --git a/enrich/summarize/tsup.config.mjs b/enrich/summarize/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/enrich/summarize/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/export/pivot-table/package.json b/export/pivot-table/package.json index d9de5aa38..dbb551074 100644 --- a/export/pivot-table/package.json +++ b/export/pivot-table/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "export" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.js": "./dist/index.browser.js", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.js" - }, - "browser": { - "require": "./dist/index.browser.js", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, "main": "./dist/index.js", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "export/pivot-table" }, "license": "ISC", @@ -64,6 +72,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } \ No newline at end of file diff --git a/export/pivot-table/rollup.config.mjs b/export/pivot-table/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/export/pivot-table/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/export/pivot-table/src/pivot.table.plugin.ts b/export/pivot-table/src/pivot.table.plugin.ts index 4793ebc6a..e4bedbce1 100644 --- a/export/pivot-table/src/pivot.table.plugin.ts +++ b/export/pivot-table/src/pivot.table.plugin.ts @@ -35,8 +35,8 @@ export function pivotTablePlugin(config: PivotTableConfig) { progress: 10, }) - const sheets = await api.sheets.list({ workbookId }) - const sheetId = sheets.data[0].id + const { data: sheets } = await api.sheets.list({ workbookId }) + const sheetId = sheets[0]!.id const { data: { records }, } = await api.records.get(sheetId) @@ -67,7 +67,7 @@ export function pivotTablePlugin(config: PivotTableConfig) { } await api.jobs.fail(jobId, { outcome: { - message: `Pivot table generation or document creation failed: ${error.message}`, + message: `Pivot table generation or document creation failed: ${(error as Error).message}`, }, }) } diff --git a/export/pivot-table/tsup.config.mjs b/export/pivot-table/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/export/pivot-table/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/extract/html-table/jest.config.js b/extract/html-table/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/extract/html-table/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/extract/html-table/package.json b/extract/html-table/package.json index c2ede55dc..3df0910bc 100644 --- a/extract/html-table/package.json +++ b/extract/html-table/package.json @@ -1,35 +1,50 @@ { "name": "@flatfile/plugin-extract-html-table", "version": "1.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/extract/html-table", "description": "A Flatfile plugin for extracting table data from HTML files", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "registryMetadata": { + "category": "extract" + }, + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" - }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,11 +63,11 @@ "node-html-parser": "^6.1.13" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "extract/html-table" }, "browserslist": [ diff --git a/extract/html-table/rollup.config.mjs b/extract/html-table/rollup.config.mjs deleted file mode 100644 index 1e95e60a0..000000000 --- a/extract/html-table/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config'; - -const config = buildConfig({}); - -export default config; \ No newline at end of file diff --git a/extract/html-table/src/parser.ts b/extract/html-table/src/parser.ts index 8b53d2012..69aa3086a 100644 --- a/extract/html-table/src/parser.ts +++ b/extract/html-table/src/parser.ts @@ -29,7 +29,7 @@ export function parseBuffer( const record: Record = {} row.forEach((cell, cellIndex) => { if (cellIndex < table.headers.length) { - record[table.headers[cellIndex]] = { value: cell } + record[table.headers[cellIndex]!] = { value: cell } } else if (options.debug) { console.warn( `Row ${index + 1} has more cells than headers. Ignoring extra cell:`, @@ -134,9 +134,9 @@ function handleRowspan(rows: string[][]) { rows.forEach((row, rowIndex) => { Object.keys(rowspanCells).forEach((colIndex) => { const colIndexNum = parseInt(colIndex, 10) - if (rowspanCells[colIndexNum].rowspan > 0) { - row.splice(colIndexNum, 0, rowspanCells[colIndexNum].value) - rowspanCells[colIndexNum].rowspan-- + if (rowspanCells[colIndexNum]!.rowspan > 0) { + row.splice(colIndexNum, 0, rowspanCells[colIndexNum]!.value) + rowspanCells[colIndexNum]!.rowspan-- } }) diff --git a/extract/html-table/tsup.config.mjs b/extract/html-table/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/extract/html-table/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/extract/markdown/jest.config.cjs b/extract/markdown/jest.config.cjs deleted file mode 100644 index e6d7ca40b..000000000 --- a/extract/markdown/jest.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/extract/markdown/package.json b/extract/markdown/package.json index dc9a46ef0..47ae534b0 100644 --- a/extract/markdown/package.json +++ b/extract/markdown/package.json @@ -6,38 +6,45 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "type": "module", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -49,7 +56,7 @@ "author": "FlatFilers", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "extract/markdown" }, "license": "ISC", @@ -57,6 +64,6 @@ "@flatfile/util-extractor": "^2.1.2" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" } } diff --git a/extract/markdown/rollup.config.mjs b/extract/markdown/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/extract/markdown/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/extract/markdown/src/parser.spec.ts b/extract/markdown/src/parser.spec.ts index 44a9fd7a7..69f7997dc 100644 --- a/extract/markdown/src/parser.spec.ts +++ b/extract/markdown/src/parser.spec.ts @@ -1,7 +1,8 @@ import * as fs from 'fs' import * as path from 'path' -import { parseBuffer } from './parser' +import { describe, expect, test } from 'vitest' import { MarkdownExtractorOptions } from './index' +import { parseBuffer } from './parser' describe('Markdown Extractor Parser', () => { const testCases = [ diff --git a/extract/markdown/src/parser.ts b/extract/markdown/src/parser.ts index a72d2c60f..670c7c292 100644 --- a/extract/markdown/src/parser.ts +++ b/extract/markdown/src/parser.ts @@ -17,7 +17,7 @@ export function parseBuffer( data: table.rows.map((row) => { const record: Record = {} row.forEach((cell, cellIndex) => { - record[table.headers[cellIndex]] = { value: cell } + record[table.headers[cellIndex]!] = { value: cell } }) return record }), @@ -56,7 +56,7 @@ export function extractTablesFromMarkdown( console.log('Found potential table:', match[0]) } - const headerRow = match[1] + const headerRow = match[1]! .split('|') .map((h) => h.trim()) .filter(Boolean) @@ -66,7 +66,7 @@ export function extractTablesFromMarkdown( } const dataRowsText = match[2] - const dataRows = dataRowsText + const dataRows = dataRowsText! .split('\n') .map((row) => row @@ -119,7 +119,7 @@ export function extractTablesFromMarkdown( if (options.errorHandling === 'strict') { throw error } else { - console.warn('Error parsing table:', error.message) + console.warn('Error parsing table:', (error as Error).message) } } } diff --git a/extract/markdown/tsup.config.mjs b/extract/markdown/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/extract/markdown/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/import/faker/jest.config.js b/import/faker/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/import/faker/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/import/faker/package.json b/import/faker/package.json index 9192cad25..31563a4c5 100644 --- a/import/faker/package.json +++ b/import/faker/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "import" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "import/faker" }, "license": "ISC", @@ -65,6 +73,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/import/faker/rollup.config.mjs b/import/faker/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/import/faker/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/import/faker/src/faker.plugin.spec.ts b/import/faker/src/faker.plugin.spec.ts index edbe70461..b7e45c234 100644 --- a/import/faker/src/faker.plugin.spec.ts +++ b/import/faker/src/faker.plugin.spec.ts @@ -1,12 +1,13 @@ +import { FlatfileClient } from '@flatfile/api' import { FlatfileEvent } from '@flatfile/listener' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { generateExampleRecords } from './faker.utils' -import { FlatfileClient } from '@flatfile/api' // Mock FlatfileClient -jest.mock('@flatfile/api', () => ({ - FlatfileClient: jest.fn().mockImplementation(() => ({ +vi.mock('@flatfile/api', () => ({ + FlatfileClient: vi.fn().mockImplementation(() => ({ sheets: { - get: jest.fn().mockResolvedValue({ + get: vi.fn().mockResolvedValue({ data: { config: { fields: [ @@ -39,49 +40,49 @@ jest.mock('@flatfile/api', () => ({ }), }, jobs: { - update: jest.fn(), - complete: jest.fn(), + update: vi.fn(), + complete: vi.fn(), }, })), })) // Mock @faker-js/faker -jest.mock('@faker-js/faker', () => ({ +vi.mock('@faker-js/faker', () => ({ faker: { - setLocale: jest.fn(), + setLocale: vi.fn(), person: { - fullName: jest.fn(() => 'John Doe'), - firstName: jest.fn(() => 'John'), - lastName: jest.fn(() => 'Doe'), + fullName: vi.fn(() => 'John Doe'), + firstName: vi.fn(() => 'John'), + lastName: vi.fn(() => 'Doe'), }, - internet: { email: jest.fn(() => 'john@example.com') }, - phone: { number: jest.fn(() => '123-456-7890') }, - location: { streetAddress: jest.fn(() => '123 Main St') }, - lorem: { word: jest.fn(() => 'lorem') }, + internet: { email: vi.fn(() => 'john@example.com') }, + phone: { number: vi.fn(() => '123-456-7890') }, + location: { streetAddress: vi.fn(() => '123 Main St') }, + lorem: { word: vi.fn(() => 'lorem') }, number: { - int: jest.fn(() => 42), + int: vi.fn(() => 42), }, datatype: { - boolean: jest.fn(() => true), + boolean: vi.fn(() => true), }, string: { - uuid: jest.fn(() => '123e4567-e89b-12d3-a456-426614174000'), + uuid: vi.fn(() => '123e4567-e89b-12d3-a456-426614174000'), }, date: { - past: jest.fn(() => new Date('2000-01-01')), - recent: jest.fn(() => new Date('2023-01-01')), + past: vi.fn(() => new Date('2000-01-01')), + recent: vi.fn(() => new Date('2023-01-01')), }, helpers: { - arrayElement: jest.fn((arr) => arr[0]), - arrayElements: jest.fn((arr, options) => arr.slice(0, options?.min || 3)), + arrayElement: vi.fn((arr) => arr[0]), + arrayElements: vi.fn((arr, options) => arr.slice(0, options?.min || 3)), }, - commerce: { price: jest.fn(() => '9.99') }, + commerce: { price: vi.fn(() => '9.99') }, }, })) // Mock createAllRecords -jest.mock('@flatfile/util-common', () => ({ - createAllRecords: jest.fn(), +vi.mock('@flatfile/util-common', () => ({ + createAllRecords: vi.fn(), })) describe('generateExampleRecords', () => { @@ -91,9 +92,8 @@ describe('generateExampleRecords', () => { jobId: 'job-456', }, } as any - beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) it('should generate the correct number of records', async () => { @@ -124,23 +124,26 @@ describe('generateExampleRecords', () => { it('should handle errors and set error message', async () => { // Mock the API to return an invalid field type - ;(FlatfileClient as jest.Mock).mockImplementationOnce(() => ({ - sheets: { - get: jest.fn().mockResolvedValue({ - data: { - config: { - fields: [ - { key: 'invalid', type: 'invalid', label: 'Invalid Field' }, - ], - }, + vi.mocked(FlatfileClient).mockImplementationOnce( + () => + ({ + sheets: { + get: vi.fn().mockResolvedValue({ + data: { + config: { + fields: [ + { key: 'invalid', type: 'invalid', label: 'Invalid Field' }, + ], + }, + }, + }), + }, + jobs: { + update: vi.fn(), + complete: vi.fn(), }, - }), - }, - jobs: { - update: jest.fn(), - complete: jest.fn(), - }, - })) + }) as unknown as FlatfileClient + ) const records = await generateExampleRecords(mockEvent, { count: 1 }) expect(records[0].invalid).toBeUndefined() diff --git a/import/faker/src/faker.utils.ts b/import/faker/src/faker.utils.ts index 03db5f88c..829b84d3d 100644 --- a/import/faker/src/faker.utils.ts +++ b/import/faker/src/faker.utils.ts @@ -42,7 +42,7 @@ export const generateExampleRecords = async ( applyConstraints(record, key, config) } catch (error) { console.error(`Error generating data for field ${key}:`, error) - record[key] = { value: `Error: ${error.message}` } + record[key] = { value: `Error: ${(error as Error).message}` } } } @@ -160,12 +160,20 @@ function generateReferenceData(config: any): string { function generateArrayData(config: any): any[] { if (config && config.arrayType === 'string') { - return faker.helpers.arrayElements(['lorem', 'ipsum', 'dolor'], { min: 2, max: 5 }); + return faker.helpers.arrayElements(['lorem', 'ipsum', 'dolor'], { + min: 2, + max: 5, + }) } else if (config && config.arrayType === 'number') { - return faker.helpers.arrayElements([1, 2, 3, 4, 5], { min: 2, max: 5 }).map(Number); + return faker.helpers + .arrayElements([1, 2, 3, 4, 5], { min: 2, max: 5 }) + .map(Number) } else { // Default to string array if arrayType is not specified - return faker.helpers.arrayElements(['lorem', 'ipsum', 'dolor'], { min: 2, max: 5 }); + return faker.helpers.arrayElements(['lorem', 'ipsum', 'dolor'], { + min: 2, + max: 5, + }) } } diff --git a/import/faker/tsup.config.mjs b/import/faker/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/import/faker/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/import/llm-records/jest.config.js b/import/llm-records/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/import/llm-records/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/import/llm-records/package.json b/import/llm-records/package.json index 3cea757a1..3f2ff28d9 100644 --- a/import/llm-records/package.json +++ b/import/llm-records/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "import" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "import/llm-records" }, "license": "ISC", @@ -70,6 +78,6 @@ "@langchain/openai": "^0.3.8" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/import/llm-records/rollup.config.mjs b/import/llm-records/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/import/llm-records/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/import/llm-records/src/import.llm.records.ts b/import/llm-records/src/import.llm.records.ts index eb662e7f1..f3f2ec1ad 100644 --- a/import/llm-records/src/import.llm.records.ts +++ b/import/llm-records/src/import.llm.records.ts @@ -72,7 +72,7 @@ export function importLLMRecords(config: PluginConfig) { if (config.debug) { logError( '@flatfile/plugin-import-llm-records', - `Error generating example records: ${error.message}` + `Error generating example records: ${(error as Error).message}` ) } throw new Error('Error generating example records') diff --git a/import/llm-records/tsup.config.mjs b/import/llm-records/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/import/llm-records/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/import/rss/jest.config.js b/import/rss/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/import/rss/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/import/rss/package.json b/import/rss/package.json index 36b4d0a56..4839d111d 100644 --- a/import/rss/package.json +++ b/import/rss/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "import" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "import/rss" }, "license": "ISC", @@ -66,6 +74,6 @@ "@flatfile/listener": "^1.0.1" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } \ No newline at end of file diff --git a/import/rss/rollup.config.mjs b/import/rss/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/import/rss/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/import/rss/src/import.rss.plugin.ts b/import/rss/src/import.rss.plugin.ts index 676784058..a48269482 100644 --- a/import/rss/src/import.rss.plugin.ts +++ b/import/rss/src/import.rss.plugin.ts @@ -40,7 +40,7 @@ export function rssImport(config: RSSImportConfig) { } catch (error) { await api.jobs.fail(jobId, { outcome: { - message: `Failed to import RSS feed data: ${error.message}`, + message: `Failed to import RSS feed data: ${(error as Error).message}`, }, }) } diff --git a/import/rss/src/import.rss.utils.ts b/import/rss/src/import.rss.utils.ts index 09d145ea7..37e1aa72f 100644 --- a/import/rss/src/import.rss.utils.ts +++ b/import/rss/src/import.rss.utils.ts @@ -17,7 +17,7 @@ export async function parseRSSFeed(url: string) { } catch (error) { logError( '@flatfile/plugin-rss-import', - `Error parsing RSS feed: ${error.message}` + `Error parsing RSS feed: ${(error as Error).message}` ) throw error } @@ -43,7 +43,7 @@ export async function mapToSheetColumns(sheetId: string, records: any[]) { } catch (error) { logError( '@flatfile/plugin-rss-import', - `Error mapping records to sheet columns: ${error.message}` + `Error mapping records to sheet columns: ${(error as Error).message}` ) throw error } diff --git a/import/rss/tsup.config.mjs b/import/rss/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/import/rss/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 50794a0d3..000000000 --- a/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testMatch: ['**/*.e2e.spec.ts'], - setupFilesAfterEnv: ['/jest.setup.js'], - testTimeout: 1_200_000, // Increase timeout to 20 minutes (1200000 ms) -}; diff --git a/jest.setup.js b/jest.setup.js deleted file mode 100644 index 9d9cd84db..000000000 --- a/jest.setup.js +++ /dev/null @@ -1 +0,0 @@ -jest.setTimeout(30000); // Increase timeout to 30 seconds diff --git a/package-lock.json b/package-lock.json index 1545e0f65..52b38e726 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,35 +22,33 @@ "validate/*" ], "devDependencies": { + "@arethetypeswrong/cli": "^0.15.4", "@changesets/cli": "^2.26.1", "@flatfile/listener": "^1.1.0", "@flatfile/utils-testing": "^0.3.1", "@octokit/rest": "^21.0.2", - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", - "@types/jest": "^29.5.13", "@types/node": "^20.2.5", "dotenv": "^16.4.5", "dotenv-expand": "^10.0.0", "dotenv-flow": "^3.2.0", - "jest": "^29.5.0", - "parcel": "latest", "prettier": "^3.2.5", + "publint": "^0.2.12", "ts-jest": "^29.2.5", "turbo": "^1.10.2", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "vite": "^5.4.10", + "vitest": "^2.1.3" }, "engines": { "node": ">=16" }, "optionalDependencies": { "@flatfile/changelog": "^1.0.3", - "@parcel/watcher-linux-x64-glibc": "^2.3.0", "@rollup/rollup-linux-x64-gnu": "^4.8.0" } }, "bundlers/rollup-config": { - "name": "@flatfile/rollup-config", + "name": "@flatfile/bundler-config-rollup", "version": "0.1.1", "license": "ISC", "dependencies": { @@ -64,6 +62,14 @@ "rollup-plugin-peer-deps-external": "^2.2.4" } }, + "bundlers/tsup-config": { + "name": "@flatfile/bundler-config-tsup", + "version": "0.0.0", + "license": "ISC", + "dependencies": { + "tsup": "^8.3.0" + } + }, "convert/currency": { "name": "@flatfile/plugin-convert-currency", "version": "0.1.0", @@ -73,7 +79,10 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" + }, + "engines": { + "node": ">= 16" }, "peerDependencies": { "@flatfile/api": "^1.5.17", @@ -96,7 +105,7 @@ "@google-cloud/translate": "^8.5.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -115,7 +124,7 @@ "modern-async": "^2.0.4" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" }, "engines": { "node": ">= 16" @@ -133,10 +142,7 @@ "cross-fetch": "^4.0.0" }, "devDependencies": { - "@flatfile/hooks": "^1.5.0", - "@flatfile/rollup-config": "^0.1.1", - "@types/node": "^22.6.1", - "typescript": "^5.6.2" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -145,19 +151,6 @@ "@flatfile/listener": "^1.0.5" } }, - "enrich/geocode/node_modules/@types/node": { - "version": "22.7.5", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "enrich/geocode/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "enrich/gpx": { "name": "@flatfile/plugin-enrich-gpx", "version": "0.1.0", @@ -167,21 +160,14 @@ "xml2js": "^0.6.2" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" - }, - "peerDependencies": { - "@flatfile/listener": "^1.0.5" - } - }, - "enrich/gpx/node_modules/xml2js": { - "version": "0.6.2", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@types/xml2js": "^0.4.14" }, "engines": { - "node": ">=4.0.0" + "node": ">= 16" + }, + "peerDependencies": { + "@flatfile/listener": "^1.1.0" } }, "enrich/sentiment": { @@ -193,9 +179,12 @@ "sentiment": "^5.0.2" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@types/sentiment": "^5.0.4" }, + "engines": { + "node": ">= 16" + }, "peerDependencies": { "@flatfile/listener": "^1.0.5" } @@ -209,7 +198,7 @@ "compromise": "^14.14.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -227,7 +216,7 @@ "@flatfile/api": "^1.9.15" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -245,7 +234,10 @@ "node-html-parser": "^6.1.13" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" + }, + "engines": { + "node": ">= 16" } }, "extract/markdown": { @@ -256,13 +248,14 @@ "@flatfile/util-extractor": "^2.1.2" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" }, "engines": { "node": ">= 16" } }, "flatfilers/playground": { + "name": "@private/playground", "version": "0.0.0", "license": "ISC", "dependencies": { @@ -296,7 +289,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -328,7 +321,7 @@ "@flatfile/util-common": "^1.4.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -352,7 +345,7 @@ "rss-parser": "^3.13.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -372,10 +365,13 @@ "node": ">=6.0.0" } }, + "node_modules/@andrewbranch/untar.js": { + "version": "1.0.3", + "dev": true + }, "node_modules/@anthropic-ai/sdk": { "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.27.3.tgz", - "integrity": "sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "^18.11.18", @@ -388,9 +384,8 @@ } }, "node_modules/@anthropic-ai/sdk/node_modules/@types/node": { - "version": "18.19.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.58.tgz", - "integrity": "sha512-2ryJttbOAWCYuZMdk4rmZZ6oqE+GSL5LxbaTVe4PCs0FUrHObZZAQL4ihMw9/cH1Pn8lSQ9TXVhsM4LrnfZ0aA==", + "version": "18.19.59", + "license": "MIT", "peer": true, "dependencies": { "undici-types": "~5.26.4" @@ -398,8 +393,7 @@ }, "node_modules/@anthropic-ai/sdk/node_modules/agentkeepalive": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "license": "MIT", "peer": true, "dependencies": { "humanize-ms": "^1.2.1" @@ -408,6 +402,11 @@ "node": ">= 8.0.0" } }, + "node_modules/@anthropic-ai/sdk/node_modules/undici-types": { + "version": "5.26.5", + "license": "MIT", + "peer": true + }, "node_modules/@apidevtools/json-schema-ref-parser": { "version": "9.0.9", "dev": true, @@ -435,6 +434,54 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@arethetypeswrong/cli": { + "version": "0.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@arethetypeswrong/core": "0.15.1", + "chalk": "^4.1.2", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "marked": "^9.1.2", + "marked-terminal": "^7.1.0", + "semver": "^7.5.4" + }, + "bin": { + "attw": "dist/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@arethetypeswrong/core": { + "version": "0.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@andrewbranch/untar.js": "^1.0.3", + "fflate": "^0.8.2", + "semver": "^7.5.4", + "ts-expose-internals-conditionally": "1.0.0-empty.0", + "typescript": "5.3.3", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@arethetypeswrong/core/node_modules/typescript": { + "version": "5.3.3", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@azure/abort-controller": { "version": "1.1.0", "license": "MIT", @@ -549,7 +596,7 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.16.0", + "version": "1.16.3", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", @@ -586,7 +633,7 @@ } }, "node_modules/@azure/core-util": { - "version": "1.9.0", + "version": "1.9.2", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", @@ -650,7 +697,7 @@ } }, "node_modules/@azure/logger": { - "version": "1.1.2", + "version": "1.1.4", "license": "MIT", "dependencies": { "tslib": "^2.6.2" @@ -660,27 +707,27 @@ } }, "node_modules/@azure/msal-browser": { - "version": "3.14.0", + "version": "3.22.0", "license": "MIT", "dependencies": { - "@azure/msal-common": "14.10.0" + "@azure/msal-common": "14.14.2" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "14.10.0", + "version": "14.14.2", "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "2.8.1", + "version": "2.13.0", "license": "MIT", "dependencies": { - "@azure/msal-common": "14.10.0", + "@azure/msal-common": "14.14.1", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -688,6 +735,13 @@ "node": ">=16" } }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "14.14.1", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@azure/msal-node/node_modules/uuid": { "version": "8.3.2", "license": "MIT", @@ -696,10 +750,10 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", + "version": "7.24.7", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -707,26 +761,26 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", + "version": "7.25.4", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.5", + "version": "7.25.2", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -742,7 +796,7 @@ } }, "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -768,10 +822,10 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.5", + "version": "7.25.5", "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.25.4", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -781,34 +835,35 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", + "version": "7.25.2", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -824,18 +879,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.24.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -854,11 +907,11 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", + "version": "7.25.2", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -893,7 +946,7 @@ } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "peer": true, "dependencies": { @@ -913,64 +966,37 @@ "license": "MIT", "peer": true }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.5", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", + "version": "7.24.7", "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", + "version": "7.25.2", "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -980,31 +1006,31 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", + "version": "7.24.8", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1014,13 +1040,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1030,87 +1056,78 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", + "version": "7.24.8", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.24.8", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.5", + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-function-name": "^7.23.0", - "@babel/template": "^7.24.0", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.5", + "version": "7.25.0", "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -1119,160 +1136,157 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { - "version": "7.24.5", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.5", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.5" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=4" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=0.8.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "node": ">=4" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", + "node_modules/@babel/parser": { + "version": "7.25.4", "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/types": "^7.25.4" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.24.1", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-default-from": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { + "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1281,16 +1295,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1299,13 +1310,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "license": "MIT", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1374,7 +1385,6 @@ "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1397,11 +1407,11 @@ } }, "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1422,11 +1432,11 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1436,11 +1446,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1450,11 +1460,10 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1484,10 +1493,10 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1559,7 +1568,6 @@ "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1584,10 +1592,10 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", + "version": "7.25.4", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1612,11 +1620,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1626,14 +1634,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" }, "engines": { "node": ">=6.9.0" @@ -1643,13 +1651,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1659,11 +1667,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1673,11 +1681,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.5", + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1687,12 +1695,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1702,12 +1710,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1718,17 +1726,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -1739,12 +1745,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1754,11 +1760,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.5", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1768,12 +1774,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1783,11 +1789,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1796,12 +1802,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1812,12 +1833,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1827,11 +1848,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1842,12 +1863,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.1", + "version": "7.25.2", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-flow": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1857,12 +1878,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1872,13 +1893,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", + "version": "7.25.1", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1888,11 +1909,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1903,11 +1924,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", + "version": "7.25.2", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1917,11 +1938,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1932,11 +1953,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1946,12 +1967,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1961,13 +1982,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1977,14 +1998,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", + "version": "7.25.0", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1994,12 +2015,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2009,12 +2030,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2024,11 +2045,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2038,11 +2059,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -2053,11 +2074,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -2068,14 +2089,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.5" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2085,12 +2106,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2100,11 +2121,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -2115,12 +2136,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.5", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -2131,11 +2152,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2145,12 +2166,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2160,13 +2181,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -2177,11 +2198,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2191,11 +2212,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2205,15 +2226,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", + "version": "7.25.2", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -2223,11 +2244,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.24.5", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2237,11 +2258,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2251,11 +2272,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -2266,11 +2287,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2280,14 +2301,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.3", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -2307,11 +2328,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2321,12 +2342,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2336,11 +2357,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2350,11 +2371,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2364,11 +2385,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.5", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2378,14 +2399,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.5", + "version": "7.25.2", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-typescript": "^7.24.1" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2395,11 +2417,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2409,12 +2431,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2424,12 +2446,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2439,12 +2461,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2454,26 +2476,27 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "peer": true, "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2485,59 +2508,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.5", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.5", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.5", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.5", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.5", - "@babel/plugin-transform-parameters": "^7.24.5", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.5", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.5", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -2556,13 +2580,13 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-flow-strip-types": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2585,15 +2609,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.1", + "version": "7.24.7", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-syntax-jsx": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-typescript": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2603,7 +2627,7 @@ } }, "node_modules/@babel/register": { - "version": "7.23.7", + "version": "7.24.6", "license": "MIT", "peer": true, "dependencies": { @@ -2655,7 +2679,7 @@ "peer": true }, "node_modules/@babel/runtime": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2665,29 +2689,26 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", + "version": "7.25.0", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2696,7 +2717,7 @@ } }, "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -2715,11 +2736,11 @@ "license": "MIT" }, "node_modules/@babel/types": { - "version": "7.24.5", + "version": "7.25.4", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2728,18 +2749,21 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, - "license": "MIT" + "peer": true }, "node_modules/@changesets/apply-release-plan": { - "version": "7.0.1", + "version": "7.0.4", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", - "@changesets/config": "^3.0.0", + "@changesets/config": "^3.0.2", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.0", + "@changesets/should-skip-package": "^0.1.0", "@changesets/types": "^6.0.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", @@ -2766,13 +2790,14 @@ } }, "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.0", + "version": "6.0.3", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/get-dependents-graph": "^2.1.1", + "@changesets/should-skip-package": "^0.1.0", "@changesets/types": "^6.0.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" @@ -2787,22 +2812,23 @@ } }, "node_modules/@changesets/cli": { - "version": "2.27.3", + "version": "2.27.7", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", - "@changesets/apply-release-plan": "^7.0.1", - "@changesets/assemble-release-plan": "^6.0.0", + "@changesets/apply-release-plan": "^7.0.4", + "@changesets/assemble-release-plan": "^6.0.3", "@changesets/changelog-git": "^0.2.0", - "@changesets/config": "^3.0.0", + "@changesets/config": "^3.0.2", "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/get-release-plan": "^4.0.0", + "@changesets/get-dependents-graph": "^2.1.1", + "@changesets/get-release-plan": "^4.0.3", "@changesets/git": "^3.0.0", "@changesets/logger": "^0.1.0", "@changesets/pre": "^2.0.0", "@changesets/read": "^0.6.0", + "@changesets/should-skip-package": "^0.1.0", "@changesets/types": "^6.0.0", "@changesets/write": "^0.3.1", "@manypkg/get-packages": "^1.1.3", @@ -2814,35 +2840,98 @@ "external-editor": "^3.1.0", "fs-extra": "^7.0.1", "human-id": "^1.0.2", - "meow": "^6.0.0", + "mri": "^1.2.0", "outdent": "^0.5.0", "p-limit": "^2.2.0", "preferred-pm": "^3.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^2.0.0", - "term-size": "^2.1.0", - "tty-table": "^4.1.5" + "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, - "node_modules/@changesets/config": { - "version": "3.0.0", + "node_modules/@changesets/cli/node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.2" - } - }, - "node_modules/@changesets/errors": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/cli/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/cli/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/cli/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/cli/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@changesets/cli/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/cli/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/config": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.1", + "@changesets/logger": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" + } + }, + "node_modules/@changesets/errors": { "version": "0.2.0", "dev": true, "license": "MIT", @@ -2851,7 +2940,7 @@ } }, "node_modules/@changesets/get-dependents-graph": { - "version": "2.0.0", + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { @@ -2862,14 +2951,78 @@ "semver": "^7.5.3" } }, + "node_modules/@changesets/get-dependents-graph/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/get-dependents-graph/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/get-dependents-graph/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@changesets/get-release-plan": { - "version": "4.0.0", + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", - "@changesets/assemble-release-plan": "^6.0.0", - "@changesets/config": "^3.0.0", + "@changesets/assemble-release-plan": "^6.0.3", + "@changesets/config": "^3.0.2", "@changesets/pre": "^2.0.0", "@changesets/read": "^0.6.0", "@changesets/types": "^6.0.0", @@ -2903,6 +3056,70 @@ "chalk": "^2.1.0" } }, + "node_modules/@changesets/logger/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/logger/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/logger/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/logger/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/logger/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@changesets/logger/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/logger/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@changesets/parse": { "version": "0.4.0", "dev": true, @@ -2939,6 +3156,80 @@ "p-filter": "^2.1.0" } }, + "node_modules/@changesets/read/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/read/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/read/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/read/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/read/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@changesets/read/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/read/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@changesets/should-skip-package": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, "node_modules/@changesets/types": { "version": "6.0.0", "dev": true, @@ -2971,9 +3262,10 @@ } }, "node_modules/@colors/colors": { - "version": "1.6.0", + "version": "1.5.0", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.1.90" } @@ -3023,20 +3315,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/@dotenvx/dotenvx/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@dotenvx/dotenvx/node_modules/brace-expansion": { "version": "2.0.1", "dev": true, @@ -3045,37 +3323,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@dotenvx/dotenvx/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@dotenvx/dotenvx/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@dotenvx/dotenvx/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, "node_modules/@dotenvx/dotenvx/node_modules/commander": { "version": "11.1.0", "dev": true, @@ -3099,34 +3346,24 @@ } }, "node_modules/@dotenvx/dotenvx/node_modules/glob": { - "version": "10.3.16", + "version": "10.4.5", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@dotenvx/dotenvx/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@dotenvx/dotenvx/node_modules/isexe": { "version": "3.1.1", "dev": true, @@ -3136,7 +3373,7 @@ } }, "node_modules/@dotenvx/dotenvx/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "dev": true, "license": "ISC", "dependencies": { @@ -3149,17 +3386,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@dotenvx/dotenvx/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@dotenvx/dotenvx/node_modules/which": { "version": "4.0.0", "dev": true, @@ -3174,169 +3400,479 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "darwin" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@faker-js/faker": { - "version": "7.6.0", + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14" - } - }, - "node_modules/@flatfile/api": { - "version": "1.9.19", - "dependencies": { - "@flatfile/cross-env-config": "0.0.4", - "@types/pako": "2.0.1", - "form-data": "4.0.0", - "js-base64": "3.7.2", - "node-fetch": "2.7.0", - "pako": "2.0.1", - "qs": "6.11.2", - "url-join": "4.0.1" + "node": ">=12" } }, - "node_modules/@flatfile/blueprint": { - "version": "0.0.9", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "openapi-typescript-codegen": "^0.23.0" - }, - "engines": { - "node": ">=16 || >=18", - "pnpm": ">=7" - } - }, - "node_modules/@flatfile/changelog": { - "version": "1.0.3", "optional": true, - "dependencies": { - "chalk": "^4.1.2", - "commander": "^9.3.0", - "dotenv": "^16.0.1", - "js-yaml": "^4.1.0", - "ora": "^5.4.1", - "prompts": "^2.4.2" - }, - "bin": { - "changelog": "dist/entry.mjs" + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "cpu": [ + "arm64" + ], "license": "MIT", "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@flatfile/changelog/node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0", - "optional": true - }, - "node_modules/@flatfile/changelog/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, "optional": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, "optional": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "os": [ + "freebsd" + ], "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "optional": true - }, - "node_modules/@flatfile/changelog/node_modules/commander": { - "version": "9.5.0", - "license": "MIT", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.20.0 || >=14" + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, "optional": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@flatfile/changelog/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, "optional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@flatfile/common-plugin-utils": { - "resolved": "support/common-utils", - "link": true - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@faker-js/faker": { + "version": "7.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@flatfile/api": { + "version": "1.10.0", + "dependencies": { + "@flatfile/cross-env-config": "0.0.4", + "@types/pako": "2.0.1", + "form-data": "4.0.0", + "js-base64": "3.7.2", + "node-fetch": "2.7.0", + "pako": "2.0.1", + "qs": "6.11.2", + "url-join": "4.0.1" + } + }, + "node_modules/@flatfile/blueprint": { + "version": "0.0.9", + "dev": true, + "dependencies": { + "openapi-typescript-codegen": "^0.23.0" + }, + "engines": { + "node": ">=16 || >=18", + "pnpm": ">=7" + } + }, + "node_modules/@flatfile/bundler-config-rollup": { + "resolved": "bundlers/rollup-config", + "link": true + }, + "node_modules/@flatfile/bundler-config-tsup": { + "resolved": "bundlers/tsup-config", + "link": true + }, + "node_modules/@flatfile/changelog": { + "version": "1.0.4", + "optional": true, + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "dotenv": "^16.0.1", + "js-yaml": "^4.1.0", + "ora": "^5.4.1", + "prompts": "^2.4.2" + }, + "bin": { + "changelog": "dist/entry.mjs" + } + }, + "node_modules/@flatfile/changelog/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0", + "optional": true + }, + "node_modules/@flatfile/changelog/node_modules/commander": { + "version": "9.5.0", + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@flatfile/changelog/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "optional": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@flatfile/common-plugin-utils": { + "resolved": "support/common-utils", + "link": true + }, "node_modules/@flatfile/configure": { "version": "1.1.0", "dev": true, @@ -3578,10 +4114,6 @@ "resolved": "plugins/zip-extractor", "link": true }, - "node_modules/@flatfile/rollup-config": { - "resolved": "bundlers/rollup-config", - "link": true - }, "node_modules/@flatfile/schema": { "version": "0.2.17", "dev": true, @@ -3638,13 +4170,6 @@ "node": ">=14.0.0" } }, - "node_modules/@google-cloud/common/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@google-cloud/projectify": { "version": "4.0.0", "license": "Apache-2.0", @@ -3674,13 +4199,6 @@ "node": ">=14.0.0" } }, - "node_modules/@google-cloud/translate/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@grpc/grpc-js": { "version": "1.12.2", "license": "Apache-2.0", @@ -3734,70 +4252,6 @@ "node": ">=14.18.0" } }, - "node_modules/@inquirer/confirm/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@inquirer/confirm/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@inquirer/confirm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@inquirer/confirm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@inquirer/confirm/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/confirm/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@inquirer/core": { "version": "6.0.0", "dev": true, @@ -3822,59 +4276,6 @@ "node": ">=14.18.0" } }, - "node_modules/@inquirer/core/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@inquirer/core/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@inquirer/core/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@inquirer/core/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@inquirer/core/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@inquirer/core/node_modules/signal-exit": { "version": "4.1.0", "dev": true, @@ -3886,17 +4287,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@inquirer/core/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@inquirer/core/node_modules/wrap-ansi": { "version": "6.2.0", "dev": true, @@ -3911,9 +4301,12 @@ } }, "node_modules/@inquirer/type": { - "version": "1.3.2", + "version": "1.5.2", "dev": true, "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, "engines": { "node": ">=18" } @@ -4031,8 +4424,10 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -4045,74 +4440,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -4155,70 +4488,6 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/create-cache-key-function": { "version": "29.7.0", "license": "MIT", @@ -4294,8 +4563,10 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -4334,75 +4605,11 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/@jest/schemas": { + "version": "29.6.3", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4410,8 +4617,10 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -4423,8 +4632,10 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -4437,8 +4648,10 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -4473,64 +4686,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/types": { "version": "29.6.3", "license": "MIT", @@ -4546,64 +4701,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "license": "MIT", @@ -4639,7 +4736,7 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", + "version": "1.5.0", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -4651,7 +4748,7 @@ } }, "node_modules/@js-joda/core": { - "version": "5.6.2", + "version": "5.6.3", "license": "BSD-3-Clause" }, "node_modules/@js-sdsl/ordered-map": { @@ -4669,8 +4766,7 @@ }, "node_modules/@langchain/anthropic": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@langchain/anthropic/-/anthropic-0.3.5.tgz", - "integrity": "sha512-AWlF8mSTcxlDdLD+FD9TYFnVaQSCp4foblCDzUR/Xnhn8IvZSzK+3nbxkdVM4a8LS+7GnxP9ED88ZAUvZSQmQg==", + "license": "MIT", "peer": true, "dependencies": { "@anthropic-ai/sdk": "^0.27.3", @@ -4687,8 +4783,7 @@ }, "node_modules/@langchain/core": { "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.13.tgz", - "integrity": "sha512-sHDlwyHhgeaYC+wfORrWO7sXxD6/GDtZZ5mqjY48YMwB58cVv8hTs8goR/9EwXapYt8fQi2uXTGUV87bHzvdZQ==", + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^5.0.0", @@ -4709,8 +4804,7 @@ }, "node_modules/@langchain/core/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -4721,8 +4815,7 @@ }, "node_modules/@langchain/core/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -4733,12 +4826,11 @@ }, "node_modules/@langchain/core/node_modules/uuid": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "peer": true, "bin": { "uuid": "dist/bin/uuid" @@ -4746,8 +4838,7 @@ }, "node_modules/@langchain/mistralai": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@langchain/mistralai/-/mistralai-0.1.1.tgz", - "integrity": "sha512-gnHdQRfn+iBReKD0u1nydGqHgVOjnKHpd0Q2qEN61ZuxiqFOOauWYkrbyml7tzcOdMv2vUAr5+pjpXip+ez59w==", + "license": "MIT", "peer": true, "dependencies": { "@mistralai/mistralai": "^0.4.0", @@ -4764,12 +4855,11 @@ }, "node_modules/@langchain/mistralai/node_modules/uuid": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "peer": true, "bin": { "uuid": "dist/bin/uuid" @@ -4777,8 +4867,7 @@ }, "node_modules/@langchain/openai": { "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.3.11.tgz", - "integrity": "sha512-mEFbpJ8w8NPArsquUlCwxvZTKNkXxqwzvTEYzv6Jb7gUoBDOZtwLg6AdcngTJ+w5VFh3wxgPy0g3zb9Aw0Qbpw==", + "license": "MIT", "peer": true, "dependencies": { "js-tiktoken": "^1.0.12", @@ -4793,31 +4882,6 @@ "@langchain/core": ">=0.2.26 <0.4.0" } }, - "node_modules/@lezer/common": { - "version": "1.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@lezer/lr": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.8.5", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, "node_modules/@manypkg/find-root": { "version": "1.1.0", "dev": true, @@ -4879,7 +4943,7 @@ } }, "node_modules/@mergeapi/merge-node-client": { - "version": "1.0.8", + "version": "1.0.9", "dependencies": { "form-data": "4.0.0", "js-base64": "3.7.2", @@ -4888,42 +4952,16 @@ "url-join": "4.0.1" } }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0", - "json5": "^2.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/@mistralai/mistralai": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-0.4.0.tgz", - "integrity": "sha512-KmFzNro1RKxIFh19J3osmUQhucefBBauMXN5fa9doG6dT9OHR/moBvvn+riVlR7c0AVfuxO8Dfa03AyLYYzbyg==", + "license": "ISC", "peer": true, "dependencies": { "node-fetch": "^2.6.7" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, "node_modules/@noble/ciphers": { - "version": "0.4.1", + "version": "0.5.3", "dev": true, "license": "MIT", "funding": { @@ -4931,7 +4969,7 @@ } }, "node_modules/@noble/curves": { - "version": "1.4.0", + "version": "1.5.0", "dev": true, "license": "MIT", "dependencies": { @@ -5122,3154 +5160,1040 @@ "@octokit/openapi-types": "^22.2.0" } }, - "node_modules/@parcel/bundler-default": { - "version": "2.12.0", - "dev": true, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/graph": "3.2.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1" - }, + "optional": true, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14" } }, - "node_modules/@parcel/cache": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/fs": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/utils": "2.12.0", - "lmdb": "2.8.5" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" - } + "node_modules/@private/playground": { + "resolved": "flatfilers/playground", + "link": true }, - "node_modules/@parcel/codeframe": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "node_modules/@private/sandbox": { + "resolved": "flatfilers/sandbox", + "link": true }, - "node_modules/@parcel/codeframe/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@parcel/codeframe/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@react-native-community/cli": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@react-native-community/cli-clean": "14.0.0", + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-doctor": "14.0.0", + "@react-native-community/cli-server-api": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "@react-native-community/cli-types": "14.0.0", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" }, - "engines": { - "node": ">=10" + "bin": { + "rnc-cli": "build/bin.js" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@parcel/codeframe/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/@react-native-community/cli-clean": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" } }, - "node_modules/@parcel/codeframe/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@parcel/codeframe/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/@react-native-community/cli-config": { + "version": "14.0.0", "license": "MIT", - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" } }, - "node_modules/@parcel/codeframe/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "serve-static": "^1.13.1" } }, - "node_modules/@parcel/compressor-raw": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-doctor": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/config-default": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/bundler-default": "2.12.0", - "@parcel/compressor-raw": "2.12.0", - "@parcel/namer-default": "2.12.0", - "@parcel/optimizer-css": "2.12.0", - "@parcel/optimizer-htmlnano": "2.12.0", - "@parcel/optimizer-image": "2.12.0", - "@parcel/optimizer-svgo": "2.12.0", - "@parcel/optimizer-swc": "2.12.0", - "@parcel/packager-css": "2.12.0", - "@parcel/packager-html": "2.12.0", - "@parcel/packager-js": "2.12.0", - "@parcel/packager-raw": "2.12.0", - "@parcel/packager-svg": "2.12.0", - "@parcel/packager-wasm": "2.12.0", - "@parcel/reporter-dev-server": "2.12.0", - "@parcel/resolver-default": "2.12.0", - "@parcel/runtime-browser-hmr": "2.12.0", - "@parcel/runtime-js": "2.12.0", - "@parcel/runtime-react-refresh": "2.12.0", - "@parcel/runtime-service-worker": "2.12.0", - "@parcel/transformer-babel": "2.12.0", - "@parcel/transformer-css": "2.12.0", - "@parcel/transformer-html": "2.12.0", - "@parcel/transformer-image": "2.12.0", - "@parcel/transformer-js": "2.12.0", - "@parcel/transformer-json": "2.12.0", - "@parcel/transformer-postcss": "2.12.0", - "@parcel/transformer-posthtml": "2.12.0", - "@parcel/transformer-raw": "2.12.0", - "@parcel/transformer-react-refresh-wrap": "2.12.0", - "@parcel/transformer-svg": "2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" - } - }, - "node_modules/@parcel/core": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/graph": "3.2.0", - "@parcel/logger": "2.12.0", - "@parcel/package-manager": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/profiler": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.9.9", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-apple": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" } }, - "node_modules/@parcel/core/node_modules/dotenv": { - "version": "7.0.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { + "version": "4.1.1", + "license": "MIT", + "peer": true, "engines": { "node": ">=6" } }, - "node_modules/@parcel/core/node_modules/dotenv-expand": { - "version": "5.1.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@parcel/diagnostic": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { + "version": "5.2.0", "license": "MIT", + "peer": true, "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=6" } }, - "node_modules/@parcel/events": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-platform-android": { + "version": "14.0.0", "license": "MIT", - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "logkitty": "^0.7.1" } }, - "node_modules/@parcel/fs": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/rust": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.12.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "ora": "^5.4.1" } }, - "node_modules/@parcel/graph": { - "version": "3.2.0", - "dev": true, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@react-native-community/cli-platform-apple": "14.0.0" } }, - "node_modules/@parcel/logger": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" } }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { + "version": "26.6.2", "license": "MIT", + "peer": true, "dependencies": { - "chalk": "^4.1.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 10.14.2" } }, - "node_modules/@parcel/markdown-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { + "version": "15.0.19", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/@parcel/markdown-ansi/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { + "version": "26.6.2", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@parcel/markdown-ansi/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@parcel/markdown-ansi/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@parcel/markdown-ansi/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@parcel/markdown-ansi/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { + "version": "17.0.2", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/@parcel/namer-default": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" } }, - "node_modules/@parcel/node-resolver-core": { - "version": "3.3.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/find-up": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/optimizer-css": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { + "version": "1.1.0", "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "browserslist": "^4.6.6", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" - }, + "peer": true, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=4" } }, - "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-htmlnano/node_modules/css-select": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/@parcel/optimizer-htmlnano/node_modules/css-tree": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/optimizer-htmlnano/node_modules/csso": { - "version": "4.2.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/mime": { + "version": "2.6.0", "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" + "peer": true, + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8.0.0" + "node": ">=4.0.0" } }, - "node_modules/@parcel/optimizer-htmlnano/node_modules/mdn-data": { - "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@parcel/optimizer-htmlnano/node_modules/svgo": { - "version": "2.8.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/open": { + "version": "6.4.0", "license": "MIT", + "peer": true, "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/@parcel/optimizer-image": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/p-limit": { + "version": "3.1.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/optimizer-svgo": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "svgo": "^2.4.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/optimizer-svgo/node_modules/css-select": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@react-native-community/cli-types": { + "version": "14.0.0", + "license": "MIT", + "peer": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "joi": "^17.2.1" } }, - "node_modules/@parcel/optimizer-svgo/node_modules/css-tree": { - "version": "1.1.3", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, + "peer": true, "engines": { - "node": ">=8.0.0" + "node": "^12.20.0 || >=14" } }, - "node_modules/@parcel/optimizer-svgo/node_modules/csso": { - "version": "4.2.0", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/find-up": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "css-tree": "^1.1.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/optimizer-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@parcel/optimizer-svgo/node_modules/svgo": { - "version": "2.8.0", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/fs-extra": { + "version": "8.1.0", "license": "MIT", + "peer": true, "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/@parcel/optimizer-swc": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "@swc/core": "^1.3.36", - "nullthrows": "^1.1.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/package-manager": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/p-limit": { + "version": "3.1.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/node-resolver-core": "3.3.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "@swc/core": "^1.3.36", - "semver": "^7.5.2" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/packager-css": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native-community/cli/node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/packager-html": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/assets-registry": { + "version": "0.75.2", "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, + "peer": true, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=18" } }, - "node_modules/@parcel/packager-js": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" + "@react-native/codegen": "0.75.2" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=18" } }, - "node_modules/@parcel/packager-js/node_modules/globals": { - "version": "13.24.0", - "dev": true, + "node_modules/@react-native/babel-preset": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@parcel/packager-js/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.20.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.75.2", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@parcel/packager-raw": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/babel-preset/node_modules/react-refresh": { + "version": "0.14.2", "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.12.0" - }, + "peer": true, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=0.10.0" } }, - "node_modules/@parcel/packager-svg": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/codegen": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "posthtml": "^0.16.4" + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/@parcel/packager-ts": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0" + "@react-native-community/cli-server-api": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "@react-native/dev-middleware": "0.75.2", + "@react-native/metro-babel-transformer": "0.75.2", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=18" } }, - "node_modules/@parcel/packager-wasm": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@jest/types": { + "version": "26.6.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 10.14.2" } }, - "node_modules/@parcel/plugin": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0-alpha.11", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/types": "2.12.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "serve-static": "^1.13.1" } }, - "node_modules/@parcel/profiler": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0-alpha.11", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0", - "chrome-trace-event": "^1.0.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@react-native-community/cli-debugger-ui": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" } }, - "node_modules/@parcel/reporter-cli": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0-alpha.11", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" } }, - "node_modules/@parcel/reporter-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/@types/yargs": { + "version": "15.0.19", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/@parcel/reporter-cli/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/find-up": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/reporter-cli/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/is-wsl": { + "version": "1.1.0", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "peer": true, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/@parcel/reporter-cli/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@parcel/reporter-cli/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/reporter-cli/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/mime": { + "version": "2.6.0", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "peer": true, + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/open": { + "version": "6.4.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=8" } }, - "node_modules/@parcel/reporter-tracer": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/p-limit": { + "version": "3.1.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "chrome-trace-event": "^1.0.3", - "nullthrows": "^1.1.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/resolver-default": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/node-resolver-core": "3.3.0", - "@parcel/plugin": "2.12.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/pretty-format": { + "version": "26.6.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 10" } }, - "node_modules/@parcel/runtime-js": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/community-cli-plugin/node_modules/react-is": { + "version": "17.0.2", "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1" - }, + "peer": true + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.75.2", + "license": "BSD-3-Clause", + "peer": true, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=18" } }, - "node_modules/@parcel/runtime-react-refresh": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/dev-middleware": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.75.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "ws": "^6.2.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18" } }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@parcel/rust": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/gradle-plugin": { + "version": "0.75.2", "license": "MIT", + "peer": true, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=18" } }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "dev": true, + "node_modules/@react-native/js-polyfills": { + "version": "0.75.2", "license": "MIT", - "dependencies": { - "detect-libc": "^1.0.3" - }, + "peer": true, "engines": { - "node": "^12.18.3 || >=14" + "node": ">=18" } }, - "node_modules/@parcel/transformer-babel": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.75.2", + "hermes-parser": "0.22.0", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@parcel/transformer-css": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/normalize-colors": { + "version": "0.75.2", "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "browserslist": "^4.6.6", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "peer": true }, - "node_modules/@parcel/transformer-html": { - "version": "2.12.0", - "dev": true, + "node_modules/@react-native/virtualized-lists": { + "version": "0.75.2", "license": "MIT", + "peer": true, "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2", - "srcset": "4" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-html/node_modules/srcset": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/transformer-image": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.8", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "nullthrows": "^1.1.1" + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=14.0.0" }, "peerDependencies": { - "@parcel/core": "^2.12.0" + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@parcel/transformer-js": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "@swc/helpers": "^0.5.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@parcel/transformer-js/node_modules/regenerator-runtime": { - "version": "0.13.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@parcel/transformer-json": { - "version": "2.12.0", - "dev": true, - "license": "MIT", + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.1.0", + "license": "ISC", "dependencies": { - "@parcel/plugin": "2.12.0", - "json5": "^2.2.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@parcel/transformer-postcss": { - "version": "2.12.0", - "dev": true, - "license": "MIT", + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/utils": "2.12.0", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=10" } }, - "node_modules/@parcel/transformer-posthtml": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2" + "@rollup/pluginutils": "^5.1.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=14.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@parcel/transformer-raw": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.12.0" + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=14.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-sucrase": { + "version": "5.0.2", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.12.0", - "@parcel/utils": "2.12.0", - "react-refresh": "^0.9.0" + "@rollup/pluginutils": "^5.0.1", + "sucrase": "^3.27.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=14.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "rollup": "^2.53.1||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@parcel/transformer-svg": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/rust": "2.12.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2" + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">=14.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@parcel/transformer-typescript-types": { - "version": "2.12.0", + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.6", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/ts-utils": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1" + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14.0.0" }, "peerDependencies": { - "typescript": ">=3.0.0" + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } } }, - "node_modules/@parcel/ts-utils": { - "version": "2.12.0", - "dev": true, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", "license": "MIT", "dependencies": { - "nullthrows": "^1.1.1" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14.0.0" }, "peerDependencies": { - "typescript": ">=3.0.0" - } - }, - "node_modules/@parcel/types": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/cache": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/package-manager": "2.12.0", - "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.12.0", - "utility-types": "^3.10.0" - } - }, - "node_modules/@parcel/utils": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/codeframe": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/markdown-ansi": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/utils/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@parcel/utils/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@parcel/utils/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@parcel/utils/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@parcel/utils/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@parcel/utils/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/workers": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/profiler": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.12.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@private/playground": { - "resolved": "flatfilers/playground", - "link": true - }, - "node_modules/@private/sandbox": { - "resolved": "flatfilers/sandbox", - "link": true - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@react-native-community/cli": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-clean": "13.6.6", - "@react-native-community/cli-config": "13.6.6", - "@react-native-community/cli-debugger-ui": "13.6.6", - "@react-native-community/cli-doctor": "13.6.6", - "@react-native-community/cli-hermes": "13.6.6", - "@react-native-community/cli-server-api": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "@react-native-community/cli-types": "13.6.6", - "chalk": "^4.1.2", - "commander": "^9.4.1", - "deepmerge": "^4.3.0", - "execa": "^5.0.0", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "prompts": "^2.4.2", - "semver": "^7.5.2" - }, - "bin": { - "react-native": "build/bin.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native-community/cli-clean": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-glob": "^3.3.2" - } - }, - "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-clean/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-clean/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-config": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "cosmiconfig": "^5.1.0", - "deepmerge": "^4.3.0", - "fast-glob": "^3.3.2", - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": { - "version": "5.2.1", - "license": "MIT", - "peer": true, - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/import-fresh": { - "version": "2.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/parse-json": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/resolve-from": { - "version": "3.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-config/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-debugger-ui": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "serve-static": "^1.13.1" - } - }, - "node_modules/@react-native-community/cli-doctor": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-config": "13.6.6", - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-platform-apple": "13.6.6", - "@react-native-community/cli-platform-ios": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "command-exists": "^1.2.8", - "deepmerge": "^4.3.0", - "envinfo": "^7.10.0", - "execa": "^5.0.0", - "hermes-profile-transformer": "^0.0.6", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "semver": "^7.5.2", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { - "version": "4.1.1", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { - "version": "5.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-hermes": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.2.4", - "logkitty": "^0.7.1" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-apple": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "13.6.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.0.12", - "ora": "^5.4.1" - } - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-platform-apple": "13.6.6" - } - }, - "node_modules/@react-native-community/cli-server-api": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-debugger-ui": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "nocache": "^3.0.1", - "pretty-format": "^26.6.2", - "serve-static": "^1.13.1", - "ws": "^6.2.2" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { - "version": "26.6.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { - "version": "15.0.19", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { - "version": "26.6.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { - "version": "17.0.2", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-tools": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "mime": "^2.4.1", - "node-fetch": "^2.6.0", - "open": "^6.2.0", - "ora": "^5.4.1", - "semver": "^7.5.2", - "shell-quote": "^1.7.3", - "sudo-prompt": "^9.0.0" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli-tools/node_modules/find-up": { - "version": "5.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { - "version": "1.1.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/mime": { - "version": "2.6.0", - "license": "MIT", - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/open": { - "version": "6.4.0", - "license": "MIT", - "peer": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-types": { - "version": "13.6.6", - "license": "MIT", - "peer": true, - "dependencies": { - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "9.5.0", - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@react-native-community/cli/node_modules/fs-extra": { - "version": "8.1.0", - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native/codegen": "0.74.83" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/babel-preset": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.74.83", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/babel-preset/node_modules/react-refresh": { - "version": "0.14.2", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@react-native/codegen": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.0", - "glob": "^7.1.1", - "hermes-parser": "0.19.1", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-native-community/cli-server-api": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "@react-native/dev-middleware": "0.74.83", - "@react-native/metro-babel-transformer": "0.74.83", - "chalk": "^4.0.0", - "execa": "^5.1.1", - "metro": "^0.80.3", - "metro-config": "^0.80.3", - "metro-core": "^0.80.3", - "node-fetch": "^2.2.0", - "querystring": "^0.2.1", - "readline": "^1.3.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.74.83", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.74.83", - "@rnx-kit/chromium-edge-launcher": "^1.0.0", - "chrome-launcher": "^0.15.2", - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "selfsigned": "^2.4.1", - "serve-static": "^1.13.1", - "temp-dir": "^2.0.0", - "ws": "^6.2.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", - "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/metro-babel-transformer": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@react-native/babel-preset": "0.74.83", - "hermes-parser": "0.19.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.74.83", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.74.83", - "license": "MIT", - "peer": true, - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/react": "^18.2.6", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher": { - "version": "1.0.0", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/node": "^18.0.0", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=14.15" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { - "version": "18.19.33", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/escape-string-regexp": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": { - "version": "1.0.4", - "license": "MIT", - "peer": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.8", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.1.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.6", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-sucrase": { - "version": "5.0.2", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "sucrase": "^3.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.53.1||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-terser": { - "version": "0.4.4", - "license": "MIT", - "dependencies": { - "serialize-javascript": "^6.0.1", - "smob": "^1.0.0", - "terser": "^5.17.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "11.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0||^4.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", - "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz", + "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==", "cpu": [ "arm" ], @@ -8279,9 +6203,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", - "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz", + "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==", "cpu": [ "arm64" ], @@ -8291,7 +6215,7 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.5", + "version": "4.21.1", "cpu": [ "arm64" ], @@ -8302,9 +6226,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", - "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz", + "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==", "cpu": [ "x64" ], @@ -8314,9 +6238,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", - "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz", + "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==", "cpu": [ "arm" ], @@ -8326,9 +6250,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", - "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz", + "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==", "cpu": [ "arm" ], @@ -8338,9 +6262,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", - "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz", + "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==", "cpu": [ "arm64" ], @@ -8350,9 +6274,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", - "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz", + "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==", "cpu": [ "arm64" ], @@ -8362,9 +6286,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", - "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz", + "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==", "cpu": [ "ppc64" ], @@ -8374,9 +6298,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", - "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz", + "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==", "cpu": [ "riscv64" ], @@ -8386,9 +6310,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", - "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz", + "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==", "cpu": [ "s390x" ], @@ -8410,9 +6334,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", - "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz", + "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==", "cpu": [ "x64" ], @@ -8422,9 +6346,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", - "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz", + "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==", "cpu": [ "arm64" ], @@ -8434,9 +6358,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", - "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz", + "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==", "cpu": [ "ia32" ], @@ -8446,9 +6370,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", - "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz", + "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==", "cpu": [ "x64" ], @@ -8479,6 +6403,17 @@ "version": "0.27.8", "license": "MIT" }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "license": "BSD-3-Clause", @@ -8494,13 +6429,14 @@ } }, "node_modules/@swc/core": { - "version": "1.5.7", - "dev": true, + "version": "1.7.21", "hasInstallScript": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@swc/counter": "^0.1.2", - "@swc/types": "0.1.7" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.12" }, "engines": { "node": ">=10" @@ -8510,19 +6446,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.5.7", - "@swc/core-darwin-x64": "1.5.7", - "@swc/core-linux-arm-gnueabihf": "1.5.7", - "@swc/core-linux-arm64-gnu": "1.5.7", - "@swc/core-linux-arm64-musl": "1.5.7", - "@swc/core-linux-x64-gnu": "1.5.7", - "@swc/core-linux-x64-musl": "1.5.7", - "@swc/core-win32-arm64-msvc": "1.5.7", - "@swc/core-win32-ia32-msvc": "1.5.7", - "@swc/core-win32-x64-msvc": "1.5.7" + "@swc/core-darwin-arm64": "1.7.21", + "@swc/core-darwin-x64": "1.7.21", + "@swc/core-linux-arm-gnueabihf": "1.7.21", + "@swc/core-linux-arm64-gnu": "1.7.21", + "@swc/core-linux-arm64-musl": "1.7.21", + "@swc/core-linux-x64-gnu": "1.7.21", + "@swc/core-linux-x64-musl": "1.7.21", + "@swc/core-win32-arm64-msvc": "1.7.21", + "@swc/core-win32-ia32-msvc": "1.7.21", + "@swc/core-win32-x64-msvc": "1.7.21" }, "peerDependencies": { - "@swc/helpers": "^0.5.0" + "@swc/helpers": "*" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -8531,37 +6467,40 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.5.7", + "version": "1.7.21", "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/counter": { "version": "0.1.3", - "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "optional": true, + "peer": true }, "node_modules/@swc/helpers": { - "version": "0.5.11", - "dev": true, + "version": "0.5.12", "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@swc/types": { - "version": "0.1.7", - "dev": true, + "version": "0.1.12", "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { "@swc/counter": "^0.1.3" } @@ -8581,14 +6520,6 @@ "version": "0.23.0", "license": "MIT" }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@types/adm-zip": { "version": "0.4.34", "dev": true, @@ -8599,8 +6530,10 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -8611,16 +6544,20 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -8628,8 +6565,10 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@babel/types": "^7.20.7" } @@ -8639,7 +6578,7 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.6", + "version": "1.0.5", "license": "MIT" }, "node_modules/@types/flat": { @@ -8681,14 +6620,10 @@ "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jest": { - "version": "29.5.13", + "node_modules/@types/js-yaml": { + "version": "4.0.9", "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -8707,10 +6642,15 @@ "version": "4.0.2", "license": "MIT" }, - "node_modules/@types/minimist": { - "version": "1.2.5", + "node_modules/@types/mssql": { + "version": "9.1.5", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tedious": "*", + "tarn": "^3.0.1" + } }, "node_modules/@types/mute-stream": { "version": "0.0.4", @@ -8721,10 +6661,10 @@ } }, "node_modules/@types/node": { - "version": "20.12.12", + "version": "20.16.2", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-fetch": { @@ -8743,11 +6683,6 @@ "@types/node": "*" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "dev": true, - "license": "MIT" - }, "node_modules/@types/pako": { "version": "2.0.1", "license": "MIT" @@ -8761,7 +6696,7 @@ } }, "node_modules/@types/readable-stream": { - "version": "4.0.14", + "version": "4.0.15", "license": "MIT", "dependencies": { "@types/node": "*", @@ -8801,8 +6736,7 @@ }, "node_modules/@types/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT", "peer": true }, "node_modules/@types/semver": { @@ -8819,6 +6753,14 @@ "version": "2.0.3", "license": "MIT" }, + "node_modules/@types/tedious": { + "version": "4.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "license": "MIT" @@ -8830,8 +6772,7 @@ }, "node_modules/@types/uuid": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT", "peer": true }, "node_modules/@types/wrap-ansi": { @@ -8839,23 +6780,148 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/xml2js": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz", + "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { - "version": "17.0.32", + "version": "17.0.33", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "license": "MIT" - }, - "node_modules/@vercel/ncc": { - "version": "0.36.1", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "license": "MIT" + }, + "node_modules/@vercel/ncc": { + "version": "0.36.1", + "dev": true, + "license": "MIT", + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/@vitest/expect": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.3.tgz", + "integrity": "sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "2.1.3", + "@vitest/utils": "2.1.3", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.3.tgz", + "integrity": "sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "2.1.3", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.11" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/spy": "2.1.3", + "msw": "^2.3.5", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz", + "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==", + "dev": true, + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.3.tgz", + "integrity": "sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==", + "dev": true, + "dependencies": { + "@vitest/utils": "2.1.3", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.3.tgz", + "integrity": "sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "2.1.3", + "magic-string": "^0.30.11", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.3.tgz", + "integrity": "sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==", + "dev": true, + "dependencies": { + "tinyspy": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz", + "integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==", "dev": true, - "license": "MIT", - "bin": { - "ncc": "dist/ncc/cli.js" + "dependencies": { + "@vitest/pretty-format": "2.1.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/abort-controller": { @@ -8868,11 +6934,6 @@ "node": ">=6.5" } }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "dev": true, - "license": "MIT" - }, "node_modules/accepts": { "version": "1.3.8", "license": "MIT", @@ -8885,7 +6946,7 @@ } }, "node_modules/acorn": { - "version": "8.11.3", + "version": "8.12.1", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -8895,10 +6956,10 @@ } }, "node_modules/adm-zip": { - "version": "0.5.12", + "version": "0.5.15", "license": "MIT", "engines": { - "node": ">=6.0" + "node": ">=12.0" } }, "node_modules/agent-base": { @@ -8912,7 +6973,7 @@ } }, "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -8941,14 +7002,14 @@ } }, "node_modules/ajv": { - "version": "8.13.0", + "version": "8.17.1", "dev": true, "license": "MIT", "dependencies": { "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": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -9034,13 +7095,16 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", + "version": "4.3.0", "license": "MIT", "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/any-promise": { @@ -9116,23 +7180,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "license": "MIT", @@ -9154,11 +7201,10 @@ } }, "node_modules/arrify": { - "version": "1.0.1", - "dev": true, + "version": "2.0.1", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/asap": { @@ -9166,6 +7212,15 @@ "license": "MIT", "peer": true }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/ast-types": { "version": "0.13.4", "license": "MIT", @@ -9185,7 +7240,7 @@ } }, "node_modules/async": { - "version": "3.2.5", + "version": "3.2.6", "license": "MIT" }, "node_modules/async-limiter": { @@ -9219,7 +7274,7 @@ } }, "node_modules/axios": { - "version": "1.7.7", + "version": "1.7.5", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -9237,8 +7292,10 @@ }, "node_modules/babel-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -9255,70 +7312,6 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "license": "BSD-3-Clause", @@ -9356,8 +7349,10 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -9390,12 +7385,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", + "version": "0.10.6", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9421,21 +7416,24 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", + "version": "1.1.0", "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -9443,8 +7441,10 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -9460,14 +7460,6 @@ "version": "1.0.2", "license": "MIT" }, - "node_modules/base-x": { - "version": "3.0.9", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/base64-js": { "version": "1.5.1", "funding": [ @@ -9518,7 +7510,6 @@ }, "node_modules/binary-extensions": { "version": "2.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9595,16 +7586,8 @@ "node": ">=8" } }, - "node_modules/breakword": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "wcwidth": "^1.0.1" - } - }, "node_modules/browserslist": { - "version": "4.23.0", + "version": "4.23.3", "funding": [ { "type": "opencollective", @@ -9621,10 +7604,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -9635,8 +7618,9 @@ }, "node_modules/bs-logger": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -9692,8 +7676,7 @@ } }, "node_modules/bundle-require": { - "version": "4.1.0", - "dev": true, + "version": "5.0.0", "license": "MIT", "dependencies": { "load-tsconfig": "^0.2.3" @@ -9702,7 +7685,7 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "peerDependencies": { - "esbuild": ">=0.17" + "esbuild": ">=0.18" } }, "node_modules/bytes": { @@ -9715,7 +7698,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9775,8 +7757,8 @@ }, "node_modules/callsites": { "version": "3.1.0", - "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -9788,24 +7770,8 @@ "node": ">=6" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001621", + "version": "1.0.30001653", "funding": [ { "type": "opencollective", @@ -9841,16 +7807,34 @@ "version": "1.0.4", "license": "MIT" }, + "node_modules/chai": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "dev": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { - "version": "2.4.2", + "version": "4.1.2", "license": "MIT", "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/change-case": { @@ -9870,9 +7854,17 @@ "dev": true, "license": "MIT" }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "engines": { + "node": ">= 16" + } + }, "node_modules/chokidar": { "version": "3.6.0", - "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -9921,12 +7913,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", "license": "MIT", + "peer": true, "engines": { - "node": ">=6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "license": "MIT", + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/chrono-node": { @@ -9953,9 +7972,11 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.3.1", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", "dev": true, - "license": "MIT" + "peer": true }, "node_modules/cli-cursor": { "version": "3.1.0", @@ -9964,7 +7985,62 @@ "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" } }, "node_modules/cli-spinners": { @@ -9977,6 +8053,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table3": { + "version": "0.6.5", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, "node_modules/cli-width": { "version": "4.1.0", "dev": true, @@ -9997,14 +8087,6 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "license": "MIT", @@ -10020,8 +8102,10 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -10029,8 +8113,10 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true, - "license": "MIT" + "peer": true }, "node_modules/color": { "version": "3.2.1", @@ -10042,14 +8128,17 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", + "version": "2.0.1", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", + "version": "1.1.4", "license": "MIT" }, "node_modules/color-string": { @@ -10061,6 +8150,19 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, "node_modules/colorette": { "version": "1.4.0", "license": "MIT", @@ -10091,11 +8193,10 @@ "peer": true }, "node_modules/commander": { - "version": "7.2.0", - "dev": true, + "version": "10.0.1", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/commondir": { @@ -10144,7 +8245,7 @@ "peer": true }, "node_modules/compromise": { - "version": "14.14.1", + "version": "14.14.2", "license": "MIT", "dependencies": { "efrt": "2.7.0", @@ -10232,6 +8333,13 @@ "node": ">= 0.6" } }, + "node_modules/consola": { + "version": "3.2.3", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "dev": true, @@ -10269,11 +8377,11 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.37.1", + "version": "3.38.1", "license": "MIT", "peer": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -10281,7 +8389,7 @@ } }, "node_modules/core-js-pure": { - "version": "3.37.1", + "version": "3.38.1", "hasInstallScript": true, "license": "MIT", "funding": { @@ -10296,8 +8404,8 @@ }, "node_modules/cosmiconfig": { "version": "9.0.0", - "dev": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -10321,13 +8429,13 @@ }, "node_modules/cosmiconfig/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "license": "Python-2.0", + "peer": true }, "node_modules/cosmiconfig/node_modules/js-yaml": { "version": "4.1.0", - "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -10337,8 +8445,10 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -10355,70 +8465,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/create-jest/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cross-fetch": { "version": "4.0.0", "license": "MIT", @@ -10499,20 +8545,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, "node_modules/css-what": { "version": "6.1.0", "license": "BSD-2-Clause", @@ -10523,71 +8555,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/csso": { - "version": "5.0.5", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "dev": true, - "license": "CC0-1.0", - "optional": true, - "peer": true - }, - "node_modules/csv": { - "version": "5.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "csv-generate": "^3.4.3", - "csv-parse": "^4.16.3", - "csv-stringify": "^5.6.5", - "stream-transform": "^2.1.3" - }, - "engines": { - "node": ">= 0.1.90" - } - }, - "node_modules/csv-generate": { - "version": "3.4.3", - "dev": true, - "license": "MIT" - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "dev": true, - "license": "MIT" - }, - "node_modules/csv-stringify": { - "version": "5.6.5", - "dev": true, - "license": "MIT" - }, "node_modules/cuint": { "version": "0.2.2", "dev": true, @@ -10669,7 +8636,7 @@ } }, "node_modules/dayjs": { - "version": "1.11.11", + "version": "1.11.13", "license": "MIT" }, "node_modules/debounce-fn": { @@ -10704,37 +8671,17 @@ "node_modules/decamelize": { "version": "1.2.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/dedent": { "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, - "license": "MIT", + "peer": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -10744,6 +8691,15 @@ } } }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "dev": true, @@ -10860,21 +8816,12 @@ "node": ">=8" } }, - "node_modules/detect-libc": { - "version": "1.0.3", - "dev": true, - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -10909,27 +8856,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "funding": [ @@ -10940,33 +8866,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domhandler": { - "version": "4.3.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/dot-prop": { "version": "6.0.1", "dev": true, @@ -11041,13 +8940,13 @@ } }, "node_modules/eciesjs": { - "version": "0.4.6", + "version": "0.4.7", "dev": true, "license": "MIT", "dependencies": { - "@noble/ciphers": "^0.4.0", - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2" + "@noble/ciphers": "^0.5.3", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0" }, "engines": { "node": ">=16.0.0" @@ -11066,8 +8965,9 @@ }, "node_modules/ejs": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -11079,13 +8979,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.777", + "version": "1.5.13", "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -11097,6 +8999,11 @@ "version": "8.0.0", "license": "MIT" }, + "node_modules/emojilib": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, "node_modules/enabled": { "version": "2.0.0", "dev": true, @@ -11128,20 +9035,8 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/env-paths": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11158,9 +9053,21 @@ "node": ">=4" } }, + "node_modules/environment": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/error-ex": { "version": "1.3.2", "license": "MIT", + "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -11243,122 +9150,445 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-aggregate-error": { - "version": "1.0.13", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "set-function-name": "^2.0.2" - }, + "node_modules/es-aggregate-error": { + "version": "1.0.13", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.23.1", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "license": "MIT", + "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, + "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, + "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" + "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, + "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/esbuild": { - "version": "0.17.19", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "node": ">=18" } }, "node_modules/escalade": { @@ -11373,10 +9603,10 @@ "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", + "version": "2.0.0", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, "node_modules/escodegen": { @@ -11443,8 +9673,7 @@ }, "node_modules/eventemitter3": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT", "peer": true }, "node_modules/events": { @@ -11477,7 +9706,10 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -11496,6 +9728,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "license": "Apache-2.0", + "peer": true + }, "node_modules/express": { "version": "4.19.2", "dev": true, @@ -11607,10 +9844,13 @@ "version": "2.1.0", "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "version": "4.4.1", "funding": [ { "type": "github", @@ -11621,6 +9861,7 @@ "url": "https://paypal.me/naturalintelligence" } ], + "license": "MIT", "peer": true, "dependencies": { "strnum": "^1.0.5" @@ -11648,6 +9889,11 @@ "dev": true, "license": "MIT" }, + "node_modules/fflate": { + "version": "0.8.2", + "dev": true, + "license": "MIT" + }, "node_modules/figlet": { "version": "1.7.0", "dev": true, @@ -11673,26 +9919,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/filelist": { "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==", "dev": true, - "license": "Apache-2.0", "dependencies": { "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==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11880,613 +10137,771 @@ "flatfile": "dist/index.js" } }, - "node_modules/flatfile/node_modules/@flatfile/cross-env-config": { - "version": "0.0.6", + "node_modules/flatfile/node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/flatfile/node_modules/@rollup/plugin-commonjs": { - "version": "23.0.7", + "node_modules/flatfile/node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/flatfile/node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/flatfile/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "node": ">=12" } }, - "node_modules/flatfile/node_modules/@rollup/plugin-json": { - "version": "5.0.2", + "node_modules/flatfile/node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "node": ">=12" } }, - "node_modules/flatfile/node_modules/@rollup/plugin-terser": { - "version": "0.1.0", + "node_modules/flatfile/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "terser": "^5.15.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.x || ^3.x" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "node": ">=12" } }, - "node_modules/flatfile/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/flatfile/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/flatfile/node_modules/commander": { - "version": "9.5.0", + "node_modules/flatfile/node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.20.0 || >=14" + "node": ">=12" } }, - "node_modules/flatfile/node_modules/glob": { - "version": "8.1.0", + "node_modules/flatfile/node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/flatfile/node_modules/magic-string": { - "version": "0.27.0", + "node_modules/flatfile/node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" } }, - "node_modules/flatfile/node_modules/minimatch": { - "version": "5.1.6", + "node_modules/flatfile/node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/flatfile/node_modules/rollup": { - "version": "2.79.1", + "node_modules/flatfile/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=12" } }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "license": "MIT", - "peer": true - }, - "node_modules/flow-parser": { - "version": "0.236.0", - "license": "MIT", - "peer": true, + "node_modules/flatfile/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.4.0" + "node": ">=12" } }, - "node_modules/fn.name": { - "version": "1.1.0", + "node_modules/flatfile/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } + "optional": true, + "os": [ + "linux" ], - "license": "MIT", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=12" } }, - "node_modules/for-each": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" + "node_modules/flatfile/node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "node_modules/flatfile/node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "license": "ISC", + "node_modules/flatfile/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, + "node_modules/flatfile/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/flatfile/node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/fresh": { - "version": "0.5.2", - "license": "MIT", + "node_modules/flatfile/node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/fs-extra": { - "version": "7.0.1", + "node_modules/flatfile/node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6 <7 || >=8" + "node": ">=12" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "license": "MIT", + "node_modules/flatfile/node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, "optional": true, "os": [ - "darwin" + "win32" ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=12" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/flatfile/node_modules/@flatfile/cross-env-config": { + "version": "0.0.6", + "dev": true, + "license": "ISC" }, - "node_modules/function.prototype.name": { - "version": "1.1.6", + "node_modules/flatfile/node_modules/@rollup/plugin-commonjs": { + "version": "23.0.7", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/flatfile/node_modules/@rollup/plugin-json": { + "version": "5.0.2", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaxios": { - "version": "6.7.1", - "license": "Apache-2.0", "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" + "@rollup/pluginutils": "^5.0.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/gcp-metadata": { - "version": "6.1.0", - "license": "Apache-2.0", + "node_modules/flatfile/node_modules/@rollup/plugin-terser": { + "version": "0.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "gaxios": "^6.0.0", - "json-bigint": "^1.0.0" + "terser": "^5.15.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/flatfile/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", + "node_modules/flatfile/node_modules/bundle-require": { + "version": "4.2.1", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "load-tsconfig": "^0.2.3" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=8.0.0" + "peerDependencies": { + "esbuild": ">=0.17" } }, - "node_modules/get-port": { - "version": "4.2.0", + "node_modules/flatfile/node_modules/commander": { + "version": "9.5.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^12.20.0 || >=14" } }, - "node_modules/get-stream": { - "version": "6.0.1", + "node_modules/flatfile/node_modules/debug": { + "version": "4.3.6", + "dev": true, "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", + "node_modules/flatfile/node_modules/esbuild": { + "version": "0.17.19", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, - "node_modules/get-uri": { - "version": "6.0.3", - "license": "MIT", + "node_modules/flatfile/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/get-uri/node_modules/debug": { - "version": "4.3.4", + "node_modules/flatfile/node_modules/lilconfig": { + "version": "2.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "11.2.0", + "node_modules/flatfile/node_modules/magic-string": { + "version": "0.27.0", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@jridgewell/sourcemap-codec": "^1.4.13" }, "engines": { - "node": ">=14.14" + "node": ">=12" } }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", + "node_modules/flatfile/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", "dependencies": { - "universalify": "^2.0.0" + "brace-expansion": "^2.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=10" } }, - "node_modules/get-uri/node_modules/ms": { + "node_modules/flatfile/node_modules/ms": { "version": "2.1.2", + "dev": true, "license": "MIT" }, - "node_modules/get-uri/node_modules/universalify": { - "version": "2.0.1", + "node_modules/flatfile/node_modules/postcss-load-config": { + "version": "3.1.4", + "dev": true, "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "node_modules/flatfile/node_modules/rollup": { + "version": "2.79.1", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": "*" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", + "node_modules/flatfile/node_modules/source-map": { + "version": "0.8.0-beta.0", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "is-glob": "^4.0.1" + "whatwg-url": "^7.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/globals": { - "version": "11.12.0", + "node_modules/flatfile/node_modules/tr46": { + "version": "1.0.1", + "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/globalthis": { - "version": "1.0.4", + "node_modules/flatfile/node_modules/tsup": { + "version": "6.7.0", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.17.6", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^3.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" }, "engines": { - "node": ">= 0.4" + "node": ">=14.18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/flatfile/node_modules/tsup/node_modules/rollup": { + "version": "3.29.4", "dev": true, "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/google-auth-library": { - "version": "9.14.2", - "license": "Apache-2.0", + "node_modules/flatfile/node_modules/webidl-conversions": { + "version": "4.0.2", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/flatfile/node_modules/whatwg-url": { + "version": "7.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, - "node_modules/google-gax": { - "version": "4.4.1", - "license": "Apache-2.0", - "dependencies": { - "@grpc/grpc-js": "^1.10.9", - "@grpc/proto-loader": "^0.7.13", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.7.0", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.2", - "protobufjs": "^7.3.2", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - }, + "node_modules/flatfile/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", "engines": { - "node": ">=14" + "node": ">= 6" } }, - "node_modules/gopd": { - "version": "1.0.1", + "node_modules/flow-enums-runtime": { + "version": "0.0.6", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" + "peer": true }, - "node_modules/grad-school": { - "version": "0.0.5", + "node_modules/flow-parser": { + "version": "0.244.0", "license": "MIT", + "peer": true, "engines": { - "node": ">=8.0.0" + "node": ">=0.4.0" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", + "node_modules/fn.name": { + "version": "1.1.0", "dev": true, "license": "MIT" }, - "node_modules/graphql": { - "version": "16.8.1", + "node_modules/follow-redirects": { + "version": "1.15.6", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/graphql-request": { - "version": "4.3.0", - "dev": true, + "node_modules/for-each": { + "version": "0.3.3", "license": "MIT", "dependencies": { - "cross-fetch": "^3.1.5", - "extract-files": "^9.0.0", - "form-data": "^3.0.0" - }, - "peerDependencies": { - "graphql": "14 - 16" + "is-callable": "^1.1.3" } }, - "node_modules/graphql-request/node_modules/cross-fetch": { - "version": "3.1.8", - "dev": true, - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.3.0", + "license": "ISC", "dependencies": { - "node-fetch": "^2.6.12" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graphql-request/node_modules/form-data": { - "version": "3.0.1", - "dev": true, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -12497,94 +10912,81 @@ "node": ">= 6" } }, - "node_modules/gtoken": { - "version": "7.1.0", + "node_modules/form-data-encoder": { + "version": "1.7.2", "license": "MIT", - "dependencies": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14.0.0" - } + "peer": true }, - "node_modules/handlebars": { - "version": "4.7.8", - "dev": true, + "node_modules/formdata-node": { + "version": "4.4.1", "license": "MIT", + "peer": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">= 12.20" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", + "node_modules/forwarded": { + "version": "0.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/has-flag": { - "version": "3.0.0", + "node_modules/fresh": { + "version": "0.5.2", "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", + "node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/has-proto": { - "version": "1.0.3", + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/has-symbols": { - "version": "1.0.3", + "node_modules/function-bind": { + "version": "1.1.2", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", + "node_modules/function.prototype.name": { + "version": "1.1.6", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -12593,180 +10995,116 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasown": { - "version": "2.0.2", + "node_modules/functions-have-names": { + "version": "1.2.3", "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "6.7.1", + "license": "Apache-2.0", "dependencies": { - "function-bind": "^1.1.2" + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "license": "MIT", - "bin": { - "he": "bin/he" + "node": ">=14" } }, - "node_modules/hermes-estree": { - "version": "0.19.1", - "license": "MIT", - "peer": true - }, - "node_modules/hermes-parser": { - "version": "0.19.1", - "license": "MIT", - "peer": true, + "node_modules/gcp-metadata": { + "version": "6.1.0", + "license": "Apache-2.0", "dependencies": { - "hermes-estree": "0.19.1" + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" } }, - "node_modules/hermes-profile-transformer": { - "version": "0.0.6", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", - "peer": true, - "dependencies": { - "source-map": "^0.7.3" - }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/hermes-profile-transformer/node_modules/source-map": { - "version": "0.7.4", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", "engines": { - "node": ">= 8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/html-entities": { - "version": "2.5.2", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", + "node_modules/get-intrinsic": { + "version": "1.2.4", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/htmlnano": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^9.0.0", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - }, - "peerDependencies": { - "cssnano": "^7.0.0", - "postcss": "^8.3.11", - "purgecss": "^6.0.0", - "relateurl": "^0.2.7", - "srcset": "5.0.1", - "svgo": "^3.0.2", - "terser": "^5.10.0", - "uncss": "^0.17.3" - }, - "peerDependenciesMeta": { - "cssnano": { - "optional": true - }, - "postcss": { - "optional": true - }, - "purgecss": { - "optional": true - }, - "relateurl": { - "optional": true - }, - "srcset": { - "optional": true - }, - "svgo": { - "optional": true - }, - "terser": { - "optional": true - }, - "uncss": { - "optional": true - } + "node_modules/get-package-type": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "node_modules/get-stream": { + "version": "6.0.1", "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-errors": { - "version": "2.0.0", + "node_modules/get-symbol-description": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", + "node_modules/get-uri": { + "version": "6.0.3", "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -12780,525 +11118,684 @@ } } }, - "node_modules/http-proxy-agent/node_modules/ms": { + "node_modules/get-uri/node_modules/fs-extra": { + "version": "11.2.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/ms": { "version": "2.1.2", "license": "MIT" }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", + "node_modules/get-uri/node_modules/universalify": { + "version": "2.0.1", "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "license": "ISC", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 14" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/human-id": { - "version": "1.0.2", + "node_modules/globby": { + "version": "11.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/human-signals": { - "version": "2.1.0", + "node_modules/google-auth-library": { + "version": "9.14.2", "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">=14" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "license": "MIT", + "node_modules/google-gax": { + "version": "4.4.1", + "license": "Apache-2.0", "dependencies": { - "ms": "^2.0.0" + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, + "node_modules/gopd": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" }, - "node_modules/ignore": { - "version": "5.3.1", - "dev": true, + "node_modules/grad-school": { + "version": "0.0.5", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=8.0.0" } }, - "node_modules/image-size": { - "version": "1.1.1", + "node_modules/graphql": { + "version": "16.9.0", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-request": { + "version": "4.3.0", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" }, - "engines": { - "node": ">=16.x" + "peerDependencies": { + "graphql": "14 - 16" + } + }, + "node_modules/graphql-request/node_modules/cross-fetch": { + "version": "3.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" } }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/graphql-request/node_modules/form-data": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, + "node_modules/gtoken": { + "version": "7.1.0", "license": "MIT", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=14.0.0" } }, - "node_modules/import-local": { - "version": "3.1.0", + "node_modules/handlebars": { + "version": "4.7.8", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=8" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/has-bigints": { + "version": "1.0.2", "license": "MIT", - "engines": { - "node": ">=0.8.19" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/indent-string": { + "node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" + "node_modules/has-proto": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/internal-slot": { - "version": "1.0.7", + "node_modules/has-tostringtag": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/interpolate-json": { - "version": "2.3.3", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "custom-exception": "^0.1.2", - "extend": "^3.0.2", - "type-detect": "^4.0.8" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12.0.0" + "node": ">= 0.4" } }, - "node_modules/invariant": { - "version": "2.2.4", + "node_modules/he": { + "version": "1.2.0", "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.0.0" + "bin": { + "he": "bin/he" } }, - "node_modules/ip-address": { - "version": "9.0.5", + "node_modules/hermes-estree": { + "version": "0.22.0", + "license": "MIT", + "peer": true + }, + "node_modules/hermes-parser": { + "version": "0.22.0", "license": "MIT", + "peer": true, "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" + "hermes-estree": "0.22.0" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "license": "BSD-3-Clause" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/highlight.js": { + "version": "10.7.3", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.10" + "node": "*" } }, - "node_modules/is-arguments": { - "version": "1.1.1", + "node_modules/hosted-git-info": { + "version": "6.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", + "node_modules/html-entities": { + "version": "2.5.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.4", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "peer": true + }, + "node_modules/html-tags": { + "version": "3.3.1", "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, + "node_modules/http-errors": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", + "node_modules/http-proxy-agent": { + "version": "7.0.2", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.6", "license": "MIT", "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" + "ms": "2.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/is-data-view": { - "version": "1.0.1", + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", "license": "MIT", "dependencies": { - "is-typed-array": "^1.1.13" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/is-date-object": { - "version": "1.0.5", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.6", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/is-directory": { - "version": "0.3.1", - "license": "MIT", - "peer": true, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/human-id": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/is-docker": { - "version": "2.2.1", + "node_modules/humanize-ms": { + "version": "1.2.1", "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "ms": "^2.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, - "license": "MIT", + "dependencies": { + "minimatch": "^5.0.1" + }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", + "node_modules/ignore-walk/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==", "dev": true, - "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-glob": { - "version": "4.0.3", + "node_modules/image-size": { + "version": "1.1.1", "license": "MIT", + "peer": true, "dependencies": { - "is-extglob": "^2.1.1" + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.x" } }, - "node_modules/is-html": { - "version": "2.0.0", + "node_modules/import-fresh": { + "version": "3.3.0", "license": "MIT", + "peer": true, "dependencies": { - "html-tags": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/is-json": { - "version": "2.0.1", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, - "license": "ISC" - }, - "node_modules/is-module": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "license": "MIT", + "peer": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", + "node_modules/imurmurhash": { + "version": "0.1.4", "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=0.8.19" } }, - "node_modules/is-number-object": { + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { "version": "1.0.7", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", + "node_modules/interpolate-json": { + "version": "2.3.3", "dev": true, "license": "MIT", + "dependencies": { + "custom-exception": "^0.1.2", + "extend": "^3.0.2", + "type-detect": "^4.0.8" + }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, + "node_modules/invariant": { + "version": "2.2.4", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "loose-envify": "^1.0.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/ip-address": { + "version": "9.0.5", "license": "MIT", - "peer": true, "dependencies": { - "isobject": "^3.0.1" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/is-reference": { - "version": "1.2.1", + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "license": "BSD-3-Clause" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, "license": "MIT", - "dependencies": { - "@types/estree": "*" + "engines": { + "node": ">= 0.10" } }, - "node_modules/is-regex": { - "version": "1.1.4", + "node_modules/is-arguments": { + "version": "1.1.1", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -13311,11 +11808,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", + "node_modules/is-array-buffer": { + "version": "3.0.4", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -13324,45 +11822,37 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", + "node_modules/is-arrayish": { + "version": "0.2.1", "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "peer": true }, - "node_modules/is-string": { - "version": "1.0.7", + "node_modules/is-bigint": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "has-bigints": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-subdir": { - "version": "1.2.0", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", "license": "MIT", "dependencies": { - "better-path-resolve": "1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/is-boolean-object": { + "version": "1.1.2", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13371,810 +11861,724 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", + "node_modules/is-builtin-module": { + "version": "3.2.1", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "builtin-modules": "^3.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", + "node_modules/is-callable": { + "version": "1.2.7", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakref": { - "version": "1.0.2", + "node_modules/is-core-module": { + "version": "2.15.1", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/is-data-view": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "license": "MIT" - }, - "node_modules/isbn3": { - "version": "1.2.0", - "license": "MIT", - "bin": { - "isbn": "bin/isbn", - "isbn-audit": "bin/isbn-audit", - "isbn-checksum": "bin/isbn-checksum" + "node": ">= 0.4" }, - "engines": { - "node": ">= 6.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/is-date-object": { + "version": "1.0.5", "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/is-directory": { + "version": "0.3.1", "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/is-docker": { + "version": "2.2.1", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "3.1.2", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peer": true, + "engines": { + "node": ">=6" } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", + "node_modules/is-generator-function": { + "version": "1.0.10", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/is-html": { + "version": "2.0.0", "license": "MIT", + "dependencies": { + "html-tags": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/is-interactive": { + "version": "1.0.0", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/jest": { - "version": "29.7.0", - "dev": true, + "node_modules/is-module": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, + "node_modules/is-number-object": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus": { - "version": "29.7.0", + "node_modules/is-obj": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/is-plain-object": { + "version": "2.0.4", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/is-reference": { + "version": "1.2.1", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bind": "^1.0.7" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/is-stream": { + "version": "2.0.1", "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, + "node_modules/is-string": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/is-subdir": { + "version": "1.2.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "better-path-resolve": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "dev": true, + "node_modules/is-symbol": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.13", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/is-unicode-supported": { + "version": "0.1.0", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "dev": true, + "node_modules/isarray": { + "version": "2.0.5", "license": "MIT" }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/isbn3": { + "version": "1.2.2", "license": "MIT", + "bin": { + "isbn": "bin/isbn", + "isbn-audit": "bin/isbn-audit", + "isbn-checksum": "bin/isbn-checksum" + }, "engines": { - "node": ">=8" + "node": ">= 6.4.0" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, - "node_modules/jest-config": { - "version": "29.7.0", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=10" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "ms": "^2.1.3" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT" + "peer": true }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/jackspeak": { + "version": "3.4.3", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, - "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-diff": { + "node_modules/jest": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "peer": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-docblock": { + "node_modules/jest-cli": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "detect-newline": "^3.0.0" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-each": { + "node_modules/jest-config": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/jest-diff": { + "version": "29.7.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { "version": "29.7.0", "license": "MIT", + "peer": true, "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -14189,8 +12593,9 @@ }, "node_modules/jest-fetch-mock": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", "dev": true, - "license": "MIT", "dependencies": { "cross-fetch": "^3.0.4", "promise-polyfill": "^8.1.3" @@ -14198,8 +12603,9 @@ }, "node_modules/jest-fetch-mock/node_modules/cross-fetch": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -14236,8 +12642,10 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -14259,138 +12667,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util": { "version": "29.7.0", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-mock": { @@ -14407,8 +12699,10 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=6" }, @@ -14430,8 +12724,10 @@ }, "node_modules/jest-resolve": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -14449,8 +12745,10 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -14459,74 +12757,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -14554,63 +12790,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -14621,21 +12806,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -14664,70 +12840,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "license": "MIT", @@ -14743,76 +12855,18 @@ "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util": { @@ -14830,67 +12884,10 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-validate": { "version": "29.7.0", "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -14903,22 +12900,10 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -14926,55 +12911,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watcher": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -14989,70 +12931,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { "version": "29.7.0", "license": "MIT", @@ -15066,13 +12944,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "license": "MIT", @@ -15087,7 +12958,7 @@ } }, "node_modules/joi": { - "version": "17.13.1", + "version": "17.13.3", "license": "BSD-3-Clause", "peer": true, "dependencies": { @@ -15100,7 +12971,6 @@ }, "node_modules/joycon": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15116,8 +12986,7 @@ }, "node_modules/js-tiktoken": { "version": "1.0.15", - "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.15.tgz", - "integrity": "sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ==", + "license": "MIT", "peer": true, "dependencies": { "base64-js": "^1.5.1" @@ -15170,86 +13039,22 @@ "@babel/preset-flow": "^7.13.13", "@babel/preset-typescript": "^7.13.0", "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/jscodeshift/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jscodeshift/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jscodeshift/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jscodeshift/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/jscodeshift/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jscodeshift/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" }, - "engines": { - "node": ">=8" + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, "node_modules/jscodeshift/node_modules/write-file-atomic": { @@ -15286,8 +13091,8 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/json-schema": { "version": "0.4.0", @@ -15392,6 +13197,7 @@ "node_modules/kind-of": { "version": "6.0.3", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -15410,8 +13216,7 @@ }, "node_modules/langsmith": { "version": "0.1.66", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.1.66.tgz", - "integrity": "sha512-ZhZ9g8t/qjj0oUWpvKLtUe3qxDL/N0wG0m+Ctkxf0keopYJkcMJg4/71jl6ZYyiSU8xlC27aixXOT0uvLhqcFA==", + "license": "MIT", "peer": true, "dependencies": { "@types/uuid": "^10.0.0", @@ -15430,23 +13235,13 @@ } } }, - "node_modules/langsmith/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "peer": true, - "engines": { - "node": ">=14" - } - }, "node_modules/langsmith/node_modules/uuid": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "peer": true, "bin": { "uuid": "dist/bin/uuid" @@ -15455,12 +13250,13 @@ "node_modules/leven": { "version": "3.1.0", "license": "MIT", + "peer": true, "engines": { "node": ">=6" } }, "node_modules/libphonenumber-js": { - "version": "1.11.10", + "version": "1.11.12", "license": "MIT" }, "node_modules/lighthouse-logger": { @@ -15472,99 +13268,26 @@ "marky": "^1.2.2" } }, - "node_modules/lightningcss": { - "version": "1.25.0", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.25.0", - "lightningcss-darwin-x64": "1.25.0", - "lightningcss-freebsd-x64": "1.25.0", - "lightningcss-linux-arm-gnueabihf": "1.25.0", - "lightningcss-linux-arm64-gnu": "1.25.0", - "lightningcss-linux-arm64-musl": "1.25.0", - "lightningcss-linux-x64-gnu": "1.25.0", - "lightningcss-linux-x64-musl": "1.25.0", - "lightningcss-win32-x64-msvc": "1.25.0" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.25.0", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lil-uuid": { "version": "0.1.1", "license": "MIT" }, "node_modules/lilconfig": { - "version": "2.1.0", - "dev": true, + "version": "3.1.2", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "license": "MIT" }, - "node_modules/lmdb": { - "version": "2.8.5", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "msgpackr": "^1.9.5", - "node-addon-api": "^6.1.0", - "node-gyp-build-optional-packages": "5.1.1", - "ordered-binary": "^1.4.1", - "weak-lru-cache": "^1.2.2" - }, - "bin": { - "download-lmdb-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.8.5", - "@lmdb/lmdb-darwin-x64": "2.8.5", - "@lmdb/lmdb-linux-arm": "2.8.5", - "@lmdb/lmdb-linux-arm64": "2.8.5", - "@lmdb/lmdb-linux-x64": "2.8.5", - "@lmdb/lmdb-win32-x64": "2.8.5" - } - }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "dev": true, - "license": "MIT" - }, "node_modules/load-tsconfig": { "version": "0.2.5", - "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -15637,8 +13360,9 @@ }, "node_modules/lodash.memoize": { "version": "4.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", @@ -15646,7 +13370,6 @@ }, "node_modules/lodash.sortby": { "version": "4.7.0", - "dev": true, "license": "MIT" }, "node_modules/lodash.startcase": { @@ -15678,66 +13401,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/logform": { - "version": "2.6.0", + "version": "2.6.1", "dev": true, "license": "MIT", "dependencies": { @@ -15752,6 +13417,14 @@ "node": ">= 12.0.0" } }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/logform/node_modules/ms": { "version": "2.1.3", "dev": true, @@ -15770,20 +13443,6 @@ "logkitty": "bin/logkitty.js" } }, - "node_modules/logkitty/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/logkitty/node_modules/cliui": { "version": "6.0.0", "license": "ISC", @@ -15794,22 +13453,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/logkitty/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/logkitty/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, "node_modules/logkitty/node_modules/wrap-ansi": { "version": "6.2.0", "license": "MIT", @@ -15849,6 +13492,18 @@ "node": ">=8" } }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", + "peer": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/long": { "version": "5.2.3", "license": "Apache-2.0" @@ -15864,6 +13519,12 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "dev": true + }, "node_modules/lru-cache": { "version": "5.1.1", "license": "ISC", @@ -15872,16 +13533,18 @@ } }, "node_modules/magic-string": { - "version": "0.30.10", + "version": "0.30.11", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "semver": "^7.5.3" }, @@ -15894,8 +13557,9 @@ }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "node_modules/makeerror": { "version": "1.0.12", @@ -15904,77 +13568,79 @@ "tmpl": "1.0.5" } }, - "node_modules/map-obj": { - "version": "4.3.0", + "node_modules/marked": { + "version": "9.1.6", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "marked": "bin/marked.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 16" } }, - "node_modules/marky": { - "version": "1.2.5", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "dev": true, - "license": "CC0-1.0", - "optional": true, - "peer": true - }, - "node_modules/media-typer": { - "version": "0.3.0", + "node_modules/marked-terminal": { + "version": "7.1.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <14" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "license": "MIT", - "peer": true - }, - "node_modules/meow": { - "version": "6.1.1", + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" + "environment": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.13.1", + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, + "node_modules/memoize-one": { + "version": "5.2.1", + "license": "MIT", + "peer": true + }, "node_modules/merge-descriptors": { "version": "1.0.1", "dev": true, @@ -16000,7 +13666,7 @@ } }, "node_modules/metro": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { @@ -16018,34 +13684,34 @@ "debug": "^2.2.0", "denodeify": "^1.2.1", "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.20.1", + "hermes-parser": "0.23.0", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.6.3", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.80.9", - "metro-cache": "0.80.9", - "metro-cache-key": "0.80.9", - "metro-config": "0.80.9", - "metro-core": "0.80.9", - "metro-file-map": "0.80.9", - "metro-resolver": "0.80.9", - "metro-runtime": "0.80.9", - "metro-source-map": "0.80.9", - "metro-symbolicate": "0.80.9", - "metro-transform-plugins": "0.80.9", - "metro-transform-worker": "0.80.9", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-config": "0.80.10", + "metro-core": "0.80.10", + "metro-file-map": "0.80.10", + "metro-resolver": "0.80.10", + "metro-runtime": "0.80.10", + "metro-source-map": "0.80.10", + "metro-symbolicate": "0.80.10", + "metro-transform-plugins": "0.80.10", + "metro-transform-worker": "0.80.10", "mime-types": "^2.1.27", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", "serialize-error": "^2.1.0", "source-map": "^0.5.6", "strip-ansi": "^6.0.0", "throat": "^5.0.0", - "ws": "^7.5.1", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -16056,12 +13722,13 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { "@babel/core": "^7.20.0", - "hermes-parser": "0.20.1", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.23.0", "nullthrows": "^1.1.1" }, "engines": { @@ -16069,50 +13736,55 @@ } }, "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.20.1", + "version": "0.23.0", "license": "MIT", "peer": true }, "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.20.1", + "version": "0.23.0", "license": "MIT", "peer": true, "dependencies": { - "hermes-estree": "0.20.1" + "hermes-estree": "0.23.0" } }, "node_modules/metro-cache": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { - "metro-core": "0.80.9", - "rimraf": "^3.0.2" + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.80.10" }, "engines": { "node": ">=18" } }, "node_modules/metro-cache-key": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } }, "node_modules/metro-config": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { "connect": "^3.6.5", "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.6.3", - "metro": "0.80.9", - "metro-cache": "0.80.9", - "metro-core": "0.80.9", - "metro-runtime": "0.80.9" + "metro": "0.80.10", + "metro-cache": "0.80.10", + "metro-core": "0.80.10", + "metro-runtime": "0.80.10" }, "engines": { "node": ">=18" @@ -16165,25 +13837,27 @@ } }, "node_modules/metro-core": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.80.9" + "metro-resolver": "0.80.10" }, "engines": { "node": ">=18" } }, "node_modules/metro-file-map": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { "anymatch": "^3.0.3", "debug": "^2.2.0", "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", "invariant": "^2.2.4", "jest-worker": "^29.6.3", @@ -16200,10 +13874,11 @@ } }, "node_modules/metro-minify-terser": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" }, "engines": { @@ -16211,35 +13886,40 @@ } }, "node_modules/metro-resolver": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } }, "node_modules/metro-runtime": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.0.0", + "flow-enums-runtime": "^0.0.6" }, "engines": { "node": ">=18" } }, "node_modules/metro-source-map": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { "@babel/traverse": "^7.20.0", "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.80.9", + "metro-symbolicate": "0.80.10", "nullthrows": "^1.1.1", - "ob1": "0.80.9", + "ob1": "0.80.10", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -16256,12 +13936,13 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.80.9", + "metro-source-map": "0.80.10", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -16283,7 +13964,7 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { @@ -16291,6 +13972,7 @@ "@babel/generator": "^7.20.0", "@babel/template": "^7.0.0", "@babel/traverse": "^7.20.0", + "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" }, "engines": { @@ -16298,7 +13980,7 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, "dependencies": { @@ -16306,88 +13988,36 @@ "@babel/generator": "^7.20.0", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "metro": "0.80.9", - "metro-babel-transformer": "0.80.9", - "metro-cache": "0.80.9", - "metro-cache-key": "0.80.9", - "metro-minify-terser": "0.80.9", - "metro-source-map": "0.80.9", - "metro-transform-plugins": "0.80.9", + "flow-enums-runtime": "^0.0.6", + "metro": "0.80.10", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-minify-terser": "0.80.10", + "metro-source-map": "0.80.10", + "metro-transform-plugins": "0.80.10", "nullthrows": "^1.1.1" }, "engines": { "node": ">=18" } }, - "node_modules/metro/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/metro/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", "license": "MIT", "peer": true }, - "node_modules/metro/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/metro/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/metro/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/metro/node_modules/hermes-estree": { - "version": "0.20.1", + "version": "0.23.0", "license": "MIT", "peer": true }, "node_modules/metro/node_modules/hermes-parser": { - "version": "0.20.1", + "version": "0.23.0", "license": "MIT", "peer": true, "dependencies": { - "hermes-estree": "0.20.1" + "hermes-estree": "0.23.0" } }, "node_modules/metro/node_modules/source-map": { @@ -16398,19 +14028,8 @@ "node": ">=0.10.0" } }, - "node_modules/metro/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/metro/node_modules/ws": { - "version": "7.5.9", + "version": "7.5.10", "license": "MIT", "peer": true, "engines": { @@ -16430,7 +14049,7 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", + "version": "4.0.8", "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -16474,14 +14093,6 @@ "node": ">=6" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "3.1.2", "license": "ISC", @@ -16499,34 +14110,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/minipass": { - "version": "7.1.1", + "version": "7.1.2", "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/mixme": { - "version": "0.5.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "license": "MIT", @@ -16554,52 +14144,20 @@ "version": "0.5.1", "license": "BSD-3-Clause" }, - "node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/msgpackr": { - "version": "1.10.2", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", + "node_modules/mri": { + "version": "1.2.0", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" + "engines": { + "node": ">=4" } }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } + "node_modules/ms": { + "version": "2.0.0", + "license": "MIT" }, "node_modules/mssql": { - "version": "10.0.2", + "version": "10.0.4", "license": "MIT", "dependencies": { "@tediousjs/connection-string": "^0.5.0", @@ -16624,7 +14182,7 @@ } }, "node_modules/mssql/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -16644,8 +14202,7 @@ }, "node_modules/mustache": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", "peer": true, "bin": { "mustache": "bin/mustache" @@ -16672,6 +14229,24 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/native-duplexpair": { "version": "1.0.0", "license": "MIT" @@ -16734,14 +14309,6 @@ "version": "3.1.1", "license": "MIT" }, - "node_modules/node-addon-api": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16 || ^18 || >= 20" - } - }, "node_modules/node-dir": { "version": "0.1.17", "license": "MIT", @@ -16753,6 +14320,38 @@ "node": ">= 0.10.5" } }, + "node_modules/node-domexception": { + "version": "1.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "license": "MIT", @@ -16779,27 +14378,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.1" - }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/node-gyp-build-optional-packages/node_modules/detect-libc": { - "version": "2.0.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, "node_modules/node-html-parser": { "version": "6.1.13", "license": "MIT", @@ -16813,7 +14391,7 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.14", + "version": "2.0.18", "license": "MIT" }, "node_modules/node-stream-zip": { @@ -16829,37 +14407,121 @@ } }, "node_modules/normalize-package-data": { - "version": "2.5.0", + "version": "5.0.0", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", "dev": true, "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, "bin": { - "semver": "bin/semver" + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "license": "MIT", + "node_modules/npm-packlist/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-run-path": { @@ -16884,12 +14546,16 @@ }, "node_modules/nullthrows": { "version": "1.1.1", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/ob1": { - "version": "0.80.9", + "version": "0.80.10", "license": "MIT", "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } @@ -16909,8 +14575,11 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", + "version": "1.13.2", "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -17008,9 +14677,8 @@ } }, "node_modules/openai": { - "version": "4.68.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.68.1.tgz", - "integrity": "sha512-C9XmYRHgra1U1G4GGFNqRHQEjxhoOWbQYR85IibfJ0jpHUhOm4/lARiKaC/h3zThvikwH9Dx/XOKWPNVygIS3g==", + "version": "4.68.2", + "license": "Apache-2.0", "peer": true, "dependencies": { "@types/node": "^18.11.18", @@ -17034,9 +14702,8 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.58.tgz", - "integrity": "sha512-2ryJttbOAWCYuZMdk4rmZZ6oqE+GSL5LxbaTVe4PCs0FUrHObZZAQL4ihMw9/cH1Pn8lSQ9TXVhsM4LrnfZ0aA==", + "version": "18.19.59", + "license": "MIT", "peer": true, "dependencies": { "undici-types": "~5.26.4" @@ -17044,8 +14711,7 @@ }, "node_modules/openai/node_modules/agentkeepalive": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "license": "MIT", "peer": true, "dependencies": { "humanize-ms": "^1.2.1" @@ -17054,6 +14720,11 @@ "node": ">= 8.0.0" } }, + "node_modules/openai/node_modules/undici-types": { + "version": "5.26.5", + "license": "MIT", + "peer": true + }, "node_modules/openapi-typescript-codegen": { "version": "0.23.0", "dev": true, @@ -17141,69 +14812,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ordered-binary": { - "version": "1.5.1", - "dev": true, - "license": "MIT" - }, "node_modules/os-tmpdir": { "version": "1.0.2", "dev": true, @@ -17230,8 +14838,7 @@ }, "node_modules/p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -17270,8 +14877,7 @@ }, "node_modules/p-queue": { "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", "peer": true, "dependencies": { "eventemitter3": "^4.0.4", @@ -17286,8 +14892,7 @@ }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", "peer": true, "dependencies": { "@types/retry": "0.12.0", @@ -17299,8 +14904,7 @@ }, "node_modules/p-timeout": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", "peer": true, "dependencies": { "p-finally": "^1.0.0" @@ -17317,7 +14921,7 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.0.1", + "version": "7.0.2", "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", @@ -17325,16 +14929,16 @@ "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.2" + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" }, "engines": { "node": ">= 14" } }, "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -17363,6 +14967,10 @@ "node": ">= 14" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "2.0.1", "license": "(MIT AND Zlib)" @@ -17371,106 +14979,10 @@ "version": "5.4.1", "license": "MIT" }, - "node_modules/parcel": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.12.0.tgz", - "integrity": "sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==", - "dev": true, - "dependencies": { - "@parcel/config-default": "2.12.0", - "@parcel/core": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/package-manager": "2.12.0", - "@parcel/reporter-cli": "2.12.0", - "@parcel/reporter-dev-server": "2.12.0", - "@parcel/reporter-tracer": "2.12.0", - "@parcel/utils": "2.12.0", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0" - }, - "bin": { - "parcel": "lib/bin.js" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/parcel/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/parcel/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/parcel/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/parcel/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/parcel/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/parcel/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/parent-module": { "version": "1.0.1", - "dev": true, "license": "MIT", + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -17480,8 +14992,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -17495,6 +15007,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse5": { + "version": "5.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, "node_modules/parseurl": { "version": "1.3.3", "license": "MIT", @@ -17542,11 +15072,8 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "license": "ISC" }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -17561,9 +15088,25 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "engines": { + "node": ">= 14.16" + } + }, "node_modules/picocolors": { - "version": "1.0.1", - "license": "ISC" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -17660,101 +15203,83 @@ "node": ">= 0.4" } }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/posthtml": { - "version": "0.16.6", - "dev": true, - "license": "MIT", - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-parser": { - "version": "0.10.2", - "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "dev": true, - "license": "MIT", + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "is-json": "^2.0.1" + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=12" + "node": "^10 || ^12 || >=14" } }, - "node_modules/posthtml/node_modules/posthtml-parser": { - "version": "0.11.0", - "dev": true, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "htmlparser2": "^7.1.1" + "lilconfig": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, "node_modules/preferred-pm": { - "version": "3.1.3", + "version": "3.1.4", "dev": true, "license": "MIT", "dependencies": { "find-up": "^5.0.0", "find-yarn-workspace-root2": "1.2.16", "path-exists": "^4.0.0", - "which-pm": "2.0.0" + "which-pm": "^2.2.0" }, "engines": { "node": ">=10" @@ -17818,7 +15343,7 @@ } }, "node_modules/prettier": { - "version": "3.2.5", + "version": "3.3.3", "dev": true, "license": "MIT", "bin": { @@ -17875,8 +15400,9 @@ }, "node_modules/promise-polyfill": { "version": "8.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", + "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==", + "dev": true }, "node_modules/prompts": { "version": "2.4.2", @@ -17951,7 +15477,7 @@ } }, "node_modules/proxy-agent/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -17985,8 +15511,28 @@ "dev": true, "license": "ISC" }, + "node_modules/publint": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/publint/-/publint-0.2.12.tgz", + "integrity": "sha512-YNeUtCVeM4j9nDiTT2OPczmlyzOkIXNtdDZnSuajAxS/nZ6j3t7Vs9SUB4euQNddiltIwu7Tdd3s+hr08fAsMw==", + "dev": true, + "dependencies": { + "npm-packlist": "^5.1.3", + "picocolors": "^1.1.1", + "sade": "^1.8.1" + }, + "bin": { + "publint": "lib/cli.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://bjornlu.com/sponsor" + } + }, "node_modules/pubnub": { - "version": "8.2.1", + "version": "8.2.7", "license": "SEE LICENSE IN LICENSE", "dependencies": { "agentkeepalive": "^3.5.2", @@ -18032,6 +15578,8 @@ }, "node_modules/pure-rand": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -18043,7 +15591,7 @@ "url": "https://opencollective.com/fast-check" } ], - "license": "MIT" + "peer": true }, "node_modules/qs": { "version": "6.11.2", @@ -18092,14 +15640,6 @@ ], "license": "MIT" }, - "node_modules/quick-lru": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/railroad-diagrams": { "version": "1.0.0", "license": "CC0-1.0" @@ -18166,7 +15706,7 @@ } }, "node_modules/react": { - "version": "18.2.0", + "version": "18.3.1", "license": "MIT", "peer": true, "dependencies": { @@ -18177,7 +15717,7 @@ } }, "node_modules/react-devtools-core": { - "version": "5.2.0", + "version": "5.3.1", "license": "MIT", "peer": true, "dependencies": { @@ -18186,7 +15726,7 @@ } }, "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.9", + "version": "7.5.10", "license": "MIT", "peer": true, "engines": { @@ -18205,31 +15745,26 @@ } } }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "dev": true, - "license": "MIT" - }, "node_modules/react-is": { "version": "18.3.1", "license": "MIT" }, "node_modules/react-native": { - "version": "0.74.1", + "version": "0.75.2", "license": "MIT", "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.6.3", - "@react-native-community/cli": "13.6.6", - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-platform-ios": "13.6.6", - "@react-native/assets-registry": "0.74.83", - "@react-native/codegen": "0.74.83", - "@react-native/community-cli-plugin": "0.74.83", - "@react-native/gradle-plugin": "0.74.83", - "@react-native/js-polyfills": "0.74.83", - "@react-native/normalize-colors": "0.74.83", - "@react-native/virtualized-lists": "0.74.83", + "@react-native-community/cli": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native/assets-registry": "0.75.2", + "@react-native/codegen": "0.75.2", + "@react-native/community-cli-plugin": "0.75.2", + "@react-native/gradle-plugin": "0.75.2", + "@react-native/js-polyfills": "0.75.2", + "@react-native/normalize-colors": "0.75.2", + "@react-native/virtualized-lists": "0.75.2", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -18237,6 +15772,7 @@ "chalk": "^4.0.0", "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.6.3", "jsc-android": "^250231.0.0", @@ -18247,11 +15783,11 @@ "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", "promise": "^8.3.0", - "react-devtools-core": "^5.0.0", + "react-devtools-core": "^5.3.1", "react-refresh": "^0.14.0", - "react-shallow-renderer": "^16.15.0", "regenerator-runtime": "^0.13.2", "scheduler": "0.24.0-canary-efb381bbf-20230505", + "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", "ws": "^6.2.2", @@ -18265,7 +15801,7 @@ }, "peerDependencies": { "@types/react": "^18.2.6", - "react": "18.2.0" + "react": "^18.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -18306,59 +15842,6 @@ "@types/yargs-parser": "*" } }, - "node_modules/react-native/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-native/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/react-native/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/react-native/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT", - "peer": true - }, - "node_modules/react-native/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/react-native/node_modules/pretty-format": { "version": "26.6.2", "license": "MIT", @@ -18391,37 +15874,6 @@ "license": "MIT", "peer": true }, - "node_modules/react-native/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-refresh": { - "version": "0.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "license": "MIT", - "peer": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/read-package-json": { "version": "6.0.4", "dev": true, @@ -18445,37 +15897,24 @@ } }, "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.16", + "version": "10.4.5", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { "version": "3.0.2", "dev": true, @@ -18484,16 +15923,8 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/lru-cache": { - "version": "7.18.3", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "dev": true, "license": "ISC", "dependencies": { @@ -18506,66 +15937,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-package-json/node_modules/normalize-package-data": { - "version": "5.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, "node_modules/read-yaml-file": { "version": "1.1.0", "dev": true, @@ -18602,7 +15973,6 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -18641,18 +16011,6 @@ "node": ">=4" } }, - "node_modules/redent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/regenerate": { "version": "1.4.2", "license": "MIT", @@ -18752,7 +16110,8 @@ }, "node_modules/require-main-filename": { "version": "2.0.0", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/resolve": { "version": "1.22.8", @@ -18771,8 +16130,10 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "resolve-from": "^5.0.0" }, @@ -18789,8 +16150,10 @@ }, "node_modules/resolve.exports": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=10" } @@ -18815,8 +16178,7 @@ }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 4" @@ -18843,7 +16205,7 @@ } }, "node_modules/rfdc": { - "version": "1.3.1", + "version": "1.4.1", "license": "MIT" }, "node_modules/rimraf": { @@ -18861,10 +16223,10 @@ } }, "node_modules/rollup": { - "version": "4.22.5", + "version": "4.21.1", "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.5" }, "bin": { "rollup": "dist/bin/rollup" @@ -18874,22 +16236,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.5", - "@rollup/rollup-android-arm64": "4.22.5", - "@rollup/rollup-darwin-arm64": "4.22.5", - "@rollup/rollup-darwin-x64": "4.22.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", - "@rollup/rollup-linux-arm-musleabihf": "4.22.5", - "@rollup/rollup-linux-arm64-gnu": "4.22.5", - "@rollup/rollup-linux-arm64-musl": "4.22.5", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", - "@rollup/rollup-linux-riscv64-gnu": "4.22.5", - "@rollup/rollup-linux-s390x-gnu": "4.22.5", - "@rollup/rollup-linux-x64-gnu": "4.22.5", - "@rollup/rollup-linux-x64-musl": "4.22.5", - "@rollup/rollup-win32-arm64-msvc": "4.22.5", - "@rollup/rollup-win32-ia32-msvc": "4.22.5", - "@rollup/rollup-win32-x64-msvc": "4.22.5", + "@rollup/rollup-android-arm-eabi": "4.21.1", + "@rollup/rollup-android-arm64": "4.21.1", + "@rollup/rollup-darwin-arm64": "4.21.1", + "@rollup/rollup-darwin-x64": "4.21.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.1", + "@rollup/rollup-linux-arm-musleabihf": "4.21.1", + "@rollup/rollup-linux-arm64-gnu": "4.21.1", + "@rollup/rollup-linux-arm64-musl": "4.21.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1", + "@rollup/rollup-linux-riscv64-gnu": "4.21.1", + "@rollup/rollup-linux-s390x-gnu": "4.21.1", + "@rollup/rollup-linux-x64-gnu": "4.21.1", + "@rollup/rollup-linux-x64-musl": "4.21.1", + "@rollup/rollup-win32-arm64-msvc": "4.21.1", + "@rollup/rollup-win32-ia32-msvc": "4.21.1", + "@rollup/rollup-win32-x64-msvc": "4.21.1", "fsevents": "~2.3.2" } }, @@ -18937,9 +16299,9 @@ } }, "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", - "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz", + "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==", "cpu": [ "x64" ], @@ -18963,6 +16325,17 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/rss-parser/node_modules/xml2js": { + "version": "0.5.0", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/run-async": { "version": "3.0.0", "dev": true, @@ -18992,6 +16365,18 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "license": "MIT", @@ -19042,7 +16427,7 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.3", + "version": "2.5.0", "dev": true, "license": "MIT", "engines": { @@ -19054,7 +16439,7 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.3.0", + "version": "1.4.1", "license": "ISC" }, "node_modules/scheduler": { @@ -19150,7 +16535,8 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/set-function-length": { "version": "1.2.2", @@ -19236,6 +16622,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, "node_modules/signal-exit": { "version": "3.0.7", "license": "ISC" @@ -19262,6 +16654,17 @@ "version": "1.0.5", "license": "MIT" }, + "node_modules/skin-tone": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/slash": { "version": "3.0.0", "license": "MIT", @@ -19282,118 +16685,44 @@ "node": ">=6" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/smartwrap": { - "version": "2.0.2", - "dev": true, - "license": "MIT", "dependencies": { - "array.prototype.flat": "^1.2.3", - "breakword": "^1.0.5", - "grapheme-splitter": "^1.0.4", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1", - "yargs": "^15.1.0" - }, - "bin": { - "smartwrap": "src/terminal-adapter.js" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/smartwrap/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/smartwrap/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "color-name": "1.1.3" } }, - "node_modules/smartwrap/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/smartwrap/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" + "peer": true }, - "node_modules/smartwrap/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "peer": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/smartwrap/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/smartwrap/node_modules/yargs": { - "version": "15.4.1", - "dev": true, + "node_modules/smart-buffer": { + "version": "4.2.0", "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, "engines": { - "node": ">=8" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, "node_modules/smob": { @@ -19413,19 +16742,19 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.3", + "version": "8.0.4", "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" } }, "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -19451,19 +16780,20 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "devOptional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -19561,7 +16891,7 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", + "version": "3.0.20", "dev": true, "license": "CC0-1.0" }, @@ -19581,24 +16911,6 @@ "node": ">=8.6.0 <=20" } }, - "node_modules/srcset": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "dev": true, - "license": "MIT" - }, "node_modules/stack-trace": { "version": "0.0.10", "dev": true, @@ -19617,12 +16929,11 @@ "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true }, "node_modules/stackframe": { "version": "1.3.4", @@ -19655,6 +16966,12 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, "node_modules/stoppable": { "version": "1.1.0", "license": "MIT", @@ -19674,14 +16991,6 @@ "version": "1.0.3", "license": "MIT" }, - "node_modules/stream-transform": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mixme": "^0.5.1" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "license": "MIT", @@ -19691,8 +17000,10 @@ }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -19792,8 +17103,10 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -19805,21 +17118,12 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -19871,27 +17175,25 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.16", + "version": "10.4.5", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -19913,49 +17215,38 @@ "license": "MIT" }, "node_modules/supports-color": { - "version": "5.5.0", + "version": "7.2.0", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/svgo": { - "version": "3.3.2", - "dev": true, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.3.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, "engines": { - "node": ">=14.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/table": { @@ -19973,20 +17264,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/table/node_modules/astral-regex": { "version": "2.0.0", "dev": true, @@ -19995,22 +17272,6 @@ "node": ">=8" } }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "dev": true, @@ -20055,7 +17316,7 @@ } }, "node_modules/tedious/node_modules/bl": { - "version": "6.0.12", + "version": "6.0.14", "license": "MIT", "dependencies": { "@types/readable-stream": "^4.0.0", @@ -20191,14 +17452,6 @@ "node": ">=6.0.0" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", "license": "ISC", @@ -20222,7 +17475,7 @@ } }, "node_modules/terser": { - "version": "5.31.0", + "version": "5.31.6", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -20333,10 +17586,77 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/timsort": { - "version": "0.3.0", + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true + }, + "node_modules/tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true + }, + "node_modules/tinyglobby": { + "version": "0.2.9", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.2", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", + "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/tmp": { "version": "0.0.33", @@ -20383,20 +17703,11 @@ }, "node_modules/tree-kill": { "version": "1.2.2", - "dev": true, "license": "MIT", "bin": { "tree-kill": "cli.js" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/triple-beam": { "version": "1.4.1", "dev": true, @@ -20405,14 +17716,20 @@ "node": ">= 14.0.0" } }, + "node_modules/ts-expose-internals-conditionally": { + "version": "1.0.0-empty.0", + "dev": true, + "license": "MIT" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "license": "Apache-2.0" }, "node_modules/ts-jest": { "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", "dev": true, - "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "ejs": "^3.1.10", @@ -20456,36 +17773,29 @@ } } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/tslib": { - "version": "2.6.2", + "version": "2.7.0", "license": "0BSD" }, "node_modules/tsup": { - "version": "6.7.0", - "dev": true, + "version": "8.3.0", "license": "MIT", "dependencies": { - "bundle-require": "^4.0.0", - "cac": "^6.7.12", - "chokidar": "^3.5.1", - "debug": "^4.3.1", - "esbuild": "^0.17.6", - "execa": "^5.0.0", - "globby": "^11.0.3", - "joycon": "^3.0.1", - "postcss-load-config": "^3.0.1", + "bundle-require": "^5.0.0", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "consola": "^3.2.3", + "debug": "^4.3.5", + "esbuild": "^0.23.0", + "execa": "^5.1.1", + "joycon": "^3.1.1", + "picocolors": "^1.0.1", + "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", - "rollup": "^3.2.5", + "rollup": "^4.19.0", "source-map": "0.8.0-beta.0", - "sucrase": "^3.20.3", + "sucrase": "^3.35.0", + "tinyglobby": "^0.2.1", "tree-kill": "^1.2.2" }, "bin": { @@ -20493,14 +17803,18 @@ "tsup-node": "dist/cli-node.js" }, "engines": { - "node": ">=14.18" + "node": ">=18" }, "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", - "typescript": ">=4.1.0" + "typescript": ">=4.5.0" }, "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, "@swc/core": { "optional": true }, @@ -20513,8 +17827,7 @@ } }, "node_modules/tsup/node_modules/debug": { - "version": "4.3.4", - "dev": true, + "version": "4.3.6", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -20530,27 +17843,10 @@ }, "node_modules/tsup/node_modules/ms": { "version": "2.1.2", - "dev": true, "license": "MIT" }, - "node_modules/tsup/node_modules/rollup": { - "version": "3.29.4", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/tsup/node_modules/source-map": { "version": "0.8.0-beta.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" @@ -20561,7 +17857,6 @@ }, "node_modules/tsup/node_modules/tr46": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.1.0" @@ -20569,12 +17864,10 @@ }, "node_modules/tsup/node_modules/webidl-conversions": { "version": "4.0.2", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/tsup/node_modules/whatwg-url": { "version": "7.1.0", - "dev": true, "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", @@ -20582,116 +17875,24 @@ "webidl-conversions": "^4.0.2" } }, - "node_modules/tty-table": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "csv": "^5.5.3", - "kleur": "^4.1.5", - "smartwrap": "^2.0.2", - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.1", - "yargs": "^17.7.1" - }, - "bin": { - "tty-table": "adapters/terminal-adapter.js" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tty-table/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/tty-table/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tty-table/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tty-table/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/tty-table/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tty-table/node_modules/kleur": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tty-table/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/turbo": { - "version": "1.13.3", + "version": "1.13.4", "dev": true, "license": "MPL-2.0", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.13.3", - "turbo-darwin-arm64": "1.13.3", - "turbo-linux-64": "1.13.3", - "turbo-linux-arm64": "1.13.3", - "turbo-windows-64": "1.13.3", - "turbo-windows-arm64": "1.13.3" + "turbo-darwin-64": "1.13.4", + "turbo-darwin-arm64": "1.13.4", + "turbo-linux-64": "1.13.4", + "turbo-linux-arm64": "1.13.4", + "turbo-windows-64": "1.13.4", + "turbo-windows-arm64": "1.13.4" } }, "node_modules/turbo-darwin-arm64": { - "version": "1.13.3", + "version": "1.13.4", "cpu": [ "arm64" ], @@ -20798,7 +17999,7 @@ } }, "node_modules/typescript": { - "version": "5.6.2", + "version": "5.6.3", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -20809,7 +18010,7 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", + "version": "3.19.2", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -20845,7 +18046,7 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", + "version": "6.19.8", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -20856,6 +18057,14 @@ "node": ">=4" } }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "license": "MIT", @@ -20904,7 +18113,7 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", + "version": "1.1.0", "funding": [ { "type": "opencollective", @@ -20931,14 +18140,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/url-join": { "version": "4.0.1", "license": "MIT" @@ -20959,61 +18160,307 @@ "version": "1.0.2", "license": "MIT" }, - "node_modules/utility-types": { - "version": "3.11.0", + "node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.3.tgz", + "integrity": "sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==", "dev": true, - "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.6", + "pathe": "^1.1.2", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, "engines": { - "node": ">= 4" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "license": "MIT", + "node_modules/vite-node/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/uuid": { - "version": "9.0.1", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" + "node_modules/vite-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=10.12.0" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.3.tgz", + "integrity": "sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==", + "dev": true, + "dependencies": { + "@vitest/expect": "2.1.3", + "@vitest/mocker": "2.1.3", + "@vitest/pretty-format": "^2.1.3", + "@vitest/runner": "2.1.3", + "@vitest/snapshot": "2.1.3", + "@vitest/spy": "2.1.3", + "@vitest/utils": "2.1.3", + "chai": "^5.1.1", + "debug": "^4.3.6", + "magic-string": "^0.30.11", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.0", + "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0", + "vite-node": "2.1.3", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "2.1.3", + "@vitest/ui": "2.1.3", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/vitest/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "license": "MIT", + "ms": "^2.1.3" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/vitest/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/vlq": { "version": "1.0.1", "license": "MIT", @@ -21033,10 +18480,13 @@ "defaults": "^1.0.3" } }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14" + } }, "node_modules/webidl-conversions": { "version": "3.0.1", @@ -21103,10 +18553,11 @@ }, "node_modules/which-module": { "version": "2.0.1", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/which-pm": { - "version": "2.0.0", + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { @@ -21134,12 +18585,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wildcard-match": { "version": "5.1.3", "license": "ISC" }, "node_modules/winston": { - "version": "3.13.0", + "version": "3.14.2", "dev": true, "license": "MIT", "dependencies": { @@ -21147,7 +18614,7 @@ "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.4.0", + "logform": "^2.6.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", @@ -21160,18 +18627,26 @@ } }, "node_modules/winston-transport": { - "version": "4.7.0", + "version": "4.7.1", "dev": true, "license": "MIT", "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", + "logform": "^2.6.1", + "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" }, "engines": { "node": ">= 12.0.0" } }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "dev": true, @@ -21208,60 +18683,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, "node_modules/wrappy": { "version": "1.0.2", "license": "ISC" @@ -21278,7 +18699,7 @@ } }, "node_modules/ws": { - "version": "6.2.2", + "version": "6.2.3", "license": "MIT", "peer": true, "dependencies": { @@ -21289,7 +18710,6 @@ "version": "0.20.2", "resolved": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", "integrity": "sha512-+nKZ39+nvK7Qq6i0PvWWRA4j/EkfWOtkP/YhMtupm+lJIiHxUrgTr1CcKv1nBk1rHtkRRQ3O2+Ih/q/sA+FXZA==", - "license": "Apache-2.0", "bin": { "xlsx": "bin/xlsx.njs" }, @@ -21315,7 +18735,7 @@ } }, "node_modules/xml2js": { - "version": "0.5.0", + "version": "0.6.2", "license": "MIT", "dependencies": { "sax": ">=0.6.0", @@ -21360,7 +18780,7 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.4.2", + "version": "2.5.0", "license": "ISC", "peer": true, "bin": { @@ -21387,17 +18807,6 @@ } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "license": "ISC", "engines": { @@ -21423,8 +18832,7 @@ }, "node_modules/zod-to-json-schema": { "version": "3.23.3", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.3.tgz", - "integrity": "sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==", + "license": "ISC", "peer": true, "peerDependencies": { "zod": "^3.23.3" @@ -21439,8 +18847,8 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/plugin-record-hook": "^1.7.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@flatfile/plugin-record-hook": "^1.7.1" }, "engines": { "node": ">= 16" @@ -21460,6 +18868,7 @@ "modern-async": "^2.0.4" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" }, "engines": { @@ -21475,8 +18884,8 @@ "version": "3.0.1", "license": "ISC", "devDependencies": { - "@flatfile/plugin-record-hook": "^1.7.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@flatfile/plugin-record-hook": "^1.7.1" }, "engines": { "node": ">= 16" @@ -21497,7 +18906,7 @@ }, "devDependencies": { "@faker-js/faker": "^7.6.0", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -21517,6 +18926,7 @@ "remeda": "^1.14.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@types/flat": "^5.0.2", "@types/papaparse": "^5.3.7" }, @@ -21532,8 +18942,8 @@ "version": "1.2.1", "license": "ISC", "devDependencies": { - "@flatfile/configure": "^1.0.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@flatfile/configure": "^1.0.1" }, "engines": { "node": ">= 16" @@ -21548,6 +18958,7 @@ "version": "1.0.1", "license": "ISC", "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/plugin-job-handler": "^0.6.1", "@flatfile/util-common": "^1.4.1" }, @@ -21572,7 +18983,8 @@ "mssql": "^10.0.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@types/mssql": "^9.1.5" }, "engines": { "node": ">= 18" @@ -21593,7 +19005,10 @@ "graphql": "^16.8.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" + }, + "engines": { + "node": ">= 16" }, "peerDependencies": { "@flatfile/listener": "^1.1.0" @@ -21607,7 +19022,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" }, "engines": { @@ -21626,7 +19041,7 @@ "@flatfile/util-extractor": "^2.1.2" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -21640,6 +19055,9 @@ "@flatfile/plugin-space-configure": "^0.6.1", "cross-fetch": "^4.0.0" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21657,6 +19075,9 @@ "@flatfile/plugin-job-handler": "^0.6.1", "@mergeapi/merge-node-client": "^1.0.4" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21674,7 +19095,7 @@ "cross-fetch": "^4.0.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -21697,6 +19118,7 @@ "remeda": "^1.14.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@types/fs-extra": "^11.0.1" }, "engines": { @@ -21740,6 +19162,9 @@ "name": "@flatfile/plugin-psv-extractor", "version": "1.9.1", "license": "ISC", + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21756,7 +19181,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -21778,7 +19203,7 @@ "modern-async": "^2.0.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -21796,9 +19221,9 @@ "@flatfile/plugin-job-handler": "^0.6.1" }, "devDependencies": { - "@flatfile/api": "^1.9.19", - "@flatfile/rollup-config": "0.1.1", - "@flatfile/utils-testing": "^0.3.1" + "@flatfile/api": "^1.8.9", + "@flatfile/bundler-config-tsup": "^0.0.0", + "@flatfile/utils-testing": "^0.2.0" }, "engines": { "node": ">= 16" @@ -21808,6 +19233,22 @@ "@flatfile/listener": "^1.1.0" } }, + "plugins/space-configure/node_modules/@flatfile/utils-testing": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@flatfile/utils-testing/-/utils-testing-0.2.1.tgz", + "integrity": "sha512-Zq/i/dXBgN4CeKaVgu8jOMKO/5+kw4XvzCpDTuU8Od1dXHhrNvrgx5T7OYUHcIhksSiJS5EwmBW5vkyQW0vLFw==", + "dev": true, + "dependencies": { + "@flatfile/api": "^1.9.13", + "@flatfile/listener": "^1.0.1", + "@flatfile/listener-driver-pubsub": "^2.0.0", + "@jest/globals": "^29.6.4", + "cross-fetch": "^4.0.0" + }, + "engines": { + "node": ">= 16" + } + }, "plugins/sql-ddl-converter": { "name": "@flatfile/plugin-convert-sql-ddl", "version": "0.2.1", @@ -21817,6 +19258,9 @@ "@flatfile/plugin-space-configure": "^0.6.1", "sql-ddl-to-json-schema": "^4.1.0" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21829,6 +19273,9 @@ "name": "@flatfile/plugin-tsv-extractor", "version": "1.8.1", "license": "ISC", + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21848,7 +19295,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" }, "engines": { @@ -21866,7 +19313,7 @@ "cross-fetch": "^4.0.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", "jest-fetch-mock": "^3.0.3" }, @@ -21886,7 +19333,7 @@ "cross-fetch": "^4.0.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "jest-fetch-mock": "^3.0.3" }, "engines": { @@ -21906,6 +19353,9 @@ "remeda": "^1.14.0", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21922,6 +19372,9 @@ "remeda": "^1.24.0", "xml-json-format": "^1.0.8" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -21940,7 +19393,9 @@ "js-yaml": "^4.1.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", + "@types/js-yaml": "^4.0.9", "express": "^4.18.2", "jest-fetch-mock": "^3.0.3" }, @@ -21978,6 +19433,7 @@ "modern-async": "^2.0.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", "@types/adm-zip": "^0.4.3" }, @@ -21993,6 +19449,9 @@ "name": "@flatfile/common-plugin-utils", "version": "1.0.2", "license": "ISC", + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" } @@ -22006,7 +19465,7 @@ "cross-fetch": "^4.0.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -22028,6 +19487,9 @@ "@flatfile/util-common": "^1.4.1", "@flatfile/util-file-buffer": "^0.4.1" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -22043,6 +19505,9 @@ "dependencies": { "cross-fetch": "^4.0.0" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -22054,6 +19519,9 @@ "name": "@flatfile/util-file-buffer", "version": "0.4.1", "license": "ISC", + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" }, @@ -22070,7 +19538,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -22090,6 +19558,9 @@ "@jest/globals": "^29.6.4", "cross-fetch": "^4.0.0" }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + }, "engines": { "node": ">= 16" } @@ -22102,7 +19573,10 @@ "@flatfile/plugin-record-hook": "^1.7.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-rollup": "^0.1.1" + }, + "engines": { + "node": ">= 16" }, "peerDependencies": { "@flatfile/listener": "^1.0.5" @@ -22118,7 +19592,7 @@ "date-fns": "^4.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" }, "engines": { "node": ">= 16" @@ -22143,7 +19617,7 @@ "@flatfile/plugin-record-hook": "^1.7.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -22161,9 +19635,12 @@ "isbn3": "^1.2.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" }, + "engines": { + "node": ">= 16" + }, "peerDependencies": { "@flatfile/listener": "^1.1.0" } @@ -22176,7 +19653,7 @@ "@flatfile/plugin-record-hook": "^1.7.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -22194,7 +19671,7 @@ "libphonenumber-js": "^1.11.10" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "engines": { "node": ">= 16" @@ -22211,7 +19688,10 @@ "@flatfile/plugin-record-hook": "^1.7.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" + }, + "engines": { + "node": ">= 16" }, "peerDependencies": { "@flatfile/listener": "^1.0.5" diff --git a/package.json b/package.json index d8f8b16ef..a8025652a 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@flatfile/plugins", "version": "0.0.0", "description": "A library of open-source plugins for developers working with the Flatfile Platform.", + "type": "module", "engines": { "node": ">=16" }, @@ -19,20 +20,20 @@ "validate/*" ], "scripts": { - "clean": "find ./ '(' -name 'node_modules' -o -name 'dist' -o -name '.turbo' -o -name '.parcel-cache' ')' -type d -exec rm -rf {} +", - "test": "turbo run test", + "clean": "find ./ '(' -name 'node_modules' -o -name 'dist' -o -name '.turbo' ')' -type d -exec rm -rf {} +", "build": "turbo build", - "turbo:test": "turbo test", "build:prod": "turbo build:prod", "build:clean": "npm run clean && npm i && turbo build", + "build:prod:clean": "npm run clean && npm i && turbo build:prod", + "test": "turbo run test", "test:unit": "turbo run test:unit", "test:e2e": "turbo run test:e2e", - "build:prod:clean": "npm run clean && npm i && turbo build:prod", "lint": "prettier --check **/*.ts", "format": "prettier --log-level warn --write **/*.ts", "changeset": "changeset", "changeset-apply": "changeset version", - "release": "NODE_ENV=production turbo build && changeset publish" + "release": "NODE_ENV=production turbo build && changeset publish", + "checks": "turbo checks" }, "repository": { "type": "git", @@ -51,27 +52,25 @@ }, "homepage": "https://github.com/FlatFilers/flatfile-plugins#readme", "devDependencies": { + "@arethetypeswrong/cli": "^0.15.4", "@changesets/cli": "^2.26.1", "@flatfile/listener": "^1.1.0", "@flatfile/utils-testing": "^0.3.1", "@octokit/rest": "^21.0.2", - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", - "@types/jest": "^29.5.13", "@types/node": "^20.2.5", "dotenv": "^16.4.5", "dotenv-expand": "^10.0.0", "dotenv-flow": "^3.2.0", - "jest": "^29.5.0", - "parcel": "latest", "prettier": "^3.2.5", + "publint": "^0.2.12", "ts-jest": "^29.2.5", "turbo": "^1.10.2", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "vite": "^5.4.10", + "vitest": "^2.1.3" }, "optionalDependencies": { "@flatfile/changelog": "^1.0.3", - "@parcel/watcher-linux-x64-glibc": "^2.3.0", "@rollup/rollup-linux-x64-gnu": "^4.8.0" } } diff --git a/plugins/autocast/jest.config.js b/plugins/autocast/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/autocast/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/autocast/package.json b/plugins/autocast/package.json index f62199470..95d855f62 100644 --- a/plugins/autocast/package.json +++ b/plugins/autocast/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "transform" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -49,7 +57,7 @@ "author": "Alex Hollenbeck", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/autocast" }, "license": "ISC", @@ -64,6 +72,6 @@ }, "devDependencies": { "@flatfile/plugin-record-hook": "^1.7.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/autocast/rollup.config.mjs b/plugins/autocast/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/autocast/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/autocast/src/autocast.plugin.spec.ts b/plugins/autocast/src/autocast.plugin.spec.ts index 533ef8ef4..5954b88c8 100644 --- a/plugins/autocast/src/autocast.plugin.spec.ts +++ b/plugins/autocast/src/autocast.plugin.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it, test } from 'vitest' import { FALSY_VALUES, TRUTHY_VALUES, @@ -8,52 +9,50 @@ import { } from './autocast.plugin' describe('autocast plugin', () => { - describe('cast functions', () => { - describe('should return the string', () => { - expect(castString('foo')).toBe('foo') - }) - describe('should return a numeric value to string', () => { - expect(castString(1)).toBe('1') - expect(castString(1.1)).toBe('1.1') - expect(castString(-1)).toBe('-1') - }) - describe('should return a boolean string', () => { - expect(castString(true)).toBe('true') - expect(castString(false)).toBe('false') - }) - describe.each(['1', 1])('should return a number', (num) => { - expect(castNumber(num)).toBe(1) - }) - describe.each(['1.1', 1.1])('should return a decimal', (num) => { - expect(castNumber(num)).toBe(1.1) - }) - it('string numbers with commas should return a number', () => { - expect(castNumber('1,100')).toBe(1100) - }) - describe.each(TRUTHY_VALUES)('should return a truthy boolean', (truthy) => { - expect(castBoolean(truthy)).toBe(true) - }) - describe.each(FALSY_VALUES)('should return a falsy boolean', (falsy) => { - expect(castBoolean(falsy)).toBe(false) - }) - describe.each([ - '2023-08-16', - '08-16-2023', - '08/16/2023', - 'Aug 16, 2023', - 'August 16, 2023', - '2023-08-16T00:00:00.000Z', - 1692144000000, - '1692144000000', - ])('should return a date', (date) => { - expect(castDate(date)).toBe('Wed, 16 Aug 2023 00:00:00 GMT') - }) - describe.each([ - [castNumber, 'number'], - [castBoolean, 'boolean'], - [castDate, 'date'], - ])('is uncastable; should throw error', (castFn, type) => { - expect(() => castFn('foo')).toThrow(`Invalid ${type}`) - }) + it('should return the string', () => { + expect(castString('foo')).toBe('foo') + }) + it('should return a numeric value to string', () => { + expect(castString(1)).toBe('1') + expect(castString(1.1)).toBe('1.1') + expect(castString(-1)).toBe('-1') + }) + it('should return a boolean string', () => { + expect(castString(true)).toBe('true') + expect(castString(false)).toBe('false') + }) + test.each(['1', 1])('should return a number', (num) => { + expect(castNumber(num)).toBe(1) + }) + test.each(['1.1', 1.1])('should return a decimal', (num) => { + expect(castNumber(num)).toBe(1.1) + }) + it('string numbers with commas should return a number', () => { + expect(castNumber('1,100')).toBe(1100) + }) + test.each(TRUTHY_VALUES)('should return a truthy boolean', (truthy) => { + expect(castBoolean(truthy)).toBe(true) + }) + test.each(FALSY_VALUES)('should return a falsy boolean', (falsy) => { + expect(castBoolean(falsy)).toBe(false) + }) + test.each([ + '2023-08-16', + '08-16-2023', + '08/16/2023', + 'Aug 16, 2023', + 'August 16, 2023', + '2023-08-16T00:00:00.000Z', + 1692144000000, + '1692144000000', + ])('should return a date', (date) => { + expect(castDate(date)).toBe('Wed, 16 Aug 2023 00:00:00 GMT') + }) + test.each([ + [castNumber, 'number'], + [castBoolean, 'boolean'], + [castDate, 'date'], + ])('is uncastable; should throw error', (castFn, type) => { + expect(() => castFn('foo')).toThrow(`Invalid ${type}`) }) }) diff --git a/plugins/autocast/src/autocast.plugin.ts b/plugins/autocast/src/autocast.plugin.ts index 9b5f5ce6d..e84601bb8 100644 --- a/plugins/autocast/src/autocast.plugin.ts +++ b/plugins/autocast/src/autocast.plugin.ts @@ -2,7 +2,7 @@ import { FlatfileClient } from '@flatfile/api' import type { TRecordValue } from '@flatfile/hooks' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' import type { FlatfileRecord } from '@flatfile/plugin-record-hook' -import { bulkRecordHookPlugin } from '@flatfile/plugin-record-hook' +import { bulkRecordHook } from '@flatfile/plugin-record-hook' import { logInfo } from '@flatfile/util-common' const api = new FlatfileClient() @@ -18,10 +18,10 @@ export function autocast( ) { return (listener: FlatfileListener) => { listener.use( - bulkRecordHookPlugin( + bulkRecordHook( sheetSlug, - async (records: FlatfileRecord[], event: FlatfileEvent) => { - const sheetId = event.context.sheetId + async (records: FlatfileRecord[], event?: FlatfileEvent) => { + const { sheetId } = event?.context const sheet = await api.sheets.get(sheetId) if (!sheet) { logInfo('@flatfile/plugin-autocast', 'Failed to fetch sheet') @@ -48,7 +48,7 @@ export function autocast( } catch (e) { record.addError( field.key, - e.message || 'Failed to cast value' + (e as Error).message || 'Failed to cast value' ) } } diff --git a/plugins/autocast/tsup.config.mjs b/plugins/autocast/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/autocast/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/automap/jest.config.js b/plugins/automap/jest.config.js deleted file mode 100644 index 5bdc4324f..000000000 --- a/plugins/automap/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 120_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/automap/package.json b/plugins/automap/package.json index e2f3c912a..a2df49eca 100644 --- a/plugins/automap/package.json +++ b/plugins/automap/package.json @@ -6,18 +6,45 @@ "registryMetadata": { "category": "automation" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -29,7 +56,7 @@ "author": "Flatfile", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/automap" }, "license": "ISC", @@ -42,6 +69,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/utils-testing": "^0.3.1" + "@flatfile/utils-testing": "^0.3.1", + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/automap/src/automap.plugin.e2e.spec.ts b/plugins/automap/src/automap.plugin.e2e.spec.ts index bc30ff212..0e34be61c 100644 --- a/plugins/automap/src/automap.plugin.e2e.spec.ts +++ b/plugins/automap/src/automap.plugin.e2e.spec.ts @@ -1,18 +1,46 @@ import { Flatfile, FlatfileClient } from '@flatfile/api' import { getEnvironmentId, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' import fs from 'fs' import path from 'path' +import { + afterAll, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest' import { automap } from './automap.plugin' const api = new FlatfileClient() describe('automap() e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId: string @@ -27,7 +55,7 @@ describe('automap() e2e', () => { }) describe('record created - static sheet slug', () => { - const mockFn = jest.fn() + const mockFn = vi.fn() beforeEach(async () => { const stream = fs.createReadStream(path.join(__dirname, '../test.csv')) @@ -66,7 +94,7 @@ describe('automap() e2e', () => { }) describe('record created - dynamic sheet slug', () => { - const mockFn = jest.fn() + const mockFn = vi.fn() beforeEach(async () => { const stream = fs.createReadStream(path.join(__dirname, '../test.csv')) diff --git a/plugins/automap/src/automap.service.ts b/plugins/automap/src/automap.service.ts index 56b7661c9..05289d9cd 100644 --- a/plugins/automap/src/automap.service.ts +++ b/plugins/automap/src/automap.service.ts @@ -1,8 +1,9 @@ +import type { AutomapOptions } from './automap.plugin' + import { Flatfile, FlatfileClient } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' import { logError, logInfo, logWarn } from '@flatfile/util-common' import { asyncMap } from 'modern-async' -import { AutomapOptions } from './automap.plugin' const api = new FlatfileClient() @@ -84,7 +85,7 @@ export class AutomapService { return } - destinationSheet = destinationWorkbook.sheets.find( + destinationSheet = destinationWorkbook.sheets!.find( (s) => s.name === target || s.id === target || s.config.slug === target ) @@ -96,7 +97,7 @@ export class AutomapService { const { data: job } = await api.jobs.create({ type: 'workbook', operation: 'map', - source: file.workbookId, + source: file.workbookId!, managed: true, destination: destinationWorkbook.id, @@ -331,7 +332,7 @@ export class AutomapService { : defaultTargetSheet if (sheets.length === 1 && !this.isNil(targetSheet)) { - return [{ source: sheets[0].id, target: targetSheet }] + return [{ source: sheets[0]!.id, target: targetSheet }] } else { return [] } diff --git a/plugins/automap/tsup.config.mjs b/plugins/automap/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/automap/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/constraints/jest.config.js b/plugins/constraints/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/constraints/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/constraints/package.json b/plugins/constraints/package.json index 8c31b2db0..c78a3945d 100644 --- a/plugins/constraints/package.json +++ b/plugins/constraints/package.json @@ -1,41 +1,50 @@ { "name": "@flatfile/plugin-constraints", "version": "3.0.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/constraints", "description": "A plugin for extending blueprint with external constraints", + "type": "module", "engines": { "node": ">= 16" }, "registryMetadata": { "category": "records" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -44,7 +53,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/constraints" }, "license": "ISC", @@ -56,6 +65,6 @@ }, "devDependencies": { "@flatfile/plugin-record-hook": "^1.7.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/constraints/rollup.config.mjs b/plugins/constraints/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/constraints/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/constraints/src/external.constraint.e2e.spec.ts b/plugins/constraints/src/external.constraint.e2e.spec.ts index 24c0a51aa..95ab990ef 100644 --- a/plugins/constraints/src/external.constraint.e2e.spec.ts +++ b/plugins/constraints/src/external.constraint.e2e.spec.ts @@ -3,14 +3,42 @@ import { createRecords, deleteSpace, getRecords, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, +} from 'vitest' import { externalConstraint } from './external.constraint' -describe('externalConstraint()', () => { - const listener = setupListener() +describe.skip('externalConstraint()', () => { + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId: string let sheetId: string @@ -27,7 +55,7 @@ describe('externalConstraint()', () => { beforeEach(() => { listener.use( - externalConstraint('test', (value, key, { config, record }) => { + externalConstraint('test', (value, key, { record }) => { if (value === 'John Doe') { record.addError(key, 'No Johns please') record.set(key, value.toUpperCase()) diff --git a/plugins/constraints/src/external.constraint.ts b/plugins/constraints/src/external.constraint.ts index 80ab29f86..0323bb7c3 100644 --- a/plugins/constraints/src/external.constraint.ts +++ b/plugins/constraints/src/external.constraint.ts @@ -1,10 +1,7 @@ import type { Flatfile } from '@flatfile/api' import { FlatfileClient } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' -import { - FlatfileRecord, - bulkRecordHookPlugin, -} from '@flatfile/plugin-record-hook' +import { FlatfileRecord, bulkRecordHook } from '@flatfile/plugin-record-hook' import { getConstraints } from './get.constraints' const api = new FlatfileClient() @@ -33,26 +30,34 @@ export const externalConstraint = ( }) listener.use( - bulkRecordHookPlugin('**', async (records, event) => { - const schema: Flatfile.SheetConfig = event.cache.get('sheet-schema') + bulkRecordHook( + '**', + async (records: FlatfileRecord[], event?: FlatfileEvent) => { + if (!event) { + throw new Error('Event is required') + } + const schema: Flatfile.SheetConfig = event.cache.get('sheet-schema') - const constraints = getConstraints(schema, validator) + const constraints: Array< + [Flatfile.Property, Flatfile.Constraint.External] + > = getConstraints(schema, validator) - constraints.forEach(([property, constraint]) => { - records.forEach((record) => { - try { - cb(record.get(property.key), property.key, { - config: constraint.config, - record, - property, - event, - }) - } catch (e) { - record.addError(property.key, String(e)) - } + constraints.forEach(([property, constraint]) => { + records.forEach((record) => { + try { + cb(record.get(property.key), property.key, { + config: constraint.config, + record, + property, + event, + }) + } catch (e) { + record.addError(property.key, String(e)) + } + }) }) - }) - }) + } + ) ) } } diff --git a/plugins/constraints/src/external.sheet.constraint.e2e.spec.ts b/plugins/constraints/src/external.sheet.constraint.e2e.spec.ts index e8da307e0..d2a07845e 100644 --- a/plugins/constraints/src/external.sheet.constraint.e2e.spec.ts +++ b/plugins/constraints/src/external.sheet.constraint.e2e.spec.ts @@ -3,14 +3,42 @@ import { createRecords, deleteSpace, getRecords, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, +} from 'vitest' import { externalSheetConstraint } from './external.sheet.constraint' -describe('externalConstraint()', () => { - const listener = setupListener() +describe.skip('externalConstraint()', () => { + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId: string let sheetId: string diff --git a/plugins/constraints/src/external.sheet.constraint.ts b/plugins/constraints/src/external.sheet.constraint.ts index 3d40a1dc4..4b0e2aefe 100644 --- a/plugins/constraints/src/external.sheet.constraint.ts +++ b/plugins/constraints/src/external.sheet.constraint.ts @@ -2,10 +2,7 @@ import type { Flatfile } from '@flatfile/api' import { FlatfileClient } from '@flatfile/api' import type { TRecordValue } from '@flatfile/hooks' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' -import { - FlatfileRecord, - bulkRecordHookPlugin, -} from '@flatfile/plugin-record-hook' +import { FlatfileRecord, bulkRecordHook } from '@flatfile/plugin-record-hook' import { getSheetConstraints } from './get.constraints' const api = new FlatfileClient() @@ -42,29 +39,40 @@ export const externalSheetConstraint = ( }) listener.use( - bulkRecordHookPlugin('**', async (records, event) => { - const schema: Flatfile.SheetConfig = event.cache.get('sheet-schema') + bulkRecordHook( + '**', + async (records: FlatfileRecord[], event?: FlatfileEvent) => { + if (!event) { + throw new Error('Event is required') + } - const constraints = getSheetConstraints(schema, validator) + const schema: Flatfile.SheetConfig = event.cache.get('sheet-schema') - constraints.forEach((constraint) => { - const fields = constraint.fields || [] - records.forEach((record) => { - try { - cb(partialObject(record, fields), constraint.fields, { - config: constraint.config, - record, - properties: partialProperties(schema, fields), - event, - }) - } catch (e) { - fields.forEach((key) => { - record.addError(key, String(e)) - }) - } + const constraints = getSheetConstraints(schema, validator) + + constraints.forEach((constraint) => { + const fields = constraint.fields || [] + records.forEach((record) => { + try { + cb( + partialObject(record, fields || []), + constraint.fields || [], + { + config: constraint.config, + record, + properties: partialProperties(schema, fields || []), + event, + } + ) + } catch (e) { + fields.forEach((key: string) => { + record.addError(key, String(e)) + }) + } + }) }) - }) - }) + } + ) ) } } diff --git a/plugins/constraints/tsup.config.mjs b/plugins/constraints/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/constraints/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/dedupe/jest.config.js b/plugins/dedupe/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/dedupe/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/dedupe/package.json b/plugins/dedupe/package.json index 2f6fa4a0e..d7f86c704 100644 --- a/plugins/dedupe/package.json +++ b/plugins/dedupe/package.json @@ -1,41 +1,50 @@ { "name": "@flatfile/plugin-dedupe", "version": "1.2.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/dedupe", "description": "Dedupe records in a sheet via a sheet level custom action.", "registryMetadata": { "category": "transform" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -47,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/dedupe" }, "license": "ISC", @@ -61,6 +70,6 @@ }, "devDependencies": { "@faker-js/faker": "^7.6.0", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/dedupe/rollup.config.mjs b/plugins/dedupe/rollup.config.mjs deleted file mode 100644 index 3a3d7fa35..000000000 --- a/plugins/dedupe/rollup.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const external = ['@flatfile/plugin-record-hook'] - -const config = buildConfig({ external }) - -export default config diff --git a/plugins/dedupe/src/dedupe.plugin.ts b/plugins/dedupe/src/dedupe.plugin.ts index 6187625d6..3aa6039b8 100644 --- a/plugins/dedupe/src/dedupe.plugin.ts +++ b/plugins/dedupe/src/dedupe.plugin.ts @@ -1,6 +1,7 @@ import type { Flatfile } from '@flatfile/api' -import { FlatfileClient } from '@flatfile/api' import type { FlatfileEvent } from '@flatfile/listener' + +import { FlatfileClient } from '@flatfile/api' import { processRecords } from '@flatfile/util-common' import { keepFirst } from './keep.first.logic' import { keepLast } from './keep.last.logic' @@ -37,7 +38,8 @@ export const dedupe = async ( } await tick(0, 'Dedupe started') - const coreKeepOptionSelected = ['first', 'last'].includes(opts.keep) + const coreKeepOptionSelected = + opts.keep && ['first', 'last'].includes(opts.keep) if (coreKeepOptionSelected && opts.on === undefined) { throw new Error(`\`on\` is required when \`keep\` is ${opts.keep}`) } @@ -48,7 +50,7 @@ export const dedupe = async ( config: { fields }, }, } = await api.sheets.get(sheetId) - const field = fields.find((f) => f.key === opts.on) + const field = fields.find((f: Flatfile.Property) => f.key === opts.on) if (field === undefined) { throw new Error(`Field "${opts.on}" not found`) } @@ -64,20 +66,22 @@ export const dedupe = async ( totalPageCount?: number ) => { let removeThese: string[] = [] - if (opts.keep === 'first') { + if (opts.keep === 'first' && opts.on) { removeThese = keepFirst(records, opts.on, uniques) - } else if (opts.keep === 'last') { + } else if (opts.keep === 'last' && opts.on) { removeThese = keepLast(records, opts.on, uniques) } else if (opts.custom) { removeThese = opts.custom(records, uniques) } duplicates = duplicates.concat(removeThese) - const progress = Math.min((pageNumber / totalPageCount) * 100, 99) - await tick( - progress, - `Processing ${records.length} records on page ${pageNumber} of ${totalPageCount}` - ) + if (pageNumber && totalPageCount) { + const progress = Math.min((pageNumber / totalPageCount) * 100, 99) + await tick( + progress, + `Processing ${records.length} records on page ${pageNumber} of ${totalPageCount}` + ) + } } ) diff --git a/plugins/dedupe/src/fake.data.ts b/plugins/dedupe/src/fake.data.ts index 5392a76ac..b653130cd 100644 --- a/plugins/dedupe/src/fake.data.ts +++ b/plugins/dedupe/src/fake.data.ts @@ -1,5 +1,6 @@ +import type { Flatfile } from '@flatfile/api' + import { faker } from '@faker-js/faker' -import { Flatfile } from '@flatfile/api' export const records: Flatfile.RecordsWithLinks = [ { diff --git a/plugins/dedupe/src/index.ts b/plugins/dedupe/src/index.ts index f2f71f51c..6b92e0a34 100644 --- a/plugins/dedupe/src/index.ts +++ b/plugins/dedupe/src/index.ts @@ -1,7 +1,9 @@ import type { Flatfile } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { PluginOptions } from './dedupe.plugin' + import { jobHandler } from '@flatfile/plugin-job-handler' -import { PluginOptions, dedupe } from './dedupe.plugin' +import { dedupe } from './dedupe.plugin' /** * Dedupe plugin for Flatfile. diff --git a/plugins/dedupe/src/keep.first.logic.spec.ts b/plugins/dedupe/src/keep.first.logic.spec.ts index 9262e85ef..0b0e68e8a 100644 --- a/plugins/dedupe/src/keep.first.logic.spec.ts +++ b/plugins/dedupe/src/keep.first.logic.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { records } from './fake.data' import { keepFirst } from './keep.first.logic' diff --git a/plugins/dedupe/src/keep.first.logic.ts b/plugins/dedupe/src/keep.first.logic.ts index cb850bd54..9a2c8bba9 100644 --- a/plugins/dedupe/src/keep.first.logic.ts +++ b/plugins/dedupe/src/keep.first.logic.ts @@ -1,4 +1,4 @@ -import { Flatfile } from '@flatfile/api' +import type { Flatfile } from '@flatfile/api' /** * Keep the first record encountered based on the specified key. diff --git a/plugins/dedupe/src/keep.last.logic.spec.ts b/plugins/dedupe/src/keep.last.logic.spec.ts index c18037ba3..d5a2d5a4b 100644 --- a/plugins/dedupe/src/keep.last.logic.spec.ts +++ b/plugins/dedupe/src/keep.last.logic.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { records } from './fake.data' import { keepLast } from './keep.last.logic' diff --git a/plugins/dedupe/src/keep.last.logic.ts b/plugins/dedupe/src/keep.last.logic.ts index 407dfa8af..69d67ee06 100644 --- a/plugins/dedupe/src/keep.last.logic.ts +++ b/plugins/dedupe/src/keep.last.logic.ts @@ -1,4 +1,4 @@ -import { Flatfile } from '@flatfile/api' +import type { Flatfile } from '@flatfile/api' /** * Keep the last record encountered based on the specified key. @@ -12,7 +12,10 @@ export const keepLast = ( ): Array => { try { const seen = records.reduce( - (acc, record) => { + ( + acc: Record>, + record: Flatfile.RecordWithLinks + ) => { if (record.values[key].value == null) { return acc } diff --git a/plugins/dedupe/tsup.config.mjs b/plugins/dedupe/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/dedupe/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/delimiter-extractor/jest.config.js b/plugins/delimiter-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/delimiter-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/delimiter-extractor/package.json b/plugins/delimiter-extractor/package.json index c1f745043..01a892c42 100644 --- a/plugins/delimiter-extractor/package.json +++ b/plugins/delimiter-extractor/package.json @@ -6,18 +6,37 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -29,7 +48,7 @@ "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/delimiter-parser" }, "license": "ISC", @@ -43,6 +62,7 @@ }, "devDependencies": { "@types/flat": "^5.0.2", - "@types/papaparse": "^5.3.7" + "@types/papaparse": "^5.3.7", + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/delimiter-extractor/src/header.detection.ts b/plugins/delimiter-extractor/src/header.detection.ts index 557356d8a..2696e9561 100644 --- a/plugins/delimiter-extractor/src/header.detection.ts +++ b/plugins/delimiter-extractor/src/header.detection.ts @@ -146,7 +146,7 @@ class OriginalDetector extends Headerizer { // This implementation simply returns an explicit list of headers // it was provided with. class ExplicitHeaders extends Headerizer { - headers: string[] + headers: string[] = [] constructor(private readonly options: ExplicitHeadersOptions) { super() @@ -198,7 +198,7 @@ class SpecificRows extends Headerizer { if (header[i] === '') { header[i] = row[i].trim() } else { - header[i] = `${header[i].trim()} ${row[i].trim()}` + header[i] = `${header[i]!.trim()} ${row[i]!.trim()}` } letters[i] = indexToLetters(i) } @@ -305,10 +305,10 @@ class DataRowAndSubHeaderDetection extends Headerizer { // check if any rows after the header fuzzy match with the // chosen header, indicating it's a sub header for (let i = skip; i < rows.length; i++) { - const row = rows[i] - if (countNonEmptyCells(header) === countNonEmptyCells(row)) { + const row = rows[i] as string[] + if (row && countNonEmptyCells(header) === countNonEmptyCells(row)) { const fuzzyMatches = header.filter((cell, index) => { - const rowCell = row[index].trim() + const rowCell = row[index]!.trim() return rowCell .split(/\s+/) .every((word) => cell.toLowerCase().includes(word.toLowerCase())) diff --git a/plugins/delimiter-extractor/src/index.ts b/plugins/delimiter-extractor/src/index.ts index 7f4e96a1c..0b085491b 100644 --- a/plugins/delimiter-extractor/src/index.ts +++ b/plugins/delimiter-extractor/src/index.ts @@ -1,6 +1,7 @@ -import { Flatfile } from '@flatfile/api' +import type { Flatfile } from '@flatfile/api' +import type { GetHeadersOptions } from './header.detection' + import { Extractor } from '@flatfile/util-extractor' -import { GetHeadersOptions } from './header.detection' import { parseBuffer } from './parser' export enum NativeFileTypes { diff --git a/plugins/delimiter-extractor/src/parser.spec.ts b/plugins/delimiter-extractor/src/parser.spec.ts index b0ceccefe..a11fa408a 100644 --- a/plugins/delimiter-extractor/src/parser.spec.ts +++ b/plugins/delimiter-extractor/src/parser.spec.ts @@ -1,5 +1,6 @@ import * as fs from 'fs' import * as path from 'path' +import { describe, expect, it, test, vi } from 'vitest' import { parseBuffer } from './parser' describe('parser', () => { @@ -38,7 +39,7 @@ describe('parser', () => { Tenant: { value: 'false' }, }, ], - metadata: undefined, + metadata: null, }, }) }) @@ -129,7 +130,7 @@ describe('parser', () => { }) test('empty buffer', async () => { const emptyBuffer = Buffer.from('', 'utf8') - const logSpy = jest.spyOn(global.console, 'log') + const logSpy = vi.spyOn(global.console, 'log') const parsedBuffer = await parseBuffer(emptyBuffer, { delimiter: '#' }) expect(logSpy).toHaveBeenCalledWith('No data found in the file') expect(parsedBuffer).toEqual({}) diff --git a/plugins/delimiter-extractor/src/parser.ts b/plugins/delimiter-extractor/src/parser.ts index 5e93fff08..59d7723d2 100644 --- a/plugins/delimiter-extractor/src/parser.ts +++ b/plugins/delimiter-extractor/src/parser.ts @@ -1,10 +1,12 @@ -import { Flatfile } from '@flatfile/api' -import { WorkbookCapture } from '@flatfile/util-extractor' -import Papa, { ParseResult } from 'papaparse' +import type { Flatfile } from '@flatfile/api' +import type { WorkbookCapture } from '@flatfile/util-extractor' +import type { ParseResult } from 'papaparse' +import type { DelimiterOptions } from '.' + +import Papa from 'papaparse' import { mapKeys, mapValues } from 'remeda' import { Readable } from 'stream' import { Headerizer } from './header.detection' -import { DelimiterOptions } from './index' type ParseBufferOptions = Omit & { readonly headerSelectionEnabled?: boolean @@ -17,7 +19,7 @@ export async function parseBuffer( try { const skipEmptyLines = options?.headerSelectionEnabled ? false - : options?.skipEmptyLines ?? false + : (options?.skipEmptyLines ?? false) const fileContents = buffer.toString('utf8') const results: ParseResult> = Papa.parse( fileContents, @@ -60,12 +62,12 @@ export async function parseBuffer( // return if there are no rows if (rows.length === 0) { - return + return {} as WorkbookCapture } while ( rows.length > 0 && - Object.values(rows[rows.length - 1]).every(isNullOrWhitespace) + Object.values(rows[rows.length - 1]!).every(isNullOrWhitespace) ) { rows.pop() } @@ -85,13 +87,13 @@ export async function parseBuffer( return !isEmpty }) .map((row) => { - const mappedRow = mapKeys(row, (key) => headers[key]) + const mappedRow = mapKeys(row, (key) => headers[key]!) return mapValues(mappedRow, (value) => ({ value: transform(value), })) as Flatfile.RecordData }) - let metadata: { rowHeaders: number[] } | null + let metadata: { rowHeaders: number[] } | null = null if (options?.headerSelectionEnabled) { metadata = { @@ -100,22 +102,25 @@ export async function parseBuffer( } const sheetName = 'Sheet1' - return { + const workbook: WorkbookCapture = { [sheetName]: { - headers, + headers: Object.values(headers), data, - metadata, + metadata: metadata!, }, - } as WorkbookCapture + } + return workbook } catch (error) { console.log('An error occurred:', error) throw error } } -function prependNonUniqueHeaderColumns(record: string[]): string[] { +function prependNonUniqueHeaderColumns( + record: string[] +): Record { const counts: Record = {} - const result: string[] = [] + const result: Record = {} for (const [key, value] of Object.entries(record)) { const cleanValue = value?.toString().replace('*', '') if (cleanValue && counts[value]) { diff --git a/plugins/delimiter-extractor/tsup.config.mjs b/plugins/delimiter-extractor/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/delimiter-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/plugins/dxp-configure/jest.config.js b/plugins/dxp-configure/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/dxp-configure/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/dxp-configure/package.json b/plugins/dxp-configure/package.json index 22d6209cb..83f827a2d 100644 --- a/plugins/dxp-configure/package.json +++ b/plugins/dxp-configure/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "utilities" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/dxp-configure" }, "license": "ISC", @@ -64,6 +72,6 @@ }, "devDependencies": { "@flatfile/configure": "^1.0.1", - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/dxp-configure/rollup.config.mjs b/plugins/dxp-configure/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/dxp-configure/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/dxp-configure/src/index.ts b/plugins/dxp-configure/src/index.ts index f33cae7fb..e41dedd66 100644 --- a/plugins/dxp-configure/src/index.ts +++ b/plugins/dxp-configure/src/index.ts @@ -31,7 +31,7 @@ export const dxpConfigure = ( } = workbook.options const sheets = Object.keys(originalSheets) - .map((key) => originalSheets[key].toBlueprint(namespace, key)) + .map((key) => originalSheets[key]!.toBlueprint(namespace, key)) .map((sheet) => ({ ...sheet, actions: sheet.actions || [] })) const { data: newWorkbook } = await api.workbooks.create({ diff --git a/plugins/dxp-configure/src/shim.target.spec.ts b/plugins/dxp-configure/src/shim.target.spec.ts index 0fd27417a..af9491f3b 100644 --- a/plugins/dxp-configure/src/shim.target.spec.ts +++ b/plugins/dxp-configure/src/shim.target.spec.ts @@ -1,4 +1,5 @@ -import { shimTarget } from './shim.target' // replace 'your-file' with actual filename +import { describe, expect, it } from 'vitest' +import { shimTarget } from './shim.target' describe('shimTarget()', () => { it('returns "space(*)" for a file domain', () => { diff --git a/plugins/dxp-configure/tsup.config.mjs b/plugins/dxp-configure/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/dxp-configure/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/export-workbook/jest.config.js b/plugins/export-workbook/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/export-workbook/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/export-workbook/package.json b/plugins/export-workbook/package.json index 4eb7e864f..ad24a5783 100644 --- a/plugins/export-workbook/package.json +++ b/plugins/export-workbook/package.json @@ -6,37 +6,37 @@ "registryMetadata": { "category": "export" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [ @@ -46,7 +46,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/export-workbook" }, "license": "ISC", @@ -60,6 +60,7 @@ }, "devDependencies": { "@flatfile/plugin-job-handler": "^0.6.1", - "@flatfile/util-common": "^1.4.1" + "@flatfile/util-common": "^1.4.1", + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/export-workbook/rollup.config.mjs b/plugins/export-workbook/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/export-workbook/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/export-workbook/src/index.ts b/plugins/export-workbook/src/index.ts index 35c652b19..546b6f85f 100644 --- a/plugins/export-workbook/src/index.ts +++ b/plugins/export-workbook/src/index.ts @@ -1,8 +1,9 @@ import type { Flatfile } from '@flatfile/api' import type { FlatfileEvent } from '@flatfile/listener' +import type { PluginOptions } from './plugin' import { jobHandler } from '@flatfile/plugin-job-handler' -import { PluginOptions, exportRecords } from './plugin' +import { exportRecords } from './plugin' /** * Export records plugin for Flatfile. diff --git a/plugins/export-workbook/src/plugin.ts b/plugins/export-workbook/src/plugin.ts index 0b3e9ea7f..16435724d 100644 --- a/plugins/export-workbook/src/plugin.ts +++ b/plugins/export-workbook/src/plugin.ts @@ -50,12 +50,12 @@ export const exportRecords = async ( const { data: workbook } = await api.workbooks.get(workbookId) const { data: sheets } = await api.sheets.list({ workbookId }) - const sanitizedName = sanitize(workbook.name) + const sanitizedName = sanitize(workbook.name!) if (options.debug) { const meta = R.pipe( sheets, - R.reduce((acc, sheet) => { + R.reduce((acc: string, sheet: { name: any; id: any }) => { return acc + `\n\t'${sheet.name}' (${sheet.id})` }, '') ) @@ -69,7 +69,7 @@ export const exportRecords = async ( const xlsxWorkbook = XLSX.utils.book_new() for (const [sheetIndex, sheet] of sheets.entries()) { - if (options.excludedSheets?.includes(sheet.config.slug)) { + if (options.excludedSheets?.includes(sheet.config.slug!)) { if (options.debug) { logInfo( '@flatfile/plugin-export-workbook', @@ -105,10 +105,10 @@ export const exportRecords = async ( v: Array.isArray(value) ? value.join(', ') : value, c: [], } - if (R.length(messages) > 0) { + if (messages && R.length(messages) > 0) { cell.c = messages.map((m) => ({ a: 'Flatfile', - t: `[${m.type.toUpperCase()}]: ${m.message}`, + t: `[${m.type?.toUpperCase()}]: ${m.message}`, T: true, })) cell.c.hidden = true @@ -265,9 +265,9 @@ export const exportRecords = async ( }, }, } - } catch (error) { - logError('@flatfile/plugin-export-workbook', error) + } catch (e) { + logError('@flatfile/plugin-export-workbook', (e as Error).message) - throw new Error((error as Error).message) + throw new Error((e as Error).message) } } diff --git a/plugins/export-workbook/tsup.config.mjs b/plugins/export-workbook/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/export-workbook/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/plugins/foreign-db-extractor/jest.config.cjs b/plugins/foreign-db-extractor/jest.config.cjs deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/foreign-db-extractor/jest.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/foreign-db-extractor/package.json b/plugins/foreign-db-extractor/package.json index 222fffe1b..b406353ee 100644 --- a/plugins/foreign-db-extractor/package.json +++ b/plugins/foreign-db-extractor/package.json @@ -1,51 +1,59 @@ { "name": "@flatfile/plugin-foreign-db-extractor", "version": "0.2.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/foreign-db-extractor", "description": "A plugin for extracting MSSQL DBs from a .bak file.", "registryMetadata": { "category": "extractor" }, + "type": "module", "engines": { "node": ">= 18" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" - }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [], "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/foreign-db-extractor" }, - "type": "module", "license": "ISC", "dependencies": { "mssql": "^10.0.1", @@ -56,6 +64,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0", + "@types/mssql": "^9.1.5" } } diff --git a/plugins/foreign-db-extractor/rollup.config.mjs b/plugins/foreign-db-extractor/rollup.config.mjs deleted file mode 100644 index 3ce39000a..000000000 --- a/plugins/foreign-db-extractor/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({ includeBrowser: false }) - -export default config diff --git a/plugins/foreign-db-extractor/src/database.poll.status.ts b/plugins/foreign-db-extractor/src/database.poll.status.ts index b02fcc74c..a27be6a50 100644 --- a/plugins/foreign-db-extractor/src/database.poll.status.ts +++ b/plugins/foreign-db-extractor/src/database.poll.status.ts @@ -57,7 +57,9 @@ export async function getDatabaseInfo( } return jsonResponse.data.task } catch (e) { - throw new Error(`An error occurred retrieving DB info: ${e.message}`) + throw new Error( + `An error occurred retrieving DB info: ${(e as Error).message}` + ) } } diff --git a/plugins/foreign-db-extractor/src/database.restore.ts b/plugins/foreign-db-extractor/src/database.restore.ts index a9efb17dd..a5d0995b5 100644 --- a/plugins/foreign-db-extractor/src/database.restore.ts +++ b/plugins/foreign-db-extractor/src/database.restore.ts @@ -47,7 +47,9 @@ export async function restoreDatabase( timeout: 15000, } } catch (e) { - throw new Error(`An error occurred during DB restore: ${e.message}`) + throw new Error( + `An error occurred during DB restore: ${(e as Error).message}` + ) } } diff --git a/plugins/foreign-db-extractor/src/index.ts b/plugins/foreign-db-extractor/src/index.ts index 43cc30d64..62d44896c 100644 --- a/plugins/foreign-db-extractor/src/index.ts +++ b/plugins/foreign-db-extractor/src/index.ts @@ -51,7 +51,7 @@ export const foreignDBExtractor = () => { } try { const job = await api.jobs.get(jobId) - const { fileName } = job.data.input + const { fileName } = job.data.input as { fileName: string } // Step 2.1: Create a workbook so we can use the workbookId to name the database await tick(5, 'Creating workbook') @@ -72,18 +72,18 @@ export const foreignDBExtractor = () => { // Step 2.3: Restore DB from Backup on S3 await tick(50, 'Restoring database') - const connectionConfig: sql.config = await restoreDatabase( + const connectionConfig = (await restoreDatabase( workbook.id, fileId - ) + )) as sql.config // Step 2.4: Poll for database availability await tick(60, 'Polling for database availability') - await pollDatabaseStatus(connectionConfig.database) + await pollDatabaseStatus(connectionConfig.database!) // Step 2.5: Retrieve user credentials for the database await tick(85, 'Retrieving database user credentials') - const user = (await pollForUser(connectionConfig.database)) as DBUser + const user = (await pollForUser(connectionConfig.database!)) as DBUser connectionConfig.user = user.username connectionConfig.password = user.password @@ -123,7 +123,7 @@ export const foreignDBExtractor = () => { status: 'failed', }) await api.jobs.fail(jobId, { - info: e.message, + info: (e as Error).message, }) } } diff --git a/plugins/foreign-db-extractor/src/s3.upload.ts b/plugins/foreign-db-extractor/src/s3.upload.ts index 9220e2d6b..3070145f8 100644 --- a/plugins/foreign-db-extractor/src/s3.upload.ts +++ b/plugins/foreign-db-extractor/src/s3.upload.ts @@ -28,7 +28,9 @@ export async function s3Upload( } return jsonResponse.data.success } catch (e) { - throw new Error(`An error occurred during S3 upload: ${e.message}`) + throw new Error( + `An error occurred during S3 upload: ${(e as Error).message}` + ) } } diff --git a/plugins/foreign-db-extractor/tsup.config.mjs b/plugins/foreign-db-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/foreign-db-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/graphql-schema/jest.config.cjs b/plugins/graphql-schema/jest.config.cjs deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/graphql-schema/jest.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/graphql-schema/package.json b/plugins/graphql-schema/package.json index 071fa9f32..e89fe10d8 100644 --- a/plugins/graphql-schema/package.json +++ b/plugins/graphql-schema/package.json @@ -1,32 +1,50 @@ { "name": "@flatfile/plugin-graphql-schema", "version": "1.3.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/graphql-schema", "description": "A plugin for converting GraphQL to Flatfile blueprint.", "registryMetadata": { "category": "core" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs", - "default": "./dist/index.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -35,10 +53,9 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/graphql-schema" }, - "type": "module", "license": "ISC", "dependencies": { "@flatfile/plugin-space-configure": "^0.6.1", @@ -50,6 +67,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/graphql-schema/rollup.config.mjs b/plugins/graphql-schema/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/graphql-schema/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/graphql-schema/src/generate.field.spec.ts b/plugins/graphql-schema/src/generate.field.spec.ts index 5f0e2ba66..400514c98 100644 --- a/plugins/graphql-schema/src/generate.field.spec.ts +++ b/plugins/graphql-schema/src/generate.field.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it, vi } from 'vitest' import { generateField } from './generate.field' describe('generateField', () => { @@ -59,7 +60,7 @@ describe('generateField', () => { type: { kind: 'UNSUPPORTED' }, description: 'An unsupported field', } - const consoleSpy = jest.spyOn(console, 'log') + const consoleSpy = vi.spyOn(console, 'log') expect(generateField(field, 'TestSheet')).toBeNull() expect(consoleSpy).toHaveBeenCalledWith( @@ -147,7 +148,7 @@ describe('generateField', () => { type: { kind: 'STRANGE', name: 'StrangeType' }, description: 'A strange field', } - const consoleSpy = jest.spyOn(console, 'log') + const consoleSpy = vi.spyOn(console, 'log') expect(generateField(field, 'WeirdSheet')).toBeNull() expect(consoleSpy).toHaveBeenCalledWith( expect.stringContaining("'STRANGE' is unsupported.") diff --git a/plugins/graphql-schema/tsup.config.mjs b/plugins/graphql-schema/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/graphql-schema/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/job-handler/jest.config.js b/plugins/job-handler/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/job-handler/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/job-handler/package.json b/plugins/job-handler/package.json index 8bff875f3..2130a7ea5 100644 --- a/plugins/job-handler/package.json +++ b/plugins/job-handler/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "core" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/job-handler" }, "license": "ISC", @@ -60,7 +68,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" } } diff --git a/plugins/job-handler/rollup.config.mjs b/plugins/job-handler/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/job-handler/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/job-handler/src/job.handler.e2e.spec.ts b/plugins/job-handler/src/job.handler.e2e.spec.ts index ec4863009..91b0a5bf4 100644 --- a/plugins/job-handler/src/job.handler.e2e.spec.ts +++ b/plugins/job-handler/src/job.handler.e2e.spec.ts @@ -1,10 +1,52 @@ -import { deleteSpace, setupListener, setupSpace } from '@flatfile/utils-testing' +import { PubSubDriver } from '@flatfile/listener-driver-pubsub' +import { + deleteSpace, + getEnvironmentId, + setupListener, + setupSpace, + TestListener, +} from '@flatfile/utils-testing' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + test, + vi, +} from 'vitest' import { jobHandler } from '.' describe('JobHandler plugin e2e tests', () => { describe('jobHandler() successful', () => { - const listener = setupListener() - const mockFn = jest.fn() + const listener = new TestListener() + const environmentId = getEnvironmentId() + console.log('environmentId', environmentId) + if (!environmentId) { + throw new Error('environmentId is not defined') + } + + const driver = new PubSubDriver(environmentId) + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) + + const mockFn = vi.fn() let spaceId: string beforeAll(async () => { @@ -26,9 +68,33 @@ describe('JobHandler plugin e2e tests', () => { }) describe('jobHandler() failure', () => { - const logErrorSpy = jest.spyOn(global.console, 'error') - const listener = setupListener() - const mockErrorFn = jest.fn(() => { + const listener = new TestListener() + const environmentId = getEnvironmentId() + if (!environmentId) { + throw new Error('environmentId is not defined') + } + + const driver = new PubSubDriver(environmentId) + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) + + const logErrorSpy = vi.spyOn(global.console, 'error') + const mockErrorFn = vi.fn(() => { throw new Error('trigger job:failed') }) let spaceId: string diff --git a/plugins/job-handler/tsup.config.mjs b/plugins/job-handler/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/job-handler/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/json-extractor/jest.config.cjs b/plugins/json-extractor/jest.config.cjs deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/json-extractor/jest.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/json-extractor/package.json b/plugins/json-extractor/package.json index 101b3cc19..cfe56b0b3 100644 --- a/plugins/json-extractor/package.json +++ b/plugins/json-extractor/package.json @@ -6,38 +6,45 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "type": "module", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -49,7 +56,7 @@ "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/json-extractor" }, "license": "ISC", @@ -57,6 +64,6 @@ "@flatfile/util-extractor": "^2.1.2" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/json-extractor/rollup.config.mjs b/plugins/json-extractor/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/json-extractor/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/json-extractor/src/parser.spec.ts b/plugins/json-extractor/src/parser.spec.ts index 229f42d31..793e38338 100644 --- a/plugins/json-extractor/src/parser.spec.ts +++ b/plugins/json-extractor/src/parser.spec.ts @@ -1,5 +1,6 @@ import * as fs from 'fs' import * as path from 'path' +import { describe, expect, it, test } from 'vitest' import { parseBuffer } from './parser' describe('parser', function () { diff --git a/plugins/json-extractor/src/parser.ts b/plugins/json-extractor/src/parser.ts index c0f6c8264..d5b755be8 100644 --- a/plugins/json-extractor/src/parser.ts +++ b/plugins/json-extractor/src/parser.ts @@ -1,4 +1,4 @@ -import { WorkbookCapture } from '@flatfile/util-extractor' +import type { WorkbookCapture } from '@flatfile/util-extractor' export function parseBuffer(buffer: Buffer): WorkbookCapture { try { @@ -42,13 +42,16 @@ export function parseBuffer(buffer: Buffer): WorkbookCapture { // Flatten and filter all rows const filteredData = filteredResults.map((row) => { const flattedRow = flattenObject(row) - return headers.reduce((filteredRow, header) => { - const cell = flattedRow[header] - filteredRow[header] = { - value: Array.isArray(cell) ? JSON.stringify(cell) : cell, - } - return filteredRow - }, {}) + return headers.reduce( + (filteredRow: Record, header: string) => { + const cell = flattedRow[header] + filteredRow[header] = { + value: Array.isArray(cell) ? JSON.stringify(cell) : cell, + } + return filteredRow + }, + {} + ) }) return { diff --git a/plugins/json-extractor/tsup.config.mjs b/plugins/json-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/json-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/json-schema/jest.config.js b/plugins/json-schema/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/json-schema/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/json-schema/package.json b/plugins/json-schema/package.json index 453f6cdad..5870b9da4 100644 --- a/plugins/json-schema/package.json +++ b/plugins/json-schema/package.json @@ -6,18 +6,45 @@ "registryMetadata": { "category": "schema-converters" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -30,7 +57,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/openapi-schema-converter" }, "license": "ISC", @@ -41,5 +68,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/json-schema/src/index.ts b/plugins/json-schema/src/index.ts index 0d63f63fb..d0f22f214 100644 --- a/plugins/json-schema/src/index.ts +++ b/plugins/json-schema/src/index.ts @@ -1,14 +1,16 @@ import type { Flatfile } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { JsonSetupFactory } from './setup.factory' + import { configureSpace } from '@flatfile/plugin-space-configure' -import { JsonSetupFactory, generateSetup } from './setup.factory' +import { generateSetup } from './setup.factory' export function configureSpaceWithJsonSchema( setupFactory: JsonSetupFactory, callback?: ( event: FlatfileEvent, workbookIds: string[], - tick: (progress?: number, message?: string) => Promise + tick: (progress: number, message?: string) => Promise ) => any | Promise ) { return async function (listener: FlatfileListener) { diff --git a/plugins/json-schema/src/setup.factory.spec.ts b/plugins/json-schema/src/setup.factory.spec.ts index 80421bc5f..ec9a23e7e 100644 --- a/plugins/json-schema/src/setup.factory.spec.ts +++ b/plugins/json-schema/src/setup.factory.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { generateSetup } from './setup.factory' describe('generateSetup()', () => { diff --git a/plugins/json-schema/src/setup.factory.ts b/plugins/json-schema/src/setup.factory.ts index 12b7bc72c..f184e605a 100644 --- a/plugins/json-schema/src/setup.factory.ts +++ b/plugins/json-schema/src/setup.factory.ts @@ -1,5 +1,6 @@ -import { Flatfile } from '@flatfile/api' -import { SetupFactory } from '@flatfile/plugin-space-configure' +import type { Flatfile } from '@flatfile/api' +import type { SetupFactory } from '@flatfile/plugin-space-configure' + import fetch from 'cross-fetch' export type JsonSetupFactory = { @@ -26,7 +27,6 @@ export async function generateSetup( const sheets = await Promise.all( workbook.sheets.map(async (partialSheetConfig: PartialSheetConfig) => { const model = await getModel(partialSheetConfig.source) - delete partialSheetConfig.source const fields = await generateFields(model) return { diff --git a/plugins/json-schema/tsup.config.mjs b/plugins/json-schema/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/json-schema/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/merge-connection/jest.config.js b/plugins/merge-connection/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/merge-connection/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/merge-connection/package.json b/plugins/merge-connection/package.json index 488331bcc..882569ba0 100644 --- a/plugins/merge-connection/package.json +++ b/plugins/merge-connection/package.json @@ -1,29 +1,57 @@ { "name": "@flatfile/plugin-connect-via-merge", "version": "0.4.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/merge-connection", "description": "A connect plugin for Merge.dev", "registryMetadata": { "category": "connect" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [], "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/merge" }, "license": "ISC", @@ -35,5 +63,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/merge-connection/src/create.workbook.ts b/plugins/merge-connection/src/create.workbook.ts index 86a1a67dd..487248cc0 100644 --- a/plugins/merge-connection/src/create.workbook.ts +++ b/plugins/merge-connection/src/create.workbook.ts @@ -1,12 +1,13 @@ import type { Flatfile } from '@flatfile/api' -import { FlatfileClient } from '@flatfile/api' import type { FlatfileEvent } from '@flatfile/listener' -import { +import type { PartialSheetConfig, SetupFactory, - generateSetup, } from '@flatfile/plugin-convert-openapi-schema' -import { MergeClient } from '@mergeapi/merge-node-client' +import type { MergeClient } from '@mergeapi/merge-node-client' + +import { FlatfileClient } from '@flatfile/api' +import { generateSetup } from '@flatfile/plugin-convert-openapi-schema' import { CATEGORY_MODELS, MERGE_ACCESS_KEY, @@ -76,15 +77,15 @@ export function handleCreateConnectedWorkbooks() { mergeClient, // Merge doesn't seem to care what category is used here, it will return the same results regardless // And since we are searching for the category, we'll just use the first one the integration has listed - categories[0] + categories![0] ) await new Promise((resolve) => setTimeout(resolve, SYNC_RETRY_INTERVAL_MS) ) - } while (results.syncedModels.length === 0) + } while (results?.syncedModels.length === 0) // The modelId is prefix with the category for the given accountToken - const category = results.syncedModels[0].modelId.split('.')[0] + const category = results?.syncedModels[0].modelId.split('.')[0] if (!category) { throw new Error('Error retrieving category') } @@ -93,9 +94,9 @@ export function handleCreateConnectedWorkbooks() { // Using the category, we can fetch Merge's schema provided through their OpenAPI spec and convert // it to a Flatfile sheet config - const models = CATEGORY_MODELS[category] + const models = CATEGORY_MODELS[category as keyof typeof CATEGORY_MODELS] const sheets: PartialSheetConfig[] = Object.keys(models).map((key) => { - const model = models[key] + const model = models[key as keyof typeof models] // Add index signature to allow indexing with a string return { name: key, slug: model, @@ -113,7 +114,8 @@ export function handleCreateConnectedWorkbooks() { }) const config = typeof setup === 'function' ? await setup(event) : setup config.workbooks.map((workbook) => { - workbook.sheets.map((sheet) => { + workbook.sheets?.map((sheet) => { + // Add nullish coalescing operator here sheet.fields.map((field) => { // Merge's OpenAPI spec uses snake_case, but Merge's API uses camelCase field.key = snakeToCamel(field.key) diff --git a/plugins/merge-connection/src/index.ts b/plugins/merge-connection/src/index.ts index 03d675a8b..523ccbe82 100644 --- a/plugins/merge-connection/src/index.ts +++ b/plugins/merge-connection/src/index.ts @@ -1,3 +1 @@ -import mergePlugin from './merge.plugin' - -export default mergePlugin +export * as mergePlugin from './merge.plugin' diff --git a/plugins/merge-connection/src/merge.plugin.ts b/plugins/merge-connection/src/merge.plugin.ts index 0062882d0..a13eb3d54 100644 --- a/plugins/merge-connection/src/merge.plugin.ts +++ b/plugins/merge-connection/src/merge.plugin.ts @@ -3,7 +3,7 @@ import { jobHandler } from '@flatfile/plugin-job-handler' import { handleCreateConnectedWorkbooks } from './create.workbook' import { handleConnectedWorkbookSync } from './sync.workbook' -export default function mergePlugin() { +export function mergePlugin() { return (listener: FlatfileListener) => { // The `space:createConnectedWorkbook` job is fired when a Merge connection has been made in the UI. // `handleCreateConnectedWorkbooks()` creates the connected workbook mirroring the Merge schema. @@ -23,3 +23,5 @@ export default function mergePlugin() { ) } } + +export default mergePlugin diff --git a/plugins/merge-connection/src/poll.for.merge.sync.ts b/plugins/merge-connection/src/poll.for.merge.sync.ts index c70da147c..17a4b6afc 100644 --- a/plugins/merge-connection/src/poll.for.merge.sync.ts +++ b/plugins/merge-connection/src/poll.for.merge.sync.ts @@ -14,8 +14,12 @@ export async function waitForMergeSync( let syncStatusComplete = false while (attempts <= MAX_SYNC_ATTEMPTS && !syncStatusComplete) { - const { allComplete, completedSyncs, totalModels, syncedModels } = - await checkAllSyncsComplete(mergeClient, category) + const result = await checkAllSyncsComplete(mergeClient, category) + if (!result) { + attempts++ + continue + } + const { allComplete, completedSyncs, totalModels, syncedModels } = result if (!syncStatusComplete) { syncStatusComplete = allComplete diff --git a/plugins/merge-connection/src/sync.status.check.ts b/plugins/merge-connection/src/sync.status.check.ts index ae252fb17..e6418409f 100644 --- a/plugins/merge-connection/src/sync.status.check.ts +++ b/plugins/merge-connection/src/sync.status.check.ts @@ -10,7 +10,8 @@ export async function checkAllSyncsComplete( const allSyncs = await fetchAllSyncStatuses(mergeClient, category) const syncedModels = allSyncs.filter( (syncStatus) => - syncStatus.status !== Merge[category].SyncStatusStatusEnum.Syncing + syncStatus.status !== + Merge[category as keyof typeof Merge].SyncStatusStatusEnum.Syncing ) const completedSyncs = syncedModels.length const totalModels = allSyncs.length diff --git a/plugins/merge-connection/src/sync.status.fetch.ts b/plugins/merge-connection/src/sync.status.fetch.ts index 5036953a9..bfed09371 100644 --- a/plugins/merge-connection/src/sync.status.fetch.ts +++ b/plugins/merge-connection/src/sync.status.fetch.ts @@ -8,10 +8,12 @@ export async function fetchAllSyncStatuses( const allResults = [] do { - const paginatedSyncList = await mergeClient[category].syncStatus.list({ + const paginatedSyncList = await mergeClient[ + category as keyof typeof mergeClient + ].syncStatus.list({ cursor, }) - allResults.push(...paginatedSyncList.results) + allResults.push(...(paginatedSyncList.results ?? [])) cursor = paginatedSyncList.next } while (cursor) diff --git a/plugins/merge-connection/src/utils.ts b/plugins/merge-connection/src/utils.ts index 48ede9410..9f7754761 100644 --- a/plugins/merge-connection/src/utils.ts +++ b/plugins/merge-connection/src/utils.ts @@ -13,7 +13,7 @@ export function getMergeClient(apiKey: string, accountToken?: string) { export function handleError(error: any, message: string) { console.error(error) - throw new Error(`${message}: ${error.message}`) + throw new Error(`${message}: ${(error as Error).message}`) } export async function getSecret( diff --git a/plugins/merge-connection/tsup.config.mjs b/plugins/merge-connection/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/merge-connection/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/openapi-schema/jest.config.js b/plugins/openapi-schema/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/openapi-schema/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/openapi-schema/package.json b/plugins/openapi-schema/package.json index 786b0a01d..165bd4f5d 100644 --- a/plugins/openapi-schema/package.json +++ b/plugins/openapi-schema/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "schema-converters" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/openapi-schema-converter" }, "license": "ISC", @@ -61,6 +69,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/openapi-schema/rollup.config.mjs b/plugins/openapi-schema/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/openapi-schema/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/openapi-schema/src/index.ts b/plugins/openapi-schema/src/index.ts index 500a4203b..233c0ba91 100644 --- a/plugins/openapi-schema/src/index.ts +++ b/plugins/openapi-schema/src/index.ts @@ -1,14 +1,16 @@ import type { Flatfile } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { OpenAPISetupFactory } from './setup.factory' + import { configureSpace } from '@flatfile/plugin-space-configure' -import { OpenAPISetupFactory, generateSetup } from './setup.factory' +import { generateSetup } from './setup.factory' export function configureSpaceWithOpenAPI( setupFactory: OpenAPISetupFactory, callback?: ( event: FlatfileEvent, workbookIds: string[], - tick: (progress?: number, message?: string) => Promise + tick: (progress: number, message?: string) => Promise ) => any | Promise ) { return async function (listener: FlatfileListener) { diff --git a/plugins/openapi-schema/src/setup.factory.openapi.spec.ts b/plugins/openapi-schema/src/setup.factory.openapi.spec.ts index 2ec0adde1..afc9c7390 100644 --- a/plugins/openapi-schema/src/setup.factory.openapi.spec.ts +++ b/plugins/openapi-schema/src/setup.factory.openapi.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { generateSetup } from './setup.factory' describe('generateSetup()', () => { diff --git a/plugins/openapi-schema/src/setup.factory.ts b/plugins/openapi-schema/src/setup.factory.ts index b5a5c0d1d..8c1ce04f1 100644 --- a/plugins/openapi-schema/src/setup.factory.ts +++ b/plugins/openapi-schema/src/setup.factory.ts @@ -1,5 +1,6 @@ -import { Flatfile } from '@flatfile/api' -import { PartialWb, SetupFactory } from '@flatfile/plugin-space-configure' +import type { Flatfile } from '@flatfile/api' +import type { PartialWb, SetupFactory } from '@flatfile/plugin-space-configure' + import fetch from 'cross-fetch' export type OpenAPISetupFactory = { @@ -59,7 +60,6 @@ export async function generateSetup( await Promise.all( workbook.sheets.map(async (sheet) => { const modelName = sheet.model - delete sheet.model const schema = schemas[modelName] if (!schema) { console.error(`Schema not found for table name ${sheet.slug}`) @@ -78,9 +78,7 @@ export async function generateSetup( } as Flatfile.SheetConfig }) ) - ).filter(Boolean) - - delete workbook.source + ).filter(Boolean) as Flatfile.SheetConfig[] return { name: data.info.title, @@ -92,7 +90,9 @@ export async function generateSetup( return { workbooks, space: setupFactory.space } } catch (error) { console.error(error) - throw new Error(`Error fetching or processing schema: ${error.message}`) + throw new Error( + `Error fetching or processing schema: ${(error as Error).message}` + ) } } @@ -178,7 +178,7 @@ export async function getPropertyType( ...(property?.description && { description: property.description }), ...(isRequired && { constraints: [{ type: 'required' }] }), config: { - options: property.enum.map((value) => ({ + options: property.enum.map((value: any) => ({ value, label: String(value), })), @@ -235,7 +235,7 @@ export async function getPropertyType( export async function resolveReference(schema: any, ref: string): Promise { const segments = ref.split('/') - const modelName = segments[segments.length - 1] + const modelName = segments[segments.length - 1] as string const model = schema[modelName] diff --git a/plugins/openapi-schema/tsup.config.mjs b/plugins/openapi-schema/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/openapi-schema/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/pdf-extractor/jest.config.js b/plugins/pdf-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/pdf-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/pdf-extractor/package.json b/plugins/pdf-extractor/package.json index a51d85351..20a07f125 100644 --- a/plugins/pdf-extractor/package.json +++ b/plugins/pdf-extractor/package.json @@ -6,18 +6,45 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [ @@ -27,7 +54,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/pdf-extractor" }, "license": "ISC", @@ -44,6 +71,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@types/fs-extra": "^11.0.1" + "@types/fs-extra": "^11.0.1", + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/pdf-extractor/src/index.ts b/plugins/pdf-extractor/src/index.ts index 867b70bff..002c5f932 100644 --- a/plugins/pdf-extractor/src/index.ts +++ b/plugins/pdf-extractor/src/index.ts @@ -1,7 +1,9 @@ -import type { FlatfileListener } from '@flatfile/listener' -import { fileBuffer } from '@flatfile/util-file-buffer' +import type { Flatfile } from '@flatfile/api' +import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { PluginOptions } from './plugin' -import { PluginOptions, run } from './plugin' +import { fileBuffer } from '@flatfile/util-file-buffer' +import { run } from './plugin' /** * PDF extractor plugin for Flatfile. @@ -11,9 +13,16 @@ import { PluginOptions, run } from './plugin' export const pdfExtractorPlugin = (opts: PluginOptions) => { return (listener: FlatfileListener) => { listener.use( - fileBuffer('.pdf', async (fileResource, buffer, event) => { - await run(event, fileResource, buffer, opts) - }) + fileBuffer( + '.pdf', + async ( + fileResource: Flatfile.File_, + buffer: Buffer, + event: FlatfileEvent + ) => { + await run(event, fileResource, buffer, opts) + } + ) ) } } diff --git a/plugins/pdf-extractor/tsup.config.mjs b/plugins/pdf-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/pdf-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/psv-extractor/jest.config.js b/plugins/psv-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/psv-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/psv-extractor/package.json b/plugins/psv-extractor/package.json index c5ff093ca..2ad06cedf 100644 --- a/plugins/psv-extractor/package.json +++ b/plugins/psv-extractor/package.json @@ -1,29 +1,57 @@ { "name": "@flatfile/plugin-psv-extractor", "version": "1.9.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/psv-extractor", "description": "A plugin for parsing a psv file and extracting it into Flatfile.", "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [], "author": "Ashley Mulligan", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/psv-parser" }, "license": "ISC", @@ -31,5 +59,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/psv-extractor/tsup.config.mjs b/plugins/psv-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/psv-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/record-hook/jest.config.js b/plugins/record-hook/jest.config.js deleted file mode 100644 index 97444dbb0..000000000 --- a/plugins/record-hook/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 90_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/record-hook/package.json b/plugins/record-hook/package.json index 74fc21df1..4b2989c21 100644 --- a/plugins/record-hook/package.json +++ b/plugins/record-hook/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "records" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,42 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", + "umd": "./dist/index.umd.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup && rollup -c", + "build:watch": "tsup --watch && rollup -c --watch", + "build:prod": "NODE_ENV=production tsup && rollup -c", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -54,7 +63,7 @@ "author": "Alex Hollenbeck", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/record-hook" }, "license": "ISC", @@ -67,6 +76,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } -} +} \ No newline at end of file diff --git a/plugins/record-hook/rollup.config.mjs b/plugins/record-hook/rollup.config.mjs index fc7c877bd..6752abbae 100644 --- a/plugins/record-hook/rollup.config.mjs +++ b/plugins/record-hook/rollup.config.mjs @@ -1,4 +1,4 @@ -import { buildConfig } from '@flatfile/rollup-config' +import { buildConfig } from '@flatfile/bundler-config-rollup' const umdExternals = [ '@flatfile/api', @@ -8,6 +8,9 @@ const umdExternals = [ ] const config = buildConfig({ + includeNode: false, + includeBrowser: false, + includeDefinitions: false, includeUmd: true, umdConfig: { name: 'PluginRecordHook', external: umdExternals }, }) diff --git a/plugins/record-hook/src/RecordHook.e2e.spec.ts b/plugins/record-hook/src/RecordHook.e2e.spec.ts index d021381ac..6552dbcb9 100644 --- a/plugins/record-hook/src/RecordHook.e2e.spec.ts +++ b/plugins/record-hook/src/RecordHook.e2e.spec.ts @@ -1,23 +1,52 @@ -import { FlatfileClient } from '@flatfile/api' +import { type Flatfile, FlatfileClient } from '@flatfile/api' import { createRecords, deleteSpace, getRecords, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' -import { FlatfileRecord } from '.' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest' +import { type FlatfileRecord } from '.' import { bulkRecordHook, recordHook } from './record.hook.plugin' const api = new FlatfileClient() describe('RecordHook e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) // Console spies - const logSpy = jest.spyOn(global.console, 'log') - const logErrorSpy = jest.spyOn(global.console, 'error') + const logSpy = vi.spyOn(global.console, 'log') + const logErrorSpy = vi.spyOn(global.console, 'error') let spaceId: string let sheetId: string @@ -26,11 +55,11 @@ describe('RecordHook e2e', () => { const space = await setupSpace() spaceId = space.id const workbook = await setupSimpleWorkbook(space.id, [ - { key: 'firstName', type: 'string' }, - { key: 'lastName', type: 'string' }, - { key: 'email', type: 'string' }, - { key: 'age', type: 'number' }, - { key: 'alive', type: 'boolean' }, + { key: 'firstName', type: 'string' } as Flatfile.Property.String, + { key: 'lastName', type: 'string' } as Flatfile.Property.String, + { key: 'email', type: 'string' } as Flatfile.Property.String, + { key: 'age', type: 'number' } as Flatfile.Property.Number, + { key: 'alive', type: 'boolean' } as Flatfile.Property.Boolean, { key: 'category', type: 'enum', @@ -46,7 +75,7 @@ describe('RecordHook e2e', () => { }, ], }, - }, + } as Flatfile.Property.Enum, ]) sheetId = workbook.sheets![0].id }) @@ -68,7 +97,7 @@ describe('RecordHook e2e', () => { describe('recordHook()', () => { it('registers a records:* listener to the client', () => { - const listenerOnSpy = jest.spyOn(listener, 'on') + const listenerOnSpy = vi.spyOn(listener, 'on') const testCallback = (record) => { return record } @@ -233,7 +262,7 @@ describe('RecordHook e2e', () => { describe('bulkRecordHook()', () => { it('registers a records:* listener to the client', () => { - const listenerOnSpy = jest.spyOn(listener, 'on') + const listenerOnSpy = vi.spyOn(listener, 'on') const testCallback = (record: FlatfileRecord[]) => { return record } diff --git a/plugins/record-hook/src/RecordHook.ts b/plugins/record-hook/src/RecordHook.ts index 391ac7f28..5dffdcbfd 100644 --- a/plugins/record-hook/src/RecordHook.ts +++ b/plugins/record-hook/src/RecordHook.ts @@ -17,10 +17,7 @@ export interface RecordHookOptions { export const RecordHook = async ( event: FlatfileEvent, - handler: ( - record: FlatfileRecord, - event?: FlatfileEvent - ) => any | Promise, + handler: (record: FlatfileRecord, event: FlatfileEvent) => any | Promise, options: RecordHookOptions = {} ) => { const { concurrency = 10 } = options @@ -30,7 +27,7 @@ export const RecordHook = async ( const promises = new Set>() for (const record of records) { - const promise = Promise.resolve(handler(record, event)).finally(() => + const promise = Promise.resolve(handler(record, event!)).finally(() => promises.delete(promise) ) promises.add(promise) @@ -56,7 +53,7 @@ export const BulkRecordHook = async ( event: FlatfileEvent, handler: ( records: FlatfileRecord[], - event?: FlatfileEvent + event: FlatfileEvent ) => any | Promise, options: BulkRecordHookOptions = {} ) => { @@ -85,13 +82,18 @@ export const BulkRecordHook = async ( 'records', async () => await prepareXRecords(data) ) - // Execute client-defined data hooks - await asyncBatch(batch.records, handler, options, event) + await asyncBatch( + batch.records, + async (records, event) => { + await handler(records, event!) + }, + options + ) event.afterAll(async () => { const { records: batch } = - event.cache.get>('records') + event.cache.get>('records') || {} const records: Flatfile.RecordsWithLinks = await prepareFlatfileRecords(batch) diff --git a/plugins/record-hook/src/record.hook.plugin.ts b/plugins/record-hook/src/record.hook.plugin.ts index 23bd9438f..73718d808 100644 --- a/plugins/record-hook/src/record.hook.plugin.ts +++ b/plugins/record-hook/src/record.hook.plugin.ts @@ -7,7 +7,7 @@ export const recordHookPlugin = ( sheetSlug: string, callback: ( record: FlatfileRecord, - event?: FlatfileEvent + event: FlatfileEvent ) => any | Promise, options: RecordHookOptions = {} ) => { @@ -22,7 +22,7 @@ export const bulkRecordHookPlugin = ( sheetSlug: string, callback: ( records: FlatfileRecord[], - event?: FlatfileEvent + event: FlatfileEvent ) => any | Promise, options: BulkRecordHookOptions = {} ) => { diff --git a/plugins/record-hook/tsup.config.mjs b/plugins/record-hook/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/record-hook/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/rollout/jest.config.js b/plugins/rollout/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/rollout/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/rollout/package.json b/plugins/rollout/package.json index 36fc671da..d979e2f13 100644 --- a/plugins/rollout/package.json +++ b/plugins/rollout/package.json @@ -6,21 +6,37 @@ "registryMetadata": { "category": "core" }, + "type": "module", "engines": { "node": ">= 16" }, + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -33,7 +49,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/rollout" }, "license": "ISC", @@ -48,6 +64,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/rollout/src/index.ts b/plugins/rollout/src/index.ts index 4e97272a0..9fb907642 100644 --- a/plugins/rollout/src/index.ts +++ b/plugins/rollout/src/index.ts @@ -1,9 +1,9 @@ -import { randomUUID } from 'node:crypto' import api, { Flatfile } from '@flatfile/api' import { FlatfileListener } from '@flatfile/listener' import { jobHandler } from '@flatfile/plugin-job-handler' -import { asyncMap } from 'modern-async' import { Simplified } from '@flatfile/util-common' +import { asyncMap } from 'modern-async' +import { randomUUID } from 'node:crypto' /** * Auto update plugin that will trigger a schema update for a space @@ -130,13 +130,13 @@ export function rollout(config: { }) const updated = await config.updater( space, - workbooks.filter((wb) => !wb.name.includes('[file]')) + workbooks.filter((wb) => !wb.name?.includes('[file]')) ) if (updated?.length) { await asyncMap(updated, async (wb) => { console.log('workbook schema updated, triggering hooks', wb.id) await asyncMap( - wb.sheets, + wb.sheets!, (sheet) => { return triggerHooks(sheet.id) }, diff --git a/plugins/rollout/tsup.config.mjs b/plugins/rollout/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/rollout/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/plugins/space-configure/jest.config.js b/plugins/space-configure/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/space-configure/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/space-configure/package.json b/plugins/space-configure/package.json index 0af41d838..436c75a41 100644 --- a/plugins/space-configure/package.json +++ b/plugins/space-configure/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "core" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/space-configure" }, "license": "ISC", @@ -60,8 +68,8 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/api": "^1.9.19", - "@flatfile/rollup-config": "0.1.1", - "@flatfile/utils-testing": "^0.3.1" + "@flatfile/api": "^1.8.9", + "@flatfile/bundler-config-tsup": "^0.0.0", + "@flatfile/utils-testing": "^0.2.0" } } diff --git a/plugins/space-configure/rollup.config.mjs b/plugins/space-configure/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/space-configure/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/space-configure/src/space.configure.e2e.spec.ts b/plugins/space-configure/src/space.configure.e2e.spec.ts index db9744c81..f17914e05 100644 --- a/plugins/space-configure/src/space.configure.e2e.spec.ts +++ b/plugins/space-configure/src/space.configure.e2e.spec.ts @@ -1,5 +1,20 @@ import { FlatfileClient } from '@flatfile/api' -import { deleteSpace, setupListener, setupSpace } from '@flatfile/utils-testing' +import { + deleteSpace, + setupDriver, + setupSpace, + TestListener, +} from '@flatfile/utils-testing' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest' import type { SetupFactory } from '.' import { configureSpace } from '.' import { gettingStartedSheet } from '../ref/getting_started' @@ -33,8 +48,26 @@ const setup: SetupFactory = { } describe('SpaceConfigure plugin e2e tests', () => { - const mockFn = jest.fn() - const listener = setupListener() + const mockFn = vi.fn() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId: string beforeAll(async () => { @@ -52,17 +85,17 @@ describe('SpaceConfigure plugin e2e tests', () => { await listener.waitFor('job:ready', 1, 'space:configure') const space = await api.spaces.get(spaceId) - const workspace = await api.workbooks.get(space.data.primaryWorkbookId) + const workspace = await api.workbooks.get(space.data.primaryWorkbookId!) expect(workspace.data.name).toBe(setup.workbooks[0].name) - expect(workspace.data.labels).toMatchObject(setup.workbooks[0].labels) - expect(workspace.data.sheets[0].name).toBe( - setup.workbooks[0].sheets[0].name + expect(workspace.data.labels).toMatchObject(setup.workbooks[0].labels!) + expect(workspace.data.sheets![0].name).toBe( + setup.workbooks[0].sheets![0].name ) - expect(workspace.data.sheets[0].config).toMatchObject( - setup.workbooks[0].sheets[0] + expect(workspace.data.sheets![0].config).toMatchObject( + setup.workbooks[0].sheets![0] ) - expect(workspace.data.actions).toMatchObject(setup.workbooks[0].actions) + expect(workspace.data.actions).toMatchObject(setup.workbooks[0].actions!) expect(mockFn).toHaveBeenCalled() }) }) diff --git a/plugins/space-configure/tsup.config.mjs b/plugins/space-configure/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/space-configure/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/sql-ddl-converter/jest.config.js b/plugins/sql-ddl-converter/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/sql-ddl-converter/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/sql-ddl-converter/package.json b/plugins/sql-ddl-converter/package.json index ced03df71..c9fff751e 100644 --- a/plugins/sql-ddl-converter/package.json +++ b/plugins/sql-ddl-converter/package.json @@ -6,18 +6,37 @@ "registryMetadata": { "category": "schema-converters" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [ @@ -27,7 +46,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/sql-ddl-converter" }, "license": "ISC", @@ -39,5 +58,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/sql-ddl-converter/src/index.ts b/plugins/sql-ddl-converter/src/index.ts index 3360e66bf..073fea2cc 100644 --- a/plugins/sql-ddl-converter/src/index.ts +++ b/plugins/sql-ddl-converter/src/index.ts @@ -1,14 +1,16 @@ import type { Flatfile } from '@flatfile/api' import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { SqlSetupFactory } from './setup.factory' + import { configureSpace } from '@flatfile/plugin-space-configure' -import { SqlSetupFactory, generateSetup } from './setup.factory' +import { generateSetup } from './setup.factory' export function configureSpaceWithSqlDDL( setup: SqlSetupFactory, callback?: ( event: FlatfileEvent, workbookIds: string[], - tick: (progress?: number, message?: string) => Promise + tick: (progress: number, message?: string) => Promise ) => any | Promise ) { return async function (listener: FlatfileListener) { diff --git a/plugins/sql-ddl-converter/src/setup.factory.ts b/plugins/sql-ddl-converter/src/setup.factory.ts index 595351ced..012fef4eb 100644 --- a/plugins/sql-ddl-converter/src/setup.factory.ts +++ b/plugins/sql-ddl-converter/src/setup.factory.ts @@ -1,6 +1,7 @@ -import { Flatfile } from '@flatfile/api' +import type { Flatfile } from '@flatfile/api' +import type { PartialWb, SetupFactory } from '@flatfile/plugin-space-configure' + import { generateFields } from '@flatfile/plugin-convert-json-schema' -import { PartialWb, SetupFactory } from '@flatfile/plugin-space-configure' import { Parser } from 'sql-ddl-to-json-schema' import * as fs from 'fs' @@ -38,9 +39,9 @@ export async function generateSetup( .feed(sql) .toJsonSchemaArray({ useRef: true }, compactJsonTablesArray) - const sheets: Flatfile.SheetConfig[] = ( + const sheets: (Flatfile.SheetConfig | undefined)[] = ( await Promise.all( - workbook.sheets.map(async (sheet) => { + workbook.sheets.map(async (sheet: PartialSheetConfig) => { const schema = schemas.find((schema) => schema.$id === sheet.slug) if (!schema) { console.error(`Schema not found for table name ${sheet.slug}`) @@ -63,8 +64,6 @@ export async function generateSetup( ) ).filter(Boolean) - delete workbook.source - return { ...workbook, sheets, diff --git a/plugins/sql-ddl-converter/tsup.config.mjs b/plugins/sql-ddl-converter/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/sql-ddl-converter/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/plugins/tsv-extractor/jest.config.js b/plugins/tsv-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/tsv-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/tsv-extractor/package.json b/plugins/tsv-extractor/package.json index 55ab7a6f1..77e9f43b4 100644 --- a/plugins/tsv-extractor/package.json +++ b/plugins/tsv-extractor/package.json @@ -1,29 +1,57 @@ { "name": "@flatfile/plugin-tsv-extractor", "version": "1.8.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/tsv-extractor", "description": "A plugin for parsing a tsv file and extracting it into Flatfile.", "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [], "author": "Ashley Mulligan", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/tsv-parser" }, "license": "ISC", @@ -31,5 +59,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/tsv-extractor/tsup.config.mjs b/plugins/tsv-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/tsv-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/view-mapped/jest.config.js b/plugins/view-mapped/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/view-mapped/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/view-mapped/package.json b/plugins/view-mapped/package.json index 1c9d8e39f..e075b9c27 100644 --- a/plugins/view-mapped/package.json +++ b/plugins/view-mapped/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "core" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/view-mapped" }, "license": "ISC", @@ -59,7 +67,7 @@ "@flatfile/util-common": "^1.4.1" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" } } diff --git a/plugins/view-mapped/rollup.config.mjs b/plugins/view-mapped/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/view-mapped/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/view-mapped/src/view-mapped.ts b/plugins/view-mapped/src/view-mapped.ts index 6986a1fe1..ad9ceebdc 100644 --- a/plugins/view-mapped/src/view-mapped.ts +++ b/plugins/view-mapped/src/view-mapped.ts @@ -1,5 +1,7 @@ +import type { Flatfile } from '@flatfile/api' +import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' + import { FlatfileClient } from '@flatfile/api' -import type { FlatfileListener } from '@flatfile/listener' import { jobHandler } from '@flatfile/plugin-job-handler' import { logError } from '@flatfile/util-common' @@ -32,105 +34,116 @@ export function viewMappedPlugin() { // Defining what needs to be done when our custom job triggers. Because we create it when mapping job completes, this is when this job will begin executing listener.use( - jobHandler('workbook:viewMappedFieldsOnly', async (event, tick) => { - const { jobId, workbookId } = event.context - - try { - // First, we acknowledge the job - await tick(10, 'Updating the table to only view mapped fields') - - // Retrieving the info on the custom job we created in the listener above, and storing that info in its own "customJobInfo" variable - const customJobInfo = await api.jobs.get(jobId) + jobHandler( + 'workbook:viewMappedFieldsOnly', + async ( + event: FlatfileEvent, + tick: ( + progress: number, + message?: string | undefined + ) => Promise + ) => { + const { jobId, workbookId } = event.context + + try { + // First, we acknowledge the job + await tick(10, 'Updating the table to only view mapped fields') + + // Retrieving the info on the custom job we created in the listener above, and storing that info in its own "customJobInfo" variable + const customJobInfo = await api.jobs.get(jobId) + + // From "customJobInfo" variable, retrieving the jobId specifically of the mapping job that completed, and storing it in its own "mappingJobId" variable + const mappingJobId = customJobInfo.data.input?.mappingJobId + + // Obtaining the mapping job's execution plan to later extract "fieldMapping" out of it, which tells us which fields were mapped in the Matching step + const jobPlan = await api.jobs.getExecutionPlan(mappingJobId) + + // Initializing an empty array to store the keys of the mapped fields + const mappedFields: string[] = [] + + // Iterating through all destination fields that are mapped and extracting their field keys. Then, pushing keys of mapped fields to the "mappedFields" variable + for (let i = 0; i < jobPlan.data.plan.fieldMapping.length; i++) { + const destinationFieldKey = + jobPlan.data.plan.fieldMapping[i]!.destinationField.key + + mappedFields.push(destinationFieldKey) + } - // From "customJobInfo" variable, retrieving the jobId specifically of the mapping job that completed, and storing it in its own "mappingJobId" variable - const mappingJobId = customJobInfo.data.input.mappingJobId + await tick(30, 'Updating the table to only view mapped fields') - // Obtaining the mapping job's execution plan to later extract "fieldMapping" out of it, which tells us which fields were mapped in the Matching step - const jobPlan = await api.jobs.getExecutionPlan(mappingJobId) + // Making an API call to only get the "data" property out of the response, and saving it as its own "fetchedWorkbook" variable + // We need to make this API call and cannot just use what's inside of "workbookOne" because we need data in a specific format + const { data: workbook } = await api.workbooks.get(workbookId) - // Initializing an empty array to store the keys of the mapped fields - const mappedFields = [] + // Looping through all sheets of the Workbook One. For all fields that are mapped, updating those fields' metadata to "{mapped: true}" + workbook.sheets?.forEach((sheet: Flatfile.Sheet) => { + sheet.config.fields.forEach((field) => { + if (mappedFields.includes(field.key)) { + field.metadata = { mapped: true } + } + }) + }) - // Iterating through all destination fields that are mapped and extracting their field keys. Then, pushing keys of mapped fields to the "mappedFields" variable - for (let i = 0; i < jobPlan.data.plan.fieldMapping.length; i++) { - const destinationFieldKey = - jobPlan.data.plan.fieldMapping[i].destinationField.key + // Looping over each sheet in "workbook" and filtering for fields with metadata "mapped: true". Saving mapped fields per each sheet inside of "filteredWorkbookFields" varibable + const filteredWorkbookFields = workbook.sheets?.map( + (sheet: Flatfile.Sheet) => { + const fields = sheet.config.fields.filter( + (field) => field.metadata && field.metadata.mapped === true + ) + return fields.length > 0 ? fields : null + } + ) - mappedFields.push(destinationFieldKey) - } + await tick(50, 'Halfway there, hang tight...') - await tick(30, 'Updating the table to only view mapped fields') + const sheets = workbook.sheets!.map((sheet, index) => { + const mappedWorkbookFields = filteredWorkbookFields![index] - // Making an API call to only get the "data" property out of the response, and saving it as its own "fetchedWorkbook" variable - // We need to make this API call and cannot just use what's inside of "workbookOne" because we need data in a specific format - const { data: workbook } = await api.workbooks.get(workbookId) + // If there are no mapped fields, returning the original sheet structure + if (!mappedWorkbookFields) { + return sheet + } - // Looping through all sheets of the Workbook One. For all fields that are mapped, updating those fields' metadata to "{mapped: true}" - workbook.sheets.forEach((sheet) => { - sheet.config.fields.forEach((field) => { - if (mappedFields.includes(field.key)) { - field.metadata = { mapped: true } + // If there are mapped fields, returning all properties of the original sheet but updating the "fields" property to the mapped fields + return { + ...sheet, + config: { + ...sheet.config, + fields: mappedWorkbookFields, + }, } }) - }) - // Looping over each sheet in "workbook" and filtering for fields with metadata "mapped: true". Saving mapped fields per each sheet inside of "filteredWorkbookFields" varibable - const filteredWorkbookFields = workbook.sheets.map((sheet) => { - const fields = sheet.config.fields.filter( - (field) => field.metadata && field.metadata.mapped === true - ) - return fields.length > 0 ? fields : null - }) + await tick(80, 'Almost done...') - await tick(50, 'Halfway there, hang tight...') + // Updating each sheet in a workbook to only contain fields that a user mapped. This ensures that when the table with data loads, only mapped fields will be displayed + await api.workbooks.update(workbookId, { + // Keeping other non-sheet elements of the workbook untouched (Workbook name, its Submit action, etc) + ...workbook, - const sheets = workbook.sheets.map((sheet, index) => { - const mappedWorkbookFields = filteredWorkbookFields[index] - - // If there are no mapped fields, returning the original sheet structure - if (!mappedWorkbookFields) { - return sheet - } + // Mapping over each sheet to update each to only contain fields that are inside of "filteredWorkbookFields" variable (that have metadata "{mapped: true})" + sheets, + }) - // If there are mapped fields, returning all properties of the original sheet but updating the "fields" property to the mapped fields + // Completing the job with an appropriate message to the user return { - ...sheet, - config: { - ...sheet.config, - fields: mappedWorkbookFields, + outcome: { + message: 'Table update complete. Please audit the data', + acknowledge: false, }, } - }) - - await tick(80, 'Almost done...') - - // Updating each sheet in a workbook to only contain fields that a user mapped. This ensures that when the table with data loads, only mapped fields will be displayed - await api.workbooks.update(workbookId, { - // Keeping other non-sheet elements of the workbook untouched (Workbook name, its Submit action, etc) - ...workbook, - - // Mapping over each sheet to update each to only contain fields that are inside of "filteredWorkbookFields" variable (that have metadata "{mapped: true})" - sheets, - }) - - // Completing the job with an appropriate message to the user - return { - outcome: { - message: 'Table update complete. Please audit the data', - acknowledge: false, - }, + } catch (error) { + // If something goes wrong while executing the custom job, we fail the job with a message on what next steps to take + logError( + '@flatfile/plugin-view-mapped', + JSON.stringify(error, null, 2) + ) + throw new Error( + 'An error occured while updating the workbook. See Event Logs.' + ) } - } catch (error) { - // If something goes wrong while executing the custom job, we fail the job with a message on what next steps to take - logError( - '@flatfile/plugin-view-mapped', - JSON.stringify(error, null, 2) - ) - throw new Error( - 'An error occured while updating the workbook. See Event Logs.' - ) } - }) + ) ) } } diff --git a/plugins/view-mapped/tsup.config.mjs b/plugins/view-mapped/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/view-mapped/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/webhook-egress/jest.config.js b/plugins/webhook-egress/jest.config.js deleted file mode 100644 index 97444dbb0..000000000 --- a/plugins/webhook-egress/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 90_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/webhook-egress/package.json b/plugins/webhook-egress/package.json index 372bb6b90..b01ff02e4 100644 --- a/plugins/webhook-egress/package.json +++ b/plugins/webhook-egress/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "egress" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/webhook-egress" }, "license": "ISC", @@ -63,7 +71,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", "jest-fetch-mock": "^3.0.3" } diff --git a/plugins/webhook-egress/rollup.config.mjs b/plugins/webhook-egress/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/webhook-egress/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/webhook-egress/src/webhook.egress.e2e.spec.ts b/plugins/webhook-egress/src/webhook.egress.e2e.spec.ts index c01e3e17f..7a6e18399 100644 --- a/plugins/webhook-egress/src/webhook.egress.e2e.spec.ts +++ b/plugins/webhook-egress/src/webhook.egress.e2e.spec.ts @@ -2,20 +2,45 @@ import { FlatfileClient } from '@flatfile/api' import { createRecords, deleteSpace, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' -import fetchMock from 'jest-fetch-mock' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest' import { webhookEgress } from './webhook.egress' const api = new FlatfileClient() -fetchMock.enableMocks() -fetchMock.dontMock() - describe('webhookEgress() e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId let workbookId @@ -30,7 +55,7 @@ describe('webhookEgress() e2e', () => { 'notes', ]) workbookId = workbook.id - sheetId = workbook.sheets[0].id + sheetId = workbook.sheets![0].id await createRecords(sheetId, [ { name: 'John Doe', @@ -50,18 +75,12 @@ describe('webhookEgress() e2e', () => { }) beforeEach(() => { - fetchMock.resetMocks() + vi.restoreAllMocks() }) it('returns successful outcome message', async () => { - fetchMock.doMockIf( - 'example.com', - JSON.stringify({ - data: {}, - }), - { - status: 200, - } + vi.spyOn(global, 'fetch').mockResolvedValueOnce( + new Response(JSON.stringify({ data: {} }), { status: 200 }) ) listener.use(webhookEgress('workbook:egressTestSuccess', 'example.com')) @@ -76,24 +95,20 @@ describe('webhookEgress() e2e', () => { await listener.waitFor('job:ready', 1, 'workbook:egressTestSuccess') const response = await api.jobs.get(successfulJobId) - expect(response.data.outcome.message).toEqual( + expect(response.data.outcome?.message).toEqual( `Data was successfully submitted to the provided webhook. Go check it out at example.com.` ) }) it('returns failure outcome message', async () => { - fetchMock.doMockIf( - 'example.com', - JSON.stringify({ - data: {}, - }), - { + vi.spyOn(global, 'fetch').mockResolvedValueOnce( + new Response(JSON.stringify({ data: {} }), { status: 400, statusText: 'Bad Request', - } + }) ) - const logErrorSpy = jest.spyOn(global.console, 'error') + const logErrorSpy = vi.spyOn(global.console, 'error') logErrorSpy.mockImplementation((message) => { if ( message.includes( @@ -130,19 +145,20 @@ describe('webhookEgress() e2e', () => { describe('webhookEgress() e2e w/ response rejection', () => { it('returns no rejections', async () => { - fetchMock.doMockIf( - 'example.com', - JSON.stringify({ - rejections: { - deleteSubmitted: true, - }, - }), - { - status: 200, - headers: { - 'Content-Type': 'application/json', - }, - } + vi.spyOn(global, 'fetch').mockResolvedValueOnce( + new Response( + JSON.stringify({ + rejections: { + deleteSubmitted: true, + }, + }), + { + status: 200, + headers: { + 'Content-Type': 'application/json', + }, + } + ) ) listener.use(webhookEgress('workbook:egressTestSuccess', 'example.com')) @@ -157,43 +173,44 @@ describe('webhookEgress() e2e', () => { await listener.waitFor('job:ready', 1, 'workbook:egressTestSuccess') const response = await api.jobs.get(successfulJobId) - expect(response.data.outcome.message).toEqual( + expect(response.data.outcome?.message).toEqual( 'The data has been successfully submitted without any rejections. This task is now complete.' ) - expect(response.data.outcome.heading).toEqual('Success!') + expect(response.data.outcome?.heading).toEqual('Success!') }) it('returns rejections', async () => { - fetchMock.doMockIf( - 'example.com', - JSON.stringify({ - rejections: { - id: workbookId, - deleteSubmitted: true, - sheets: [ - { - sheetId: sheetId, - rejectedRecords: [ - { - id: 'dev_rc_91d271c823d84a378ec0165ddc886864', - values: [ - { - field: 'email', - message: 'Not a valid Flatfile email address', - }, - ], - }, - ], - }, - ], - }, - }), - { - status: 200, - headers: { - 'Content-Type': 'application/json', - }, - } + vi.spyOn(global, 'fetch').mockResolvedValueOnce( + new Response( + JSON.stringify({ + rejections: { + id: workbookId, + deleteSubmitted: true, + sheets: [ + { + sheetId: sheetId, + rejectedRecords: [ + { + id: 'dev_rc_91d271c823d84a378ec0165ddc886864', + values: [ + { + field: 'email', + message: 'Not a valid Flatfile email address', + }, + ], + }, + ], + }, + ], + }, + }), + { + status: 200, + headers: { + 'Content-Type': 'application/json', + }, + } + ) ) listener.use(webhookEgress('workbook:egressTestSuccess', 'example.com')) @@ -208,10 +225,10 @@ describe('webhookEgress() e2e', () => { await listener.waitFor('job:ready', 1, 'workbook:egressTestSuccess') const response = await api.jobs.get(successfulJobId) - expect(response.data.outcome.message).toEqual( + expect(response.data.outcome?.message).toEqual( 'During the data submission process, 1 records were rejected. Please review and correct these records before resubmitting.' ) - expect(response.data.outcome.heading).toEqual('Rejected Records') + expect(response.data.outcome?.heading).toEqual('Rejected Records') }) }) }) diff --git a/plugins/webhook-egress/src/webhook.egress.ts b/plugins/webhook-egress/src/webhook.egress.ts index 7b4b6e17d..5a8948878 100644 --- a/plugins/webhook-egress/src/webhook.egress.ts +++ b/plugins/webhook-egress/src/webhook.egress.ts @@ -1,83 +1,93 @@ +import type { Flatfile } from '@flatfile/api' +import type { FlatfileEvent, FlatfileListener } from '@flatfile/listener' +import type { RejectionResponse } from '@flatfile/util-response-rejection' + import { FlatfileClient } from '@flatfile/api' -import { FlatfileListener } from '@flatfile/listener' import { jobHandler } from '@flatfile/plugin-job-handler' import { logError } from '@flatfile/util-common' -import { - RejectionResponse, - responseRejectionHandler, -} from '@flatfile/util-response-rejection' +import { responseRejectionHandler } from '@flatfile/util-response-rejection' const api = new FlatfileClient() -export function webhookEgress(job: string, webhookUrl?: string) { +export function webhookEgress(job: string, webhookUrl: string) { return function (listener: FlatfileListener) { listener.use( - jobHandler(job, async (event, tick) => { - const { workbookId } = event.context - const { data: workbook } = await api.workbooks.get(workbookId) - const { data: workbookSheets } = await api.sheets.list({ workbookId }) + jobHandler( + job, + async ( + event: FlatfileEvent, + tick: ( + progress: number, + message?: string + ) => Promise + ) => { + const { workbookId } = event.context + const { data: workbook } = await api.workbooks.get(workbookId) + const { data: workbookSheets } = await api.sheets.list({ workbookId }) - await tick(30, 'Getting workbook data') + await tick(30, 'Getting workbook data') - const sheets = [] - for (const [_, element] of workbookSheets.entries()) { - const { data: records } = await api.records.get(element.id) - sheets.push({ - ...element, - ...records, - }) - } + const sheets = [] + for (const [_, element] of workbookSheets.entries()) { + const { data: records } = await api.records.get(element.id) + sheets.push({ + ...element, + ...records, + }) + } - await tick(60, 'Posting data to webhook') + await tick(60, 'Posting data to webhook') - try { - const webhookReceiver = webhookUrl || process.env.WEBHOOK_SITE_URL - const response = await fetch(webhookReceiver, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - workbook: { - ...workbook, - sheets, + try { + const response = await fetch(webhookUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', }, - }), - }) + body: JSON.stringify({ + workbook: { + ...workbook, + sheets, + }, + }), + }) - if (response.status === 200) { - const responseData = await response.json() - const rejections: RejectionResponse = responseData.rejections + if (response.status === 200) { + const responseData = await response.json() + const rejections: RejectionResponse = responseData.rejections - if (rejections) { - return await responseRejectionHandler(rejections) - } + if (rejections) { + const rejectionResponse = + await responseRejectionHandler(rejections) + return rejectionResponse + } - return { - outcome: { - message: `Data was successfully submitted to the provided webhook. Go check it out at ${webhookReceiver}.`, - }, + return { + outcome: { + message: `Data was successfully submitted to the provided webhook. Go check it out at ${webhookUrl}.`, + }, + } + } else { + logError( + '@flatfile/plugin-webhook-egress', + `Failed to submit data to ${webhookUrl}. Status: ${response.status} ${response.statusText}` + ) + return { + outcome: { + message: `Data was not successfully submitted to the provided webhook. Status: ${response.status} ${response.statusText}`, + }, + } } - } else { + } catch (error) { logError( '@flatfile/plugin-webhook-egress', - `Failed to submit data to ${webhookReceiver}. Status: ${response.status} ${response.statusText}` + JSON.stringify(error, null, 2) ) - return { - outcome: { - message: `Data was not successfully submitted to the provided webhook. Status: ${response.status} ${response.statusText}`, - }, - } + // Throw error to fail job + throw new Error(`Error posting data to webhook`) } - } catch (error) { - logError( - '@flatfile/plugin-webhook-egress', - JSON.stringify(error, null, 2) - ) - // Throw error to fail job - throw new Error(`Error posting data to webhook`) } - }) + ) ) } } diff --git a/plugins/webhook-egress/tsup.config.mjs b/plugins/webhook-egress/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/webhook-egress/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/webhook-event-forwarder/jest.config.js b/plugins/webhook-event-forwarder/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/webhook-event-forwarder/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/webhook-event-forwarder/package.json b/plugins/webhook-event-forwarder/package.json index 8239d3c5b..9f32aeb54 100644 --- a/plugins/webhook-event-forwarder/package.json +++ b/plugins/webhook-event-forwarder/package.json @@ -5,37 +5,45 @@ "registryMetadata": { "category": "automation" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -44,7 +52,7 @@ "author": "Morgan Daley", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/webhook-event-forwarder" }, "license": "ISC", @@ -60,7 +68,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "jest-fetch-mock": "^3.0.3" } } diff --git a/plugins/webhook-event-forwarder/rollup.config.mjs b/plugins/webhook-event-forwarder/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/plugins/webhook-event-forwarder/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/plugins/webhook-event-forwarder/src/forward-webhook.e2e.spec.ts b/plugins/webhook-event-forwarder/src/forward-webhook.e2e.spec.ts index f73eb763a..866f5f329 100644 --- a/plugins/webhook-event-forwarder/src/forward-webhook.e2e.spec.ts +++ b/plugins/webhook-event-forwarder/src/forward-webhook.e2e.spec.ts @@ -2,18 +2,43 @@ import type { FlatfileEvent } from '@flatfile/listener' import { createRecords, deleteSpace, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' -import fetchMock from 'jest-fetch-mock' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest' import { webhookEventForward } from '.' -fetchMock.enableMocks() -fetchMock.dontMock() - describe('forward-webhook() e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId let workbookId @@ -28,21 +53,21 @@ describe('forward-webhook() e2e', () => { 'notes', ]) workbookId = workbook.id - sheetId = workbook.sheets[0].id + sheetId = workbook.sheets![0].id }) afterAll(async () => { await deleteSpace(spaceId) }) - let callback: jest.Mock + let callback beforeEach(async () => { - fetchMock.resetMocks() + vi.restoreAllMocks() - callback = jest.fn((data: any, event: FlatfileEvent) => { + callback = vi.fn((data: any, event: FlatfileEvent) => { return { topic: event.topic, data } }) - listener.use(webhookEventForward('example.com', callback)) + listener.use(webhookEventForward('https://example.com', callback)) }) afterEach(() => { @@ -50,13 +75,16 @@ describe('forward-webhook() e2e', () => { }) it('should pass event', async () => { - fetchMock.doMockIf( - 'example.com', - JSON.stringify({ - hello: 'Flatfile', - }), - { status: 200, headers: { 'Content-Type': 'application/json' } } - ) + const mockResponse = { + hello: 'Flatfile', + } + global.fetch = vi.fn().mockResolvedValue({ + status: 200, + headers: { + get: vi.fn().mockReturnValue('application/json'), + }, + json: vi.fn().mockResolvedValue(mockResponse), + }) await createRecords(sheetId, [{ name: 'John' }]) await listener.waitFor('commit:created') @@ -67,17 +95,18 @@ describe('forward-webhook() e2e', () => { expect(callbackReturnValue[0].value).toEqual( expect.objectContaining({ topic: 'commit:created', - data: { - hello: 'Flatfile', - }, + data: mockResponse, }) ) }) it('should error', async () => { - fetchMock.doMockIf('example.com', JSON.stringify({}), { + global.fetch = vi.fn().mockResolvedValue({ status: 500, - headers: { 'Content-Type': 'application/json' }, + headers: { + get: vi.fn().mockReturnValue('application/json'), + }, + json: vi.fn().mockResolvedValue({}), }) await createRecords(sheetId, [{ name: 'Jane' }]) diff --git a/plugins/webhook-event-forwarder/src/forward.webhook.ts b/plugins/webhook-event-forwarder/src/forward.webhook.ts index a345c724c..06a1a7e11 100644 --- a/plugins/webhook-event-forwarder/src/forward.webhook.ts +++ b/plugins/webhook-event-forwarder/src/forward.webhook.ts @@ -33,7 +33,7 @@ export function webhookEventForward( callback ? await callback(data, event) : null } catch (err) { if (options?.debug) { - console.error(err.toString()) + console.error((err as Error).toString()) } callback @@ -41,7 +41,7 @@ export function webhookEventForward( { error: true, message: 'Error received, please try again', - data: err.toString(), + data: (err as Error).toString(), }, event ) diff --git a/plugins/webhook-event-forwarder/tsup.config.mjs b/plugins/webhook-event-forwarder/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/webhook-event-forwarder/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/xlsx-extractor/jest.config.js b/plugins/xlsx-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/xlsx-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/xlsx-extractor/package.json b/plugins/xlsx-extractor/package.json index 4a1c3d41e..810be9fdc 100644 --- a/plugins/xlsx-extractor/package.json +++ b/plugins/xlsx-extractor/package.json @@ -6,18 +6,37 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -29,7 +48,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/xlsx-extractor" }, "license": "ISC", @@ -40,5 +59,8 @@ }, "peerDependencies": { "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/xlsx-extractor/src/header.detection.ts b/plugins/xlsx-extractor/src/header.detection.ts index 5f3638e9a..ada065754 100644 --- a/plugins/xlsx-extractor/src/header.detection.ts +++ b/plugins/xlsx-extractor/src/header.detection.ts @@ -146,7 +146,7 @@ class OriginalDetector extends Headerizer { // This implementation simply returns an explicit list of headers // it was provided with. class ExplicitHeaders extends Headerizer { - headers: string[] + headers: string[] = [] constructor(private readonly options: ExplicitHeadersOptions) { super() @@ -198,7 +198,7 @@ class SpecificRows extends Headerizer { if (header[i] === '') { header[i] = row[i].trim() } else { - header[i] = `${header[i].trim()} ${row[i].trim()}` + header[i] = `${header[i]!.trim()} ${row[i].trim()}` } letters[i] = indexToLetters(i) } @@ -305,10 +305,10 @@ class DataRowAndSubHeaderDetection extends Headerizer { // check if any rows after the header fuzzy match with the // chosen header, indicating it's a sub header for (let i = skip; i < rows.length; i++) { - const row = rows[i] - if (countNonEmptyCells(header) === countNonEmptyCells(row)) { + const row = rows[i] as string[] + if (row && countNonEmptyCells(header) === countNonEmptyCells(row)) { const fuzzyMatches = header.filter((cell, index) => { - const rowCell = row[index].trim() + const rowCell = row[index]!.trim() return rowCell .split(/\s+/) .every((word) => cell.toLowerCase().includes(word.toLowerCase())) diff --git a/plugins/xlsx-extractor/src/index.ts b/plugins/xlsx-extractor/src/index.ts index 986d0f26f..b29b133af 100644 --- a/plugins/xlsx-extractor/src/index.ts +++ b/plugins/xlsx-extractor/src/index.ts @@ -1,5 +1,6 @@ +import type { GetHeadersOptions } from './header.detection' + import { Extractor } from '@flatfile/util-extractor' -import { GetHeadersOptions } from './header.detection' import { parseBuffer } from './parser' /** diff --git a/plugins/xlsx-extractor/src/parser.spec.ts b/plugins/xlsx-extractor/src/parser.spec.ts index 772eba76a..423cfd054 100644 --- a/plugins/xlsx-extractor/src/parser.spec.ts +++ b/plugins/xlsx-extractor/src/parser.spec.ts @@ -1,6 +1,7 @@ import { WorkbookCapture } from '@flatfile/util-extractor' import * as fs from 'fs' import * as path from 'path' +import { beforeAll, describe, expect, test } from 'vitest' import { parseBuffer } from './parser' describe('parser', () => { diff --git a/plugins/xlsx-extractor/src/parser.ts b/plugins/xlsx-extractor/src/parser.ts index 810b89664..80b5bb787 100644 --- a/plugins/xlsx-extractor/src/parser.ts +++ b/plugins/xlsx-extractor/src/parser.ts @@ -1,9 +1,11 @@ -import { SheetCapture, WorkbookCapture } from '@flatfile/util-extractor' +import type { SheetCapture, WorkbookCapture } from '@flatfile/util-extractor' +import type { ExcelExtractorOptions } from '.' +import type { GetHeadersOptions } from './header.detection' + import { mapKeys, mapValues } from 'remeda' import { Readable } from 'stream' import * as XLSX from 'xlsx' -import { ExcelExtractorOptions } from '.' -import { GetHeadersOptions, Headerizer } from './header.detection' +import { Headerizer } from './header.detection' import { prependNonUniqueHeaderColumns } from './utils' type ParseBufferOptions = Omit< @@ -28,10 +30,13 @@ export async function parseBuffer( WTF: true, }) } catch (e) { + const isErrorWithCode = (error: unknown): error is { code: string } => { + return typeof error === 'object' && error !== null && 'code' in error + } // catch the error if the file is too large to parse, and throw a more helpful error. // ref: https://docs.sheetjs.com/docs/miscellany/errors/#invalid-string-length-or-err_string_too_long // i.e. 'Cannot create a string longer than 0x1fffffe8 characters' - if (e.code === 'ERR_STRING_TOO_LONG') { + if (isErrorWithCode(e) && e.code === 'ERR_STRING_TOO_LONG') { if (options?.debug) { console.log( 'File is too large to parse. Try converting this file to CSV.' @@ -58,7 +63,7 @@ export async function parseBuffer( sheetNames.map(async (sheetName) => { const sheet = workbook.Sheets[sheetName] const processedSheet = await convertSheet({ - sheet, + sheet: sheet!, sheetName, rawNumbers: options?.rawNumbers || false, raw: options?.raw || false, @@ -75,7 +80,7 @@ export async function parseBuffer( return [sheetName, processedSheet] }) ) - ).filter(Boolean) as ProcessedSheet[] + ).filter((item): item is [string, SheetCapture] => item !== undefined) return Object.fromEntries(processedSheets) } catch (e) { console.error(e) @@ -128,11 +133,15 @@ async function convertSheet({ const extractValues = (data: Record[]) => data.map((row) => Object.values(row)) - const headerizer = Headerizer.create(headerDetectionOptions) + const headerizer = Headerizer.create( + headerDetectionOptions || { + algorithm: 'default', + } + ) const headerStream = Readable.from(extractValues(rows)) const { skip, header } = await headerizer.getHeaders(headerStream) const headerKey = Math.max(0, skip - 1) - const columnKeys = Object.keys(rows[headerKey]) + const columnKeys = Object.keys(rows[headerKey]!) if (debug) { console.log('Detected header:', header) @@ -149,24 +158,28 @@ async function convertSheet({ } const toExcelHeader = (data: string[], keys: string[]) => - data.reduce((result, value, index) => { - result[keys[index]] = value - return result - }, {}) + data.reduce( + (result, value, index) => { + result[keys[index] as keyof typeof result] = value + return result + }, + {} as Record + ) + const columnHeaders = headerSelectionEnabled ? columnKeys : header const excelHeader = toExcelHeader(columnHeaders, columnKeys) const headers = prependNonUniqueHeaderColumns(excelHeader) while ( rows.length > 0 && - Object.values(rows[rows.length - 1]).every(isNullOrWhitespace) + Object.values(rows[rows.length - 1]!).every(isNullOrWhitespace) ) { rows.pop() } - const data = rows.map((row) => + const data = rows.map((row: Record) => mapValues( - mapKeys(row, (key) => headers[key as keyof typeof headers]), + mapKeys(row, (key) => headers[key as keyof typeof headers]!), (value) => ({ value }) ) ) diff --git a/plugins/xlsx-extractor/src/utils.spec.ts b/plugins/xlsx-extractor/src/utils.spec.ts index ab7945f96..47cb02a4f 100644 --- a/plugins/xlsx-extractor/src/utils.spec.ts +++ b/plugins/xlsx-extractor/src/utils.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { prependNonUniqueHeaderColumns } from './utils' describe('utils', () => { diff --git a/plugins/xlsx-extractor/tsup.config.mjs b/plugins/xlsx-extractor/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/xlsx-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/plugins/xml-extractor/jest.config.js b/plugins/xml-extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/xml-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/xml-extractor/package.json b/plugins/xml-extractor/package.json index 406ceb8aa..e04c8cb90 100644 --- a/plugins/xml-extractor/package.json +++ b/plugins/xml-extractor/package.json @@ -1,22 +1,50 @@ { "name": "@flatfile/plugin-xml-extractor", "version": "0.7.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/plugins/xml-extractor", "description": "A plugin for parsing .xml files in Flatfile.", "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -28,7 +56,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/xml-extractor" }, "license": "ISC", @@ -39,5 +67,8 @@ }, "peerDependencies": { "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/plugins/xml-extractor/src/parser.spec.ts b/plugins/xml-extractor/src/parser.spec.ts index 8cc7ea9c4..0609b59f2 100644 --- a/plugins/xml-extractor/src/parser.spec.ts +++ b/plugins/xml-extractor/src/parser.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from 'vitest' import { findRoot, headersFromObjectList, diff --git a/plugins/xml-extractor/tsconfig.json b/plugins/xml-extractor/tsconfig.json index b04604289..bcdf7b52c 100644 --- a/plugins/xml-extractor/tsconfig.json +++ b/plugins/xml-extractor/tsconfig.json @@ -1,5 +1,5 @@ { - "$schema": "https://json.schemastore.org/tsconfig", + "$schema": "https://json.schemastore.org/tsc --noEmitonfig", "display": "Base", "compilerOptions": { "allowSyntheticDefaultImports": true, diff --git a/plugins/xml-extractor/tsup.config.mjs b/plugins/xml-extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/xml-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/yaml-schema/README.md b/plugins/yaml-schema/README.md index aa81d3c38..2ad88a116 100644 --- a/plugins/yaml-schema/README.md +++ b/plugins/yaml-schema/README.md @@ -87,7 +87,7 @@ export default function (listener: FlatfileListener) { const callback = async ( event: FlatfileEvent, workbookIds: string[], - tick: (progress?: number, message?: string) => Promise + tick: (progress: number, message?: string) => Promise ) => { const { spaceId } = event.context; await api.documents.create(spaceId, { diff --git a/plugins/yaml-schema/jest.config.js b/plugins/yaml-schema/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/plugins/yaml-schema/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/yaml-schema/package.json b/plugins/yaml-schema/package.json index 3369010b0..0b9861aa4 100644 --- a/plugins/yaml-schema/package.json +++ b/plugins/yaml-schema/package.json @@ -6,18 +6,45 @@ "registryMetadata": { "category": "schema-converters" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -29,7 +56,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/yaml-schema" }, "license": "ISC", @@ -44,7 +71,9 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", + "@types/js-yaml": "^4.0.9", "express": "^4.18.2", "jest-fetch-mock": "^3.0.3" } diff --git a/plugins/yaml-schema/src/index.ts b/plugins/yaml-schema/src/index.ts index 89049dc18..bd913e5fc 100644 --- a/plugins/yaml-schema/src/index.ts +++ b/plugins/yaml-schema/src/index.ts @@ -5,7 +5,7 @@ import type { ModelToSheetConfig, PartialWorkbookConfig } from './setup.factory' import { generateSetup } from './setup.factory' export function configureSpaceWithYamlSchema( - models?: ModelToSheetConfig[], + models: ModelToSheetConfig[], options?: { workbookConfig?: PartialWorkbookConfig debug?: boolean diff --git a/plugins/yaml-schema/src/setup.factory.spec.ts b/plugins/yaml-schema/src/setup.factory.spec.ts index f0d836962..d91d10b95 100644 --- a/plugins/yaml-schema/src/setup.factory.spec.ts +++ b/plugins/yaml-schema/src/setup.factory.spec.ts @@ -1,10 +1,11 @@ import fs from 'fs' -import fetchMock from 'jest-fetch-mock' import path from 'path' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { generateSetup } from '.' -fetchMock.enableMocks() -fetchMock.dontMock() +// Create a mock for fetch +const fetchMock = vi.fn() +vi.stubGlobal('fetch', fetchMock) describe('configureSpaceWithYamlSchema() e2e', () => { const expectedResult = { @@ -55,7 +56,7 @@ describe('configureSpaceWithYamlSchema() e2e', () => { } beforeEach(() => { - fetchMock.resetMocks() + fetchMock.mockClear() }) it('should generate a SetupFactory from YAML Schema', async () => { @@ -63,8 +64,10 @@ describe('configureSpaceWithYamlSchema() e2e', () => { path.resolve(__dirname, 'mock/schema.yml'), 'utf-8' ) - fetchMock.doMockIf('http://example.com/schema.yaml', schema, { + fetchMock.mockResolvedValueOnce({ + ok: true, status: 200, + text: () => Promise.resolve(schema), }) const results = await generateSetup([ diff --git a/plugins/yaml-schema/src/setup.factory.ts b/plugins/yaml-schema/src/setup.factory.ts index 45a7d952d..cb6611988 100644 --- a/plugins/yaml-schema/src/setup.factory.ts +++ b/plugins/yaml-schema/src/setup.factory.ts @@ -1,7 +1,7 @@ import type { Flatfile } from '@flatfile/api' -import { generateFields } from '@flatfile/plugin-convert-json-schema' -import { Setup, SetupFactory } from '@flatfile/plugin-space-configure' +import type { Setup, SetupFactory } from '@flatfile/plugin-space-configure' +import { generateFields } from '@flatfile/plugin-convert-json-schema' import jsYaml from 'js-yaml' export interface ModelToSheetConfig extends PartialSheetConfig { @@ -19,20 +19,20 @@ export interface PartialWorkbookConfig } export async function generateSetup( - models?: ModelToSheetConfig[], + models: ModelToSheetConfig[], options?: { workbookConfig?: PartialWorkbookConfig debug?: boolean } ): Promise { const schemas = await getSchemas(models) - const asdf = schemas.map((schema) => jsYaml.load(schema)) + const jsonSchemas = schemas.map((schema) => jsYaml.load(schema)) const sheets = await Promise.all( models.map(async (model: ModelToSheetConfig, i) => { - const data = asdf[i] + const data: any = jsonSchemas[i] const fields = await generateFields(data) - delete model.sourceUrl + return { name: model?.name || data.title, ...(data?.description && { description: data.description }), @@ -56,7 +56,7 @@ export async function generateSetup( return setup } -async function getSchemas(models?: ModelToSheetConfig[]) { +async function getSchemas(models: ModelToSheetConfig[]) { const schemas = models.map(async (model: ModelToSheetConfig) => { return await fetchExternalReference(model.sourceUrl) }) diff --git a/plugins/yaml-schema/tsup.config.mjs b/plugins/yaml-schema/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/plugins/yaml-schema/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/plugins/zip-extractor/jest.config.js b/plugins/zip-extractor/jest.config.js deleted file mode 100644 index 97444dbb0..000000000 --- a/plugins/zip-extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 90_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/plugins/zip-extractor/package.json b/plugins/zip-extractor/package.json index cba3b89a6..ee83bd980 100644 --- a/plugins/zip-extractor/package.json +++ b/plugins/zip-extractor/package.json @@ -6,18 +6,37 @@ "registryMetadata": { "category": "extractors" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -29,7 +48,7 @@ "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "plugins/zip-extractor" }, "license": "ISC", @@ -45,6 +64,7 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1", "@types/adm-zip": "^0.4.3" } diff --git a/plugins/zip-extractor/src/index.ts b/plugins/zip-extractor/src/index.ts index bdd022c31..6bdbe24dc 100644 --- a/plugins/zip-extractor/src/index.ts +++ b/plugins/zip-extractor/src/index.ts @@ -93,7 +93,7 @@ export const ZipExtractor = (options: PluginOptions = {}) => { } as Flatfile.JobCompleteDetails } catch (e) { logInfo('@flatfile/plugin-zip-extractor', `error ${e}`) - throw new Error(`Extraction failed ${e.message}`) + throw new Error(`Extraction failed ${(e as Error).message}`) } } ) diff --git a/plugins/zip-extractor/src/zip.extractor.e2e.spec.ts b/plugins/zip-extractor/src/zip.extractor.e2e.spec.ts index 0438f978d..9150fe8f1 100644 --- a/plugins/zip-extractor/src/zip.extractor.e2e.spec.ts +++ b/plugins/zip-extractor/src/zip.extractor.e2e.spec.ts @@ -3,21 +3,50 @@ import { deleteSpace, getEnvironmentId, getFiles, - setupListener, + setupDriver, setupSpace, + TestListener, } from '@flatfile/utils-testing' import * as fs from 'fs' import * as path from 'path' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + test, +} from 'vitest' import { ZipExtractor } from '.' const api = new FlatfileClient() describe('ZipExtractor e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId beforeAll(async () => { + const environmentId = getEnvironmentId()! const space = await setupSpace() spaceId = space.id @@ -28,7 +57,7 @@ describe('ZipExtractor e2e', () => { ) await api.files.upload(stream, { spaceId, - environmentId: getEnvironmentId(), + environmentId, }) }) @@ -37,7 +66,6 @@ describe('ZipExtractor e2e', () => { }) describe('test-basic.zip', () => { - jest.mock('fs') test('files extracted and uploaded to space', async () => { await listener.waitFor('file:created', 4) const filesPostUpload = await getFiles(spaceId) diff --git a/plugins/zip-extractor/tsup.config.mjs b/plugins/zip-extractor/tsup.config.mjs new file mode 100644 index 000000000..2070a0891 --- /dev/null +++ b/plugins/zip-extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({ includeBrowser: false }) diff --git a/support/common-utils/package.json b/support/common-utils/package.json index bb0e31f80..0e72ff027 100644 --- a/support/common-utils/package.json +++ b/support/common-utils/package.json @@ -1,9 +1,11 @@ { "name": "@flatfile/common-plugin-utils", "version": "1.0.2", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/support/common-utils", "description": "A library containing common utilities and helpers for plugins", "keywords": [], "author": "Flatfile", + "type": "module", "engines": { "node": ">= 16" }, @@ -12,23 +14,52 @@ "last 2 versions", "not dead" ], - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "support/common-utils" }, - "license": "ISC" + "license": "ISC", + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" + } } diff --git a/support/common-utils/src/async.map.spec.ts b/support/common-utils/src/async.map.spec.ts index 0f3b9742e..65ab8f21c 100644 --- a/support/common-utils/src/async.map.spec.ts +++ b/support/common-utils/src/async.map.spec.ts @@ -1,8 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' import { asyncMap } from './async.map' describe('asyncMap', () => { const mockArray = ['a', 'b', 'c'] - const mockCallback = jest + const mockCallback = vi .fn() .mockImplementation((item) => Promise.resolve(item.toUpperCase())) @@ -28,7 +29,7 @@ describe('asyncMap', () => { it('rejects when any callback function rejects', async () => { const mockError = new Error('Error') - const mockCallbackWithError = jest.fn().mockRejectedValueOnce(mockError) + const mockCallbackWithError = vi.fn().mockRejectedValueOnce(mockError) await expect( asyncMap(mockArray, mockCallbackWithError) ).rejects.toBeTruthy() @@ -36,7 +37,7 @@ describe('asyncMap', () => { it('times out when any callback function takes too long', async () => { const LONG_TIMEOUT = 100 - const mockSlowCallback = jest + const mockSlowCallback = vi .fn() .mockImplementation( () => new Promise((resolve) => setTimeout(resolve, LONG_TIMEOUT + 10)) diff --git a/support/common-utils/tsup.config.mjs b/support/common-utils/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/support/common-utils/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/test/betterConsoleLog.js b/test/betterConsoleLog.js deleted file mode 100644 index 39c00db08..000000000 --- a/test/betterConsoleLog.js +++ /dev/null @@ -1,2 +0,0 @@ -console.log = (...msgs) => - msgs.forEach((msg) => process.stdout.write(msg + '\n')) diff --git a/test/dotenv-config.js b/test/dotenv-config.js deleted file mode 100644 index 1d04057f5..000000000 --- a/test/dotenv-config.js +++ /dev/null @@ -1,10 +0,0 @@ -const dotenv = require('dotenv-flow') -const dotenvExpand = require('dotenv-expand') - -const path = require('path') - -const env = dotenv.config({ - path: path.join(__dirname, '..'), -}) - -dotenvExpand.expand(env) diff --git a/test/setup-global.js b/test/setup-global.ts similarity index 100% rename from test/setup-global.js rename to test/setup-global.ts diff --git a/test/toBePendingMatcher.ts b/test/toBePendingMatcher.ts index 72c9eb95f..1d7738d66 100644 --- a/test/toBePendingMatcher.ts +++ b/test/toBePendingMatcher.ts @@ -1,18 +1,16 @@ -import type { MatcherFunction } from 'expect' import * as util from 'node:util' +import { expect } from 'vitest' -declare global { - namespace jest { - interface Matchers { - toBePending(): R - } - interface Expect { - toBePending(): JestMatchers - } +declare module 'vitest' { + interface Assertion { + toBePending(): T + } + interface AsymmetricMatchersContaining { + toBePending(): void } } -const toBePending: MatcherFunction<[recieved: unknown]> = (received) => { +const toBePending = (received: unknown) => { const isPending = (promise: Promise) => util.inspect(promise).includes('pending') @@ -22,16 +20,12 @@ const toBePending: MatcherFunction<[recieved: unknown]> = (received) => { const pass = isPending(received) - if (pass) { - return { - message: () => `expected recieved promise not to be pending`, - pass: true, - } - } else { - return { - message: () => `expected recieved promise to be pending`, - pass: false, - } + return { + pass, + message: () => + pass + ? `expected received promise not to be pending` + : `expected received promise to be pending`, } } diff --git a/test/unit.cleanup.js b/test/unit.cleanup.js deleted file mode 100644 index a7e25df38..000000000 --- a/test/unit.cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -const getHeapSpaceStatistics = require('v8') - -afterAll(() => { - // cleanup mocks and modules and allow the GC to do its thing: - jest.resetModules() - jest.clearAllMocks() - jest.clearAllTimers() - if (process.env['PRINT_V8_STATS'] === 'true') { - console.log(`${JSON.stringify(getHeapSpaceStatistics(), null, 4)}`) - } -}) diff --git a/tsconfig.json b/tsconfig.json index b3688e684..821252aba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,22 @@ { "compilerOptions": { + /* Base Options: */ "esModuleInterop": true, "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", "isolatedModules": true, - "lib": [ - "es2015", - "dom" - ], - "target": "es2015", - "moduleResolution": "node" + "verbatimModuleSyntax": true, + /* Strictness */ + "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + /* If transpiling with TypeScript: */ + "module": "Preserve", + "lib": [ "es2022", "dom" ], + "noEmit": true }, "exclude": [ "**/node_modules/", diff --git a/turbo.json b/turbo.json index 8e9c481ff..ba3ceb116 100644 --- a/turbo.json +++ b/turbo.json @@ -27,6 +27,9 @@ "test:e2e": { "outputs": [], "env": ["TURBO_CACHE_ENABLED"] + }, + "checks": { + "dependsOn": ["^build"] } } } diff --git a/utils/common/jest.config.js b/utils/common/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/common/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/common/package.json b/utils/common/package.json index f76968b8b..a3cb5305a 100644 --- a/utils/common/package.json +++ b/utils/common/package.json @@ -1,47 +1,56 @@ { "name": "@flatfile/util-common", "version": "1.4.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/utils/common", "description": "A library containing common utilities and helpers for plugins.", "keywords": [], "author": "Carl Brugger", + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/common" }, "license": "ISC", @@ -54,6 +63,6 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/common/rollup.config.mjs b/utils/common/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/utils/common/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/utils/common/src/all.records.spec.ts b/utils/common/src/all.records.e2e.spec.ts similarity index 87% rename from utils/common/src/all.records.spec.ts rename to utils/common/src/all.records.e2e.spec.ts index 469f41dca..f5b985489 100644 --- a/utils/common/src/all.records.spec.ts +++ b/utils/common/src/all.records.e2e.spec.ts @@ -1,5 +1,6 @@ import { Flatfile, FlatfileClient } from '@flatfile/api' import { getEnvironmentId, setupSpace } from '@flatfile/utils-testing' +import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest' import { getRecordsRaw, processRecords } from './all.records' const api = new FlatfileClient() @@ -38,14 +39,14 @@ describe('all.records', () => { }) const findSheetId = (slug: string) => { - return workbook.sheets.find((sheet) => sheet.config.slug === slug).id + return workbook.sheets?.find((sheet) => sheet.config.slug === slug)?.id } - emptySheetId = findSheetId('empty') - populatedSheetId = findSheetId('populated') + emptySheetId = findSheetId('empty') as string + populatedSheetId = findSheetId('populated') as string - const generateRecords = (length) => { - const records = [] + const generateRecords = (length: number) => { + const records: Flatfile.RecordData[] = [] for (let i = 0; i < length; i++) { records.push({ name: { value: 'John Doe' }, @@ -64,7 +65,7 @@ describe('all.records', () => { }) it('should call callback function', async () => { - const callback = jest.fn() + const callback = vi.fn() await processRecords(emptySheetId, callback) expect(callback).toHaveBeenCalled() @@ -76,7 +77,7 @@ describe('all.records', () => { }) it('should return results', async () => { - const callback = jest.fn((records) => records.length) + const callback = vi.fn((records) => records.length) const emptyResults = await processRecords(emptySheetId, callback) expect(emptyResults).toEqual([0]) @@ -86,7 +87,7 @@ describe('all.records', () => { }) it('should filter records by "valid" status', async () => { - const callback = jest.fn((records) => records.length) + const callback = vi.fn((records) => records.length) const emptyResults = await processRecords(emptySheetId, callback, { filter: 'valid', @@ -104,7 +105,7 @@ describe('all.records', () => { }) it('should filter records by "error" status', async () => { - const callback = jest.fn((records) => records.length) + const callback = vi.fn((records) => records.length) const emptyResults = await processRecords(emptySheetId, callback, { filter: 'error', @@ -122,7 +123,7 @@ describe('all.records', () => { }) it('should fetch records with custom page size', async () => { - const callback = jest.fn((records) => records.length) + const callback = vi.fn((records) => records.length) const emptyResults = await processRecords(emptySheetId, callback, { pageSize: 500, diff --git a/utils/common/src/all.records.ts b/utils/common/src/all.records.ts index 13566425a..66c39ac81 100644 --- a/utils/common/src/all.records.ts +++ b/utils/common/src/all.records.ts @@ -81,7 +81,7 @@ export async function processRecords( // Delete updatedAt records.forEach((record) => Object.values(record.values).forEach( - (value: Record) => delete value.updatedAt + (value: Flatfile.CellValue, _, __) => delete value.updatedAt ) ) diff --git a/utils/common/src/async.batch.spec.ts b/utils/common/src/async.batch.spec.ts index 131d7d97a..7fdc15be9 100644 --- a/utils/common/src/async.batch.spec.ts +++ b/utils/common/src/async.batch.spec.ts @@ -1,10 +1,11 @@ import type { FlatfileEvent } from '@flatfile/listener' +import { describe, expect, it, vi } from 'vitest' import { asyncBatch, chunkify } from './async.batch' describe('asyncBatch', () => { it('should split the array into chunks and call the callback for each chunk', async () => { const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return Promise.resolve(chunk.reduce((sum, num) => sum + num, 0)) }) const options = { @@ -24,7 +25,7 @@ describe('asyncBatch', () => { it('should handle empty array', async () => { const arr: number[] = [] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return Promise.resolve(chunk.reduce((sum, num) => sum + num, 0)) }) const options = { @@ -40,7 +41,7 @@ describe('asyncBatch', () => { it('should handle array smaller than chunk size', async () => { const arr = [1, 2] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return Promise.resolve(chunk.reduce((sum, num) => sum + num, 0)) }) const options = { @@ -57,7 +58,7 @@ describe('asyncBatch', () => { it('should handle array size equal to chunk size', async () => { const arr = [1, 2, 3] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return Promise.resolve(chunk.reduce((sum, num) => sum + num, 0)) }) const options = { @@ -74,7 +75,7 @@ describe('asyncBatch', () => { it('should handle parallel value greater than array size', async () => { const arr = [1, 2, 3, 4, 5] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return Promise.resolve(chunk.reduce((sum, num) => sum + num, 0)) }) const options = { @@ -93,7 +94,7 @@ describe('asyncBatch', () => { it('should handle asynchronous callbacks', async () => { const arr = [1, 2, 3] - const callback = jest.fn((chunk: number[], event?: FlatfileEvent) => { + const callback = vi.fn((chunk: number[], event?: FlatfileEvent) => { return new Promise((resolve) => { setTimeout(() => { resolve(chunk.reduce((sum, num) => sum + num, 0)) diff --git a/utils/common/src/async.batch.ts b/utils/common/src/async.batch.ts index ff9751f6a..372c83b70 100644 --- a/utils/common/src/async.batch.ts +++ b/utils/common/src/async.batch.ts @@ -23,7 +23,7 @@ export async function asyncBatch( console.log(`Thread ${threadId} processing chunk ${chunkIndex}`) } - const result = await callback(chunks[chunkIndex], event) + const result = await callback(chunks[chunkIndex] || [], event) results.set(chunkIndex, result) } diff --git a/utils/common/src/logging.helper.spec.ts b/utils/common/src/logging.helper.spec.ts index 145475346..6b0562bfa 100644 --- a/utils/common/src/logging.helper.spec.ts +++ b/utils/common/src/logging.helper.spec.ts @@ -1,10 +1,11 @@ +import { describe, expect, test, vi } from 'vitest' import { log, logError, logInfo, logWarn } from '.' describe('logging', () => { test('log()', () => { - const logSpy = jest.spyOn(global.console, 'log') - const logWarnSpy = jest.spyOn(global.console, 'warn') - const logErrorSpy = jest.spyOn(global.console, 'error') + const logSpy = vi.spyOn(global.console, 'log') + const logWarnSpy = vi.spyOn(global.console, 'warn') + const logErrorSpy = vi.spyOn(global.console, 'error') log('@flatfile/util-common', 'Log an INFO message') expect(logSpy).toHaveBeenCalled() @@ -30,7 +31,7 @@ describe('logging', () => { }) test('logInfo()', () => { - const logSpy = jest.spyOn(global.console, 'log') + const logSpy = vi.spyOn(global.console, 'log') logInfo('@flatfile/util-common', 'Log an INFO message') expect(logSpy).toHaveBeenCalled() @@ -42,7 +43,7 @@ describe('logging', () => { }) test('logWarn()', () => { - const logWarnSpy = jest.spyOn(global.console, 'warn') + const logWarnSpy = vi.spyOn(global.console, 'warn') logWarn('@flatfile/util-common', 'Log a WARN message') expect(logWarnSpy).toHaveBeenCalled() @@ -54,7 +55,7 @@ describe('logging', () => { }) test('logError()', () => { - const logErrorSpy = jest.spyOn(global.console, 'error') + const logErrorSpy = vi.spyOn(global.console, 'error') logError('@flatfile/util-common', 'Log a FATAL message') expect(logErrorSpy).toHaveBeenCalled() diff --git a/utils/common/src/simple.records.ts b/utils/common/src/simple.records.ts index 80422cbb8..b6d0ffa4f 100644 --- a/utils/common/src/simple.records.ts +++ b/utils/common/src/simple.records.ts @@ -1,9 +1,9 @@ import { Flatfile } from '@flatfile/api' +import type { TickHelper } from './all.records' import { createAllRecords, getRecordsRaw, getSheetLength, - TickHelper, updateAllRecords, } from './all.records' import { asyncLimitSeries } from './async.helpers' @@ -92,7 +92,7 @@ export class Simplified { * { foo: bar } => { foo : {value: bar}} * @param obj */ - static toRecordValues(obj: SimpleRecord): Flatfile.RecordData { + static toRecordValues(obj: SimpleValues): Flatfile.RecordData { return Object.fromEntries( Object.entries(obj) .filter(([key]) => key !== '_id' && key !== '_metadata') @@ -148,7 +148,7 @@ export class Simplified { } } -export type Primitive = string | number | null | boolean +export type Primitive = string | number | boolean export type SimpleRecord = { _id: string diff --git a/utils/common/src/slugify.spec.ts b/utils/common/src/slugify.spec.ts index 43ed4fc32..af2d3bab4 100644 --- a/utils/common/src/slugify.spec.ts +++ b/utils/common/src/slugify.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { slugify } from './slugify' describe('slugify', () => { diff --git a/utils/common/tsup.config.mjs b/utils/common/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/common/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/utils/extractor/jest.config.js b/utils/extractor/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/extractor/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/extractor/package.json b/utils/extractor/package.json index f1df9dd60..5bb393e40 100644 --- a/utils/extractor/package.json +++ b/utils/extractor/package.json @@ -8,23 +8,50 @@ "category-utils" ], "author": "Carl Brugger", + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/main.js", - "module": "dist/module.mjs", - "types": "dist/types.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/extractor" }, "license": "ISC", @@ -35,5 +62,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/extractor/src/index.ts b/utils/extractor/src/index.ts index f2d76e2a4..ac7b3c6c7 100644 --- a/utils/extractor/src/index.ts +++ b/utils/extractor/src/index.ts @@ -116,7 +116,7 @@ export const Extractor = ( } await createAllRecords( sheet.id, - capture[sheet.name].data.map(normalizeRecordKeys), + capture[sheet.name]!.data.map(normalizeRecordKeys), async (_progress, part, totalParts) => { await tick( Math.min(99, Math.round(10 + 90 * (part / totalParts))), @@ -142,7 +142,7 @@ export const Extractor = ( }) } catch (e) { if (debug) { - console.log(`Extractor error: ${e.message}`) + console.log(`Extractor error: ${(e as Error).message}`) } await api.files.update(fileId, { status: 'failed', @@ -150,7 +150,7 @@ export const Extractor = ( await api.jobs.fail(jobId, { info: 'Extraction failed', outcome: { - message: e.message, + message: (e as Error).message, }, }) } @@ -218,7 +218,7 @@ function normalizeRecordKeys(record: Flatfile.RecordData): Flatfile.RecordData { const normalizedRecord = {} as Flatfile.RecordData for (const key in record) { if (record.hasOwnProperty(key)) { - normalizedRecord[normalizeKey(key)] = record[key] + normalizedRecord[normalizeKey(key)] = record[key]! } } return normalizedRecord @@ -226,34 +226,43 @@ function normalizeRecordKeys(record: Flatfile.RecordData): Flatfile.RecordData { export function keysToFields({ keys, - descriptions = {}, + descriptions, }: { keys: string[] - descriptions?: Record + descriptions: Record | null | undefined }): Flatfile.Property[] { let index = 0 const countOfKeys: Record< string, { count: number; index: number; metadata?: { fieldRef: string } } - > = keys.reduce((acc, key) => { - if (!key) key = '' - if (typeof key !== 'string') { - key = String(key) - } - key = key.trim() - if (key === '') { - key = 'empty' - } - if (acc[key]) { - const incrementKey = `${key}_${acc[key].count}` - acc[incrementKey] = { count: 1, index } - acc[key].count++ - } else { - acc[key] = { count: 1, index } - } - index++ - return acc - }, {}) + > = keys.reduce( + ( + acc: Record< + string, + { count: number; index: number; metadata?: { fieldRef: string } } + >, + key + ) => { + if (!key) key = '' + if (typeof key !== 'string') { + key = String(key) + } + key = key.trim() + if (key === '') { + key = 'empty' + } + if (acc[key]) { + const incrementKey = `${key}_${acc[key]?.count ?? 0}` + acc[incrementKey] = { count: 1, index } + acc[key] = { ...acc[key], count: (acc[key]?.count ?? 0) + 1, index } + } else { + acc[key] = { count: 1, index } + } + index++ + return acc + }, + {} + ) return Object.entries(countOfKeys) .sort((a, b) => a[1].index - b[1].index) .map(([key, _]) => ({ @@ -269,8 +278,8 @@ async function updateSheetMetadata( workbookCapture: WorkbookCapture ): Promise { await Promise.all( - workbook.sheets.map(async (sheet) => { - const { metadata } = workbookCapture[sheet.name] + workbook.sheets!.map(async (sheet) => { + const { metadata } = workbookCapture[sheet.name]! await api.sheets.updateSheet(sheet.id, { metadata, }) diff --git a/utils/extractor/tsup.config.mjs b/utils/extractor/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/extractor/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/utils/fetch-schema/jest.config.js b/utils/fetch-schema/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/fetch-schema/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/fetch-schema/package.json b/utils/fetch-schema/package.json index 0d55de69b..e259da737 100644 --- a/utils/fetch-schema/package.json +++ b/utils/fetch-schema/package.json @@ -1,29 +1,57 @@ { "name": "@flatfile/util-fetch-schema", "version": "0.2.4", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/utils/fetch-schema", "description": "A utility for fetching schemas for processing", "registryMetadata": { "category": "utilities" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [], "author": "Morgan Daley", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/fetch-schema" }, "license": "ISC", @@ -32,5 +60,8 @@ }, "peerDependencies": { "@flatfile/api": "^1.9.19" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/fetch-schema/src/index.ts b/utils/fetch-schema/src/index.ts index c330751c7..3fc95ef48 100644 --- a/utils/fetch-schema/src/index.ts +++ b/utils/fetch-schema/src/index.ts @@ -15,7 +15,7 @@ export interface PartialWorkbookConfig name?: string } -export async function getSchemas(models?: ModelToSheetConfig[]) { +export async function getSchemas(models: ModelToSheetConfig[]) { const schemas = models.map(async (model: ModelToSheetConfig) => { return await fetchExternalReference(model.sourceUrl) }) diff --git a/utils/fetch-schema/tsup.config.mjs b/utils/fetch-schema/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/fetch-schema/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/utils/file-buffer/jest.config.js b/utils/file-buffer/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/file-buffer/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/file-buffer/package.json b/utils/file-buffer/package.json index e9602b90d..17c640507 100644 --- a/utils/file-buffer/package.json +++ b/utils/file-buffer/package.json @@ -6,18 +6,45 @@ "registryMetadata": { "category": "utilities" }, + "type": "module", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [ @@ -27,7 +54,7 @@ "author": "David Boskovic", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/file-buffer" }, "license": "ISC", @@ -35,5 +62,8 @@ "peerDependencies": { "@flatfile/api": "^1.9.19", "@flatfile/listener": "^1.1.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/file-buffer/tsup.config.mjs b/utils/file-buffer/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/file-buffer/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/utils/response-rejection/jest.config.js b/utils/response-rejection/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/response-rejection/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/response-rejection/package.json b/utils/response-rejection/package.json index 06a9a4b96..901e8e340 100644 --- a/utils/response-rejection/package.json +++ b/utils/response-rejection/package.json @@ -6,37 +6,45 @@ "registryMetadata": { "category": "utilities" }, + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest --passWithNoTests" }, "keywords": [ @@ -46,7 +54,7 @@ "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/response-rejection" }, "license": "ISC", @@ -57,6 +65,6 @@ "@flatfile/api": "^1.9.19" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/response-rejection/rollup.config.mjs b/utils/response-rejection/rollup.config.mjs deleted file mode 100644 index bee3ee8fa..000000000 --- a/utils/response-rejection/rollup.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const external = ['@flatfile/util-common'] - -const config = buildConfig({ external }) - -export default config diff --git a/utils/response-rejection/src/index.ts b/utils/response-rejection/src/index.ts index 7ced8595e..b1b4c6f48 100644 --- a/utils/response-rejection/src/index.ts +++ b/utils/response-rejection/src/index.ts @@ -26,14 +26,14 @@ export async function responseRejectionHandler( let totalRejectedRecords = 0 for (const sheet of responseRejection.sheets || []) { - const count = await updateSheet(sheet, responseRejection.deleteSubmitted) + const count = await updateSheet(sheet, !!responseRejection.deleteSubmitted) totalRejectedRecords += count } const message = responseRejection.message ?? getMessage(totalRejectedRecords) let next if (!responseRejection.deleteSubmitted && totalRejectedRecords > 0) { - next = getNext(totalRejectedRecords, responseRejection.sheets[0].sheetId) + next = getNext(totalRejectedRecords, responseRejection.sheets[0]!.sheetId) } return { @@ -47,7 +47,7 @@ export async function responseRejectionHandler( } } -function getMessage(totalRejectedRecords) { +function getMessage(totalRejectedRecords: number) { return totalRejectedRecords > 0 ? `During the data submission process, ${totalRejectedRecords} records were rejected. Please review and correct these records before resubmitting.` : 'The data has been successfully submitted without any rejections. This task is now complete.' @@ -94,7 +94,7 @@ async function updateSheet( const rejectedRecord = sheetRejections.rejectedRecords.find( (item) => item.id === record.id ) - record.values['submissionStatus'].value = rejectedRecord + record.values['submissionStatus']!.value = rejectedRecord ? 'rejected' : 'submitted' }) @@ -117,7 +117,7 @@ async function updateSheet( rejectedRecord?.values.forEach((value) => { if (record.values[value.field]) { - record.values[value.field].messages = [ + record.values[value.field]!.messages = [ { type: 'error', message: value.message }, ] } diff --git a/utils/response-rejection/tsup.config.mjs b/utils/response-rejection/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/response-rejection/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/utils/testing/jest.config.js b/utils/testing/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/utils/testing/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/utils/testing/package.json b/utils/testing/package.json index 9565af7e8..e5c37d42f 100644 --- a/utils/testing/package.json +++ b/utils/testing/package.json @@ -1,19 +1,47 @@ { "name": "@flatfile/utils-testing", "version": "0.3.1", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/utils/testing", "description": "A utility package for testing plugins", "engines": { "node": ">= 16" }, - "source": "src/index.ts", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "type": "module", + "exports": { + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], "scripts": { - "build": "parcel build", - "build:watch": "parcel watch", - "build:prod": "NODE_ENV=production parcel build", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -21,7 +49,7 @@ "author": "Carl Brugger", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "utils/testing" }, "license": "ISC", @@ -31,5 +59,8 @@ "@flatfile/listener-driver-pubsub": "^2.0.0", "@jest/globals": "^29.6.4", "cross-fetch": "^4.0.0" + }, + "devDependencies": { + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/utils/testing/src/test.helpers.ts b/utils/testing/src/test.helpers.ts index 4268897a4..d50857d72 100644 --- a/utils/testing/src/test.helpers.ts +++ b/utils/testing/src/test.helpers.ts @@ -1,7 +1,7 @@ import { Flatfile, FlatfileClient } from '@flatfile/api' import { PubSubDriver } from '@flatfile/listener-driver-pubsub' -import { afterAll, afterEach, beforeAll, beforeEach } from '@jest/globals' import fetch from 'cross-fetch' +import { afterAll, afterEach, beforeAll, beforeEach } from 'vitest' import { TestListener } from './test.listener' const api = new FlatfileClient() @@ -12,7 +12,7 @@ const api = new FlatfileClient() * @returns The environment id string. */ export function getEnvironmentId(): string { - return process.env.FLATFILE_ENVIRONMENT_ID + return `${process.env.FLATFILE_ENVIRONMENT_ID}` } /** @@ -36,15 +36,22 @@ export async function deleteSpace(spaceId: string): Promise { return await api.spaces.delete(spaceId) } +export function setupDriver() { + const environmentId = getEnvironmentId() + if (!environmentId) { + throw new Error('environmentId is not defined') + } + + return new PubSubDriver(environmentId) +} + /** * Establishes a connection to a PubSub channel and binds a listener to it. * * @param listener - The listener instance to bind to the channel. */ export function streamEvents(listener: TestListener) { - const environmentId = getEnvironmentId() - - const driver = new PubSubDriver(environmentId) + const driver = setupDriver() beforeAll(async () => { await driver.start() diff --git a/utils/testing/src/test.listener.spec.ts b/utils/testing/src/test.listener.spec.ts index 89c390ab3..8dc91fb1f 100644 --- a/utils/testing/src/test.listener.spec.ts +++ b/utils/testing/src/test.listener.spec.ts @@ -1,5 +1,6 @@ import { TestListener } from './index' +import { beforeEach, describe, expect, it, vi } from 'vitest' import '../../../test/toBePendingMatcher' const currentEventLoopEnd = () => @@ -40,8 +41,8 @@ describe('TestListener', () => { }) it('fulfills pending promises that match the event', async () => { - const exampleReady = jest.fn() - const exampleCompleted = jest.fn() + const exampleReady = vi.fn() + const exampleCompleted = vi.fn() listener.waitFor('example:ready').then(exampleReady) listener diff --git a/utils/testing/src/test.listener.ts b/utils/testing/src/test.listener.ts index cf448967a..d67b9a1a5 100644 --- a/utils/testing/src/test.listener.ts +++ b/utils/testing/src/test.listener.ts @@ -1,7 +1,5 @@ -import type { Flatfile } from '@flatfile/api' - import { - EventFilter, + type EventFilter, FlatfileEvent, FlatfileListener, } from '@flatfile/listener' @@ -29,11 +27,11 @@ export class TestListener extends FlatfileListener { * * @param event The event being dispatched */ - async dispatchEvent(event: any): Promise { + override async dispatchEvent(event: any): Promise { await super.dispatchEvent(event) if (this.invocations.has(event.topic)) { - this.invocations.get(event.topic).push(event) + this.invocations.get(event.topic)?.push(event) } else { this.invocations.set(event.topic, [event]) } diff --git a/utils/testing/tsup.config.mjs b/utils/testing/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/utils/testing/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/boolean/jest.config.js b/validate/boolean/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/boolean/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/boolean/package.json b/validate/boolean/package.json index 1dffdff2c..65a2ce26b 100644 --- a/validate/boolean/package.json +++ b/validate/boolean/package.json @@ -1,35 +1,55 @@ { "name": "@flatfile/plugin-validate-boolean", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/validate/boolean", "description": "A Flatfile plugin for boolean validation with multi-language support", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "registryMetadata": { + "category": "validate" + }, + "type": "module", + "engines": { + "node": ">= 16" }, + "browserslist": [ + "> 0.5%", + "last 2 versions", + "not dead" + ], "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -39,6 +59,11 @@ "category-validate" ], "author": "Flatfile, Inc.", + "repository": { + "type": "git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", + "directory": "validate/boolean" + }, "license": "ISC", "dependencies": { "@flatfile/plugin-record-hook": "^1.7.0" @@ -47,16 +72,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" - }, - "repository": { - "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", - "directory": "validate/boolean" - }, - "browserslist": [ - "> 0.5%", - "last 2 versions", - "not dead" - ] + "@flatfile/bundler-config-rollup": "^0.1.1" + } } diff --git a/validate/boolean/rollup.config.mjs b/validate/boolean/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/validate/boolean/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/validate/boolean/src/validate.boolean.plugin.spec.ts b/validate/boolean/src/validate.boolean.plugin.spec.ts index 374b1e410..0e33f0c17 100644 --- a/validate/boolean/src/validate.boolean.plugin.spec.ts +++ b/validate/boolean/src/validate.boolean.plugin.spec.ts @@ -1,10 +1,11 @@ +import { describe, expect, it } from 'vitest' import { - validateBooleanField, + BooleanValidatorConfig, + handleInvalidValue, handleNullValue, + validateBooleanField, validateStrictBoolean, validateTruthyBoolean, - handleInvalidValue, - BooleanValidatorConfig, } from './validate.boolean.plugin' describe('Boolean Validator Plugin', () => { @@ -15,8 +16,14 @@ describe('Boolean Validator Plugin', () => { } it('should handle null values', () => { - const result = validateBooleanField(null, { ...defaultConfig, handleNull: 'error' }) - expect(result).toEqual({ value: null, error: 'Value cannot be null or undefined' }) + const result = validateBooleanField(null, { + ...defaultConfig, + handleNull: 'error', + }) + expect(result).toEqual({ + value: null, + error: 'Value cannot be null or undefined', + }) }) it('should validate strict boolean', () => { @@ -25,19 +32,33 @@ describe('Boolean Validator Plugin', () => { }) it('should validate truthy boolean', () => { - const result = validateBooleanField('yes', { ...defaultConfig, validationType: 'truthy' }) + const result = validateBooleanField('yes', { + ...defaultConfig, + validationType: 'truthy', + }) expect(result).toEqual({ value: true, error: null }) }) }) describe('handleNullValue', () => { it('should return error for null with error config', () => { - const result = handleNullValue(null, { fields: [], validationType: 'strict', handleNull: 'error' }) - expect(result).toEqual({ value: null, error: 'Value cannot be null or undefined' }) + const result = handleNullValue(null, { + fields: [], + validationType: 'strict', + handleNull: 'error', + }) + expect(result).toEqual({ + value: null, + error: 'Value cannot be null or undefined', + }) }) it('should return false for null with false config', () => { - const result = handleNullValue(null, { fields: [], validationType: 'strict', handleNull: 'false' }) + const result = handleNullValue(null, { + fields: [], + validationType: 'strict', + handleNull: 'false', + }) expect(result).toEqual({ value: false, error: null }) }) }) @@ -49,12 +70,21 @@ describe('Boolean Validator Plugin', () => { } it('should accept true and false', () => { - expect(validateStrictBoolean(true, defaultConfig)).toEqual({ value: true, error: null }) - expect(validateStrictBoolean(false, defaultConfig)).toEqual({ value: false, error: null }) + expect(validateStrictBoolean(true, defaultConfig)).toEqual({ + value: true, + error: null, + }) + expect(validateStrictBoolean(false, defaultConfig)).toEqual({ + value: false, + error: null, + }) }) it('should convert non-boolean when configured', () => { - const result = validateStrictBoolean(1, { ...defaultConfig, convertNonBoolean: true }) + const result = validateStrictBoolean(1, { + ...defaultConfig, + convertNonBoolean: true, + }) expect(result).toEqual({ value: true, error: null }) }) @@ -71,25 +101,52 @@ describe('Boolean Validator Plugin', () => { } it('should accept true and false', () => { - expect(validateTruthyBoolean(true, defaultConfig)).toEqual({ value: true, error: null }) - expect(validateTruthyBoolean(false, defaultConfig)).toEqual({ value: false, error: null }) + expect(validateTruthyBoolean(true, defaultConfig)).toEqual({ + value: true, + error: null, + }) + expect(validateTruthyBoolean(false, defaultConfig)).toEqual({ + value: false, + error: null, + }) }) it('should accept truthy strings', () => { - expect(validateTruthyBoolean('yes', defaultConfig)).toEqual({ value: true, error: null }) - expect(validateTruthyBoolean('no', defaultConfig)).toEqual({ value: false, error: null }) + expect(validateTruthyBoolean('yes', defaultConfig)).toEqual({ + value: true, + error: null, + }) + expect(validateTruthyBoolean('no', defaultConfig)).toEqual({ + value: false, + error: null, + }) }) it('should handle custom mappings', () => { - const config = { ...defaultConfig, customMapping: { ja: true, nein: false } } - expect(validateTruthyBoolean('ja', config)).toEqual({ value: true, error: null }) - expect(validateTruthyBoolean('nein', config)).toEqual({ value: false, error: null }) + const config = { + ...defaultConfig, + customMapping: { ja: true, nein: false }, + } + expect(validateTruthyBoolean('ja', config)).toEqual({ + value: true, + error: null, + }) + expect(validateTruthyBoolean('nein', config)).toEqual({ + value: false, + error: null, + }) }) it('should handle case sensitivity', () => { const config = { ...defaultConfig, caseSensitive: true } - expect(validateTruthyBoolean('YES', config)).toEqual({ value: null, error: 'Invalid boolean value' }) - expect(validateTruthyBoolean('yes', config)).toEqual({ value: true, error: null }) + expect(validateTruthyBoolean('YES', config)).toEqual({ + value: null, + error: 'Invalid boolean value', + }) + expect(validateTruthyBoolean('yes', config)).toEqual({ + value: true, + error: null, + }) }) }) @@ -107,7 +164,10 @@ describe('Boolean Validator Plugin', () => { it('should use default value when configured', () => { const config = { ...defaultConfig, defaultValue: true } const result = handleInvalidValue('invalid', config) - expect(result).toEqual({ value: true, error: 'Invalid value converted to default: true' }) + expect(result).toEqual({ + value: true, + error: 'Invalid value converted to default: true', + }) }) }) }) diff --git a/validate/boolean/src/validate.boolean.plugin.ts b/validate/boolean/src/validate.boolean.plugin.ts index adc0d4e60..430330c43 100644 --- a/validate/boolean/src/validate.boolean.plugin.ts +++ b/validate/boolean/src/validate.boolean.plugin.ts @@ -76,8 +76,8 @@ export function validateTruthyBoolean( if (normalizedValue === true || normalizedValue === false) { return { value: normalizedValue, error: null } - } else if (mapping.hasOwnProperty(normalizedValue)) { - return { value: mapping[normalizedValue], error: null } + } else if (mapping && mapping.hasOwnProperty(normalizedValue)) { + return { value: mapping[normalizedValue]!, error: null } } else if (typeof normalizedValue === 'number') { return { value: Boolean(normalizedValue), error: null } } else if (config.convertNonBoolean) { diff --git a/validate/boolean/tsup.config.mjs b/validate/boolean/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/boolean/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/date/jest.config.js b/validate/date/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/date/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/date/package.json b/validate/date/package.json index 2831413eb..ab46c6a49 100644 --- a/validate/date/package.json +++ b/validate/date/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "validate" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", - "types": "dist/index.d.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validate/date" }, "license": "ISC", @@ -66,6 +74,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "0.1.1" + "@flatfile/bundler-config-rollup": "0.1.1" } } diff --git a/validate/date/rollup.config.mjs b/validate/date/rollup.config.mjs deleted file mode 100644 index 921ac6b19..000000000 --- a/validate/date/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config \ No newline at end of file diff --git a/validate/date/src/validate.date.plugin.spec.ts b/validate/date/src/validate.date.plugin.e2e.spec.ts similarity index 90% rename from validate/date/src/validate.date.plugin.spec.ts rename to validate/date/src/validate.date.plugin.e2e.spec.ts index ada736df5..c9de69f29 100644 --- a/validate/date/src/validate.date.plugin.spec.ts +++ b/validate/date/src/validate.date.plugin.e2e.spec.ts @@ -3,16 +3,44 @@ import { createRecords, deleteSpace, getRecords, - setupListener, + setupDriver, setupSimpleWorkbook, setupSpace, + TestListener, } from '@flatfile/utils-testing' +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, +} from 'vitest' import { validateDate } from './validate.date.plugin' const api = new FlatfileClient() describe('NormalizeDate e2e', () => { - const listener = setupListener() + const listener = new TestListener() + const driver = setupDriver() + + beforeAll(async () => { + await driver.start() + listener.mount(driver) + }) + + afterAll(() => { + driver.shutdown() + }) + + beforeEach(() => { + listener.resetCount() + }) + + afterEach(() => { + listener.reset() + }) let spaceId: string let sheetId: string diff --git a/validate/date/tsup.config.mjs b/validate/date/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/date/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/email/jest.config.js b/validate/email/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/email/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/email/package.json b/validate/email/package.json index 72f22eeb8..6928c66ce 100644 --- a/validate/email/package.json +++ b/validate/email/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "records" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -54,7 +62,7 @@ "license": "ISC", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validate/email" }, "dependencies": { @@ -64,6 +72,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/validate/email/rollup.config.mjs b/validate/email/rollup.config.mjs deleted file mode 100644 index 3a3d7fa35..000000000 --- a/validate/email/rollup.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const external = ['@flatfile/plugin-record-hook'] - -const config = buildConfig({ external }) - -export default config diff --git a/validate/email/src/validate.email.plugin.ts b/validate/email/src/validate.email.plugin.ts index eb3f7a150..6623bef81 100644 --- a/validate/email/src/validate.email.plugin.ts +++ b/validate/email/src/validate.email.plugin.ts @@ -26,15 +26,21 @@ export function validateEmail(config: EmailValidationConfig) { email, config.disposableDomains || [] ) - + if (!validationResult.isValid) { let errorMessage = errorMessages.invalid || validationResult.error - - if (validationResult.error === 'Disposable email addresses are not allowed') { + + if ( + validationResult.error === + 'Disposable email addresses are not allowed' + ) { errorMessage = errorMessages.disposable || validationResult.error } - - record.addError(field, errorMessage) + + record.addError( + field, + errorMessage ? errorMessage : 'Invalid email address' + ) } } } diff --git a/validate/email/src/validate.email.utils.spec.ts b/validate/email/src/validate.email.utils.spec.ts index a1617bf90..2b6ee4d99 100644 --- a/validate/email/src/validate.email.utils.spec.ts +++ b/validate/email/src/validate.email.utils.spec.ts @@ -1,23 +1,30 @@ +import { describe, expect, it } from 'vitest' import { validateEmailAddress } from './validate.email.utils' describe('validateEmailAddress', () => { const disposableDomains = ['disposable.com', 'temporary.net'] it('should return valid result for valid email addresses', () => { - expect(validateEmailAddress('user@example.com', disposableDomains)).toEqual({ - isValid: true, - email: 'user@example.com', - error: '' - }) - expect(validateEmailAddress('john.doe@company.co.uk', disposableDomains)).toEqual({ + expect(validateEmailAddress('user@example.com', disposableDomains)).toEqual( + { + isValid: true, + email: 'user@example.com', + error: '', + } + ) + expect( + validateEmailAddress('john.doe@company.co.uk', disposableDomains) + ).toEqual({ isValid: true, email: 'john.doe@company.co.uk', - error: '' + error: '', }) - expect(validateEmailAddress('name+tag@gmail.com', disposableDomains)).toEqual({ + expect( + validateEmailAddress('name+tag@gmail.com', disposableDomains) + ).toEqual({ isValid: true, email: 'name+tag@gmail.com', - error: '' + error: '', }) }) @@ -25,35 +32,43 @@ describe('validateEmailAddress', () => { expect(validateEmailAddress('notanemail', disposableDomains)).toEqual({ isValid: false, email: 'notanemail', - error: 'Invalid email format' + error: 'Invalid email format', }) expect(validateEmailAddress('missing@tld', disposableDomains)).toEqual({ isValid: false, email: 'missing@tld', - error: 'Invalid email format' + error: 'Invalid email format', }) - expect(validateEmailAddress('@missingusername.com', disposableDomains)).toEqual({ + expect( + validateEmailAddress('@missingusername.com', disposableDomains) + ).toEqual({ isValid: false, email: '@missingusername.com', - error: 'Invalid email format' + error: 'Invalid email format', }) - expect(validateEmailAddress('spaces in@email.com', disposableDomains)).toEqual({ + expect( + validateEmailAddress('spaces in@email.com', disposableDomains) + ).toEqual({ isValid: false, email: 'spaces in@email.com', - error: 'Invalid email format' + error: 'Invalid email format', }) }) it('should return invalid result for disposable email addresses', () => { - expect(validateEmailAddress('user@disposable.com', disposableDomains)).toEqual({ + expect( + validateEmailAddress('user@disposable.com', disposableDomains) + ).toEqual({ isValid: false, email: 'user@disposable.com', - error: 'Disposable email addresses are not allowed' + error: 'Disposable email addresses are not allowed', }) - expect(validateEmailAddress('test@temporary.net', disposableDomains)).toEqual({ + expect( + validateEmailAddress('test@temporary.net', disposableDomains) + ).toEqual({ isValid: false, email: 'test@temporary.net', - error: 'Disposable email addresses are not allowed' + error: 'Disposable email addresses are not allowed', }) }) @@ -61,20 +76,24 @@ describe('validateEmailAddress', () => { expect(validateEmailAddress('user@disposable.com', [])).toEqual({ isValid: true, email: 'user@disposable.com', - error: '' + error: '', }) }) it('should be case-insensitive for email addresses', () => { - expect(validateEmailAddress('USER@EXAMPLE.COM', disposableDomains)).toEqual({ - isValid: true, - email: 'USER@EXAMPLE.COM', - error: '' - }) - expect(validateEmailAddress('user@DISPOSABLE.COM', disposableDomains)).toEqual({ + expect(validateEmailAddress('USER@EXAMPLE.COM', disposableDomains)).toEqual( + { + isValid: true, + email: 'USER@EXAMPLE.COM', + error: '', + } + ) + expect( + validateEmailAddress('user@DISPOSABLE.COM', disposableDomains) + ).toEqual({ isValid: false, email: 'user@DISPOSABLE.COM', - error: 'Disposable email addresses are not allowed' + error: 'Disposable email addresses are not allowed', }) }) }) diff --git a/validate/email/tsup.config.mjs b/validate/email/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/email/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/isbn/jest.config.js b/validate/isbn/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/isbn/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/isbn/package.json b/validate/isbn/package.json index 5729f6957..a25b04ae0 100644 --- a/validate/isbn/package.json +++ b/validate/isbn/package.json @@ -1,35 +1,50 @@ { "name": "@flatfile/plugin-validate-isbn", "version": "0.1.0", + "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/validate/isbn", "description": "A Flatfile Listener plugin for ISBN validation with configurable options. Validates ISBN-10 and ISBN-13 formats, provides specific error messages, and optionally converts ISBN-10 to ISBN-13.", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "registryMetadata": { + "category": "validate" + }, + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" - }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -48,12 +63,12 @@ "@flatfile/listener": "^1.1.0" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1", + "@flatfile/bundler-config-tsup": "^0.0.0", "@flatfile/utils-testing": "^0.3.1" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validate/isbn" }, "browserslist": [ diff --git a/validate/isbn/rollup.config.mjs b/validate/isbn/rollup.config.mjs deleted file mode 100644 index 1e95e60a0..000000000 --- a/validate/isbn/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config'; - -const config = buildConfig({}); - -export default config; \ No newline at end of file diff --git a/validate/isbn/src/validate.isbn.plugin.spec.ts b/validate/isbn/src/validate.isbn.plugin.spec.ts index 163815aef..88531e4c8 100644 --- a/validate/isbn/src/validate.isbn.plugin.spec.ts +++ b/validate/isbn/src/validate.isbn.plugin.spec.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { validateAndFormatISBN } from './validate.isbn.plugin' describe('ISBN Validator Plugin', () => { @@ -7,7 +8,7 @@ describe('ISBN Validator Plugin', () => { expect(result).toEqual({ isValid: true, formattedISBN: '0-306-40615-2', - message: 'Formatted ISBN-10' + message: 'Formatted ISBN-10', }) }) @@ -16,14 +17,14 @@ describe('ISBN Validator Plugin', () => { expect(result).toEqual({ isValid: true, formattedISBN: '978-0-306-40615-7', - message: 'Formatted ISBN-13' + message: 'Formatted ISBN-13', }) }) it('should not format when autoFormat is false', () => { const result = validateAndFormatISBN('0306406152', false) expect(result).toEqual({ - isValid: true + isValid: true, }) }) @@ -31,7 +32,7 @@ describe('ISBN Validator Plugin', () => { const result = validateAndFormatISBN('invalid-isbn', true) expect(result).toEqual({ isValid: false, - message: 'Invalid ISBN format' + message: 'Invalid ISBN format', }) }) @@ -41,7 +42,7 @@ describe('ISBN Validator Plugin', () => { isValid: true, formattedISBN: '0-306-40615-2', convertedISBN: '978-0-306-40615-7', - message: 'Converted ISBN-13' + message: 'Converted ISBN-13', }) }) @@ -51,7 +52,7 @@ describe('ISBN Validator Plugin', () => { isValid: true, formattedISBN: '978-0-306-40615-7', convertedISBN: '0-306-40615-2', - message: 'Converted ISBN-10' + message: 'Converted ISBN-10', }) }) @@ -60,7 +61,7 @@ describe('ISBN Validator Plugin', () => { expect(result).toEqual({ isValid: true, formattedISBN: '0-306-40615-2', - message: 'Formatted ISBN-10' + message: 'Formatted ISBN-10', }) }) @@ -69,7 +70,7 @@ describe('ISBN Validator Plugin', () => { expect(result).toEqual({ isValid: true, formattedISBN: '978-0-306-40615-7', - message: 'Formatted ISBN-13' + message: 'Formatted ISBN-13', }) }) }) diff --git a/validate/isbn/tsup.config.mjs b/validate/isbn/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/isbn/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/number/jest.config.js b/validate/number/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/number/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/number/package.json b/validate/number/package.json index 30c782175..f99ed3a2b 100644 --- a/validate/number/package.json +++ b/validate/number/package.json @@ -3,37 +3,45 @@ "version": "0.1.0", "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/validate/number", "description": "A Flatfile Listener plugin for number validation", + "type": "module", "engines": { "node": ">= 16" }, - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -51,11 +59,11 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validate/number" }, "browserslist": [ diff --git a/validate/number/rollup.config.mjs b/validate/number/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/validate/number/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/validate/number/src/validate.number.plugin.spec.ts b/validate/number/src/validate.number.plugin.spec.ts index 50613f5ca..362c0f45d 100644 --- a/validate/number/src/validate.number.plugin.spec.ts +++ b/validate/number/src/validate.number.plugin.spec.ts @@ -1,6 +1,7 @@ +import { describe, expect, it } from 'vitest' import { - validateNumberField, NumberValidationConfig, + validateNumberField, } from './validate.number.plugin' describe('validateNumberField', () => { diff --git a/validate/number/src/validate.number.plugin.ts b/validate/number/src/validate.number.plugin.ts index 2ee8bf7ad..83a5fabec 100644 --- a/validate/number/src/validate.number.plugin.ts +++ b/validate/number/src/validate.number.plugin.ts @@ -78,7 +78,7 @@ export function validateNumberField( if (config.precision !== undefined && config.scale !== undefined) { const [integerPart, decimalPart] = numberValue.toString().split('.') - if (integerPart.length > config.precision - config.scale) { + if (integerPart && integerPart.length > config.precision - config.scale) { result.warnings.push( `Must have at most ${config.precision - config.scale} digits before the decimal point` ) @@ -114,7 +114,7 @@ export function validateNumberField( result.value = numberValue } catch (error) { - result.errors.push(`Error processing value: ${error.message}`) + result.errors.push(`Error processing value: ${(error as Error).message}`) } return result diff --git a/validate/number/tsup.config.mjs b/validate/number/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/number/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/phone/jest.config.js b/validate/phone/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/phone/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/phone/package.json b/validate/phone/package.json index 5ed71c9c0..1c30bf090 100644 --- a/validate/phone/package.json +++ b/validate/phone/package.json @@ -6,6 +6,7 @@ "registryMetadata": { "category": "records" }, + "type": "module", "engines": { "node": ">= 16" }, @@ -14,34 +15,41 @@ "last 2 versions", "not dead" ], - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" - }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" @@ -53,7 +61,7 @@ "author": "Flatfile, Inc.", "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validators/phone" }, "license": "ISC", @@ -65,6 +73,6 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" } } diff --git a/validate/phone/rollup.config.mjs b/validate/phone/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/validate/phone/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/validate/phone/src/validate.phone.plugin.ts b/validate/phone/src/validate.phone.plugin.ts index a58f14275..99069b690 100644 --- a/validate/phone/src/validate.phone.plugin.ts +++ b/validate/phone/src/validate.phone.plugin.ts @@ -1,6 +1,6 @@ import { type FlatfileRecord, recordHook } from '@flatfile/plugin-record-hook' +import type { FormatNumberOptions, NumberFormat } from 'libphonenumber-js' import { formatPhoneNumber } from './validate.phone.utils' -import { FormatNumberOptions, NumberFormat } from 'libphonenumber-js' export interface PhoneFormatPluginConfig { sheetSlug?: string diff --git a/validate/phone/src/validate.phone.utils.spec.ts b/validate/phone/src/validate.phone.utils.spec.ts index 771527b7f..bbdcdbd33 100644 --- a/validate/phone/src/validate.phone.utils.spec.ts +++ b/validate/phone/src/validate.phone.utils.spec.ts @@ -1,52 +1,54 @@ -import { formatPhoneNumber } from './validate.phone.utils'; -import { NumberFormat } from 'libphonenumber-js'; +import { describe, expect, it } from 'vitest' +import { formatPhoneNumber } from './validate.phone.utils' describe('formatPhoneNumber', () => { it('should format a valid US phone number', () => { - const result = formatPhoneNumber('2125551234', 'US', 'NATIONAL'); + const result = formatPhoneNumber('2125551234', 'US', 'NATIONAL') expect(result).toEqual({ formattedPhone: '(212) 555-1234', error: null, - }); - }); + }) + }) it('should format a valid UK phone number', () => { - const result = formatPhoneNumber('2071234567', 'GB', 'INTERNATIONAL'); + const result = formatPhoneNumber('2071234567', 'GB', 'INTERNATIONAL') expect(result).toEqual({ formattedPhone: '+44 20 7123 4567', error: null, - }); - }); + }) + }) it('should return an error for an invalid phone number', () => { - const result = formatPhoneNumber('1234', 'US', 'NATIONAL'); + const result = formatPhoneNumber('1234', 'US', 'NATIONAL') expect(result).toEqual({ formattedPhone: '1234', error: 'Invalid phone number format for US', - }); - }); + }) + }) it('should handle different number formats', () => { - const result = formatPhoneNumber('2125551234', 'US', 'E.164'); + const result = formatPhoneNumber('2125551234', 'US', 'E.164') expect(result).toEqual({ formattedPhone: '+12125551234', error: null, - }); - }); + }) + }) it('should handle format options with a valid fromCountry', () => { - const result = formatPhoneNumber('2125551234', 'US', 'INTERNATIONAL', { fromCountry: 'GB' }); + const result = formatPhoneNumber('2125551234', 'US', 'INTERNATIONAL', { + fromCountry: 'GB', + }) expect(result).toEqual({ formattedPhone: '+1 212 555 1234', error: null, - }); - }); + }) + }) it('should return an error for an invalid country code', () => { - const result = formatPhoneNumber('2125551234', 'XX', 'NATIONAL'); + const result = formatPhoneNumber('2125551234', 'XX', 'NATIONAL') expect(result).toEqual({ formattedPhone: '2125551234', error: 'Invalid phone number format for XX', - }); - }); -}); + }) + }) +}) diff --git a/validate/phone/tsup.config.mjs b/validate/phone/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/phone/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/validate/string/jest.config.js b/validate/string/jest.config.js deleted file mode 100644 index e6d7ca40b..000000000 --- a/validate/string/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - testEnvironment: 'node', - - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - setupFiles: ['../../test/dotenv-config.js'], - setupFilesAfterEnv: [ - '../../test/betterConsoleLog.js', - '../../test/unit.cleanup.js', - ], - testTimeout: 60_000, - globalSetup: '../../test/setup-global.js', - forceExit: true, - passWithNoTests: true, -} diff --git a/validate/string/package.json b/validate/string/package.json index 1c015e9ae..92aeeffef 100644 --- a/validate/string/package.json +++ b/validate/string/package.json @@ -1,43 +1,57 @@ { "name": "@flatfile/plugin-validate-string", "version": "0.1.0", - "description": "A Flatfile plugin for string configuration and validation", "url": "https://github.com/FlatFilers/flatfile-plugins/tree/main/validate/string", - "main": "./dist/index.cjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "browser": { - "./dist/index.cjs": "./dist/index.browser.cjs", - "./dist/index.mjs": "./dist/index.browser.mjs" + "description": "A Flatfile plugin for string configuration and validation", + "registryMetadata": { + "category": "validate" + }, + "type": "module", + "engines": { + "node": ">= 16" }, "exports": { - "types": "./dist/index.d.ts", - "node": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - }, - "browser": { - "require": "./dist/index.browser.cjs", - "import": "./dist/index.browser.mjs" + ".": { + "node": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "browser": { + "types": { + "import": "./dist/index.d.ts", + "require": "./dist/index.d.cts" + }, + "import": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs" + }, + "default": "./dist/index.js" }, - "default": "./dist/index.mjs" + "./package.json": "./package.json" }, + "main": "./dist/index.js", + "module": "./dist/index.js", "source": "./src/index.ts", + "types": "./dist/index.d.ts", "files": [ "dist/**" ], "scripts": { - "build": "rollup -c", - "build:watch": "rollup -c --watch", - "build:prod": "NODE_ENV=production rollup -c", - "check": "tsc ./**/*.ts --noEmit --esModuleInterop", + "build": "tsup", + "build:watch": "tsup --watch", + "build:prod": "NODE_ENV=production tsup", + "checks": "tsc --noEmit && attw --pack . && publint .", + "lint": "tsc --noEmit", "test": "jest src/*.spec.ts --detectOpenHandles", "test:unit": "jest src/*.spec.ts --testPathIgnorePatterns=.*\\.e2e\\.spec\\.ts$ --detectOpenHandles", "test:e2e": "jest src/*.e2e.spec.ts --detectOpenHandles" }, "keywords": [ "flatfile-plugins", - "category-transform" + "category-validate" ], "author": "Flatfile, Inc", "license": "ISC", @@ -48,11 +62,11 @@ "@flatfile/listener": "^1.0.5" }, "devDependencies": { - "@flatfile/rollup-config": "^0.1.1" + "@flatfile/bundler-config-tsup": "^0.0.0" }, "repository": { "type": "git", - "url": "https://github.com/FlatFilers/flatfile-plugins.git", + "url": "git+https://github.com/FlatFilers/flatfile-plugins.git", "directory": "validate/string" }, "browserslist": [ diff --git a/validate/string/rollup.config.mjs b/validate/string/rollup.config.mjs deleted file mode 100644 index fafa813c6..000000000 --- a/validate/string/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { buildConfig } from '@flatfile/rollup-config' - -const config = buildConfig({}) - -export default config diff --git a/validate/string/src/validate.string.plugin.spec.ts b/validate/string/src/validate.string.plugin.spec.ts index 1573a0f25..83f6b9375 100644 --- a/validate/string/src/validate.string.plugin.spec.ts +++ b/validate/string/src/validate.string.plugin.spec.ts @@ -1,4 +1,5 @@ -import { validateAndTransformString, StringValidationConfig } from '.' +import { describe, expect, it } from 'vitest' +import { validateAndTransformString, type StringValidationConfig } from '.' describe('validateAndTransformString', () => { it('should validate empty string', () => { diff --git a/validate/string/src/validate.string.plugin.ts b/validate/string/src/validate.string.plugin.ts index fde1a9ddb..169113bcc 100644 --- a/validate/string/src/validate.string.plugin.ts +++ b/validate/string/src/validate.string.plugin.ts @@ -1,7 +1,7 @@ import { FlatfileListener } from '@flatfile/listener' import { recordHook } from '@flatfile/plugin-record-hook' import { - StringValidationConfig, + type StringValidationConfig, validateAndTransformString, } from './validate.string.utils' diff --git a/validate/string/tsup.config.mjs b/validate/string/tsup.config.mjs new file mode 100644 index 000000000..bd6420831 --- /dev/null +++ b/validate/string/tsup.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from '@flatfile/bundler-config-tsup' + +export default defineConfig({}) diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 000000000..d78788dee --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,17 @@ +import { loadEnv } from 'vite' +import { defineConfig } from 'vitest/config' + +export default defineConfig(({ mode }) => { + return { + test: { + globalSetup: ['../../test/setup-global.ts'], + environment: 'node', + testTimeout: 30000, + globals: true, + env: { + ...loadEnv(mode, '../../', ''), + }, + }, + plugins: [], + } +})