From 345e4626c3d89af34b7de5c8a713c763215788c1 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 19 Dec 2024 10:27:35 +0000 Subject: [PATCH 01/52] migrate to ts --- .../{automations.js => automations.ts} | 905 ++++++++++-------- 1 file changed, 480 insertions(+), 425 deletions(-) rename packages/builder/src/stores/builder/{automations.js => automations.ts} (66%) diff --git a/packages/builder/src/stores/builder/automations.js b/packages/builder/src/stores/builder/automations.ts similarity index 66% rename from packages/builder/src/stores/builder/automations.js rename to packages/builder/src/stores/builder/automations.ts index 365f5a8e03..a5b0e00d45 100644 --- a/packages/builder/src/stores/builder/automations.js +++ b/packages/builder/src/stores/builder/automations.ts @@ -1,4 +1,4 @@ -import { writable, get, derived } from "svelte/store" +import { derived, get, Writable } from "svelte/store" import { API } from "api" import { cloneDeep } from "lodash/fp" import { generate } from "shortid" @@ -17,6 +17,12 @@ import { AutomationEventType, AutomationStepType, AutomationActionStepId, + Automation, + AutomationStep, + Table, + Branch, + AutomationTrigger, + AutomationStatus, } from "@budibase/types" import { ActionStepID } from "constants/backend/automations" import { FIELDS } from "constants/backend" @@ -24,8 +30,28 @@ import { sdk } from "@budibase/shared-core" import { rowActions } from "./rowActions" import { getNewStepName } from "helpers/automations/nameHelpers" import { QueryUtils } from "@budibase/frontend-core" +import { BudiStore, DerivedBudiStore } from "stores/BudiStore" -const initialAutomationState = { +interface BlockDefinitions { + TRIGGER: Record + CREATABLE_TRIGGER: Record + ACTION: Record +} + +interface AutomationState { + automations: Automation[] + testResults: any | null + showTestPanel: boolean + blockDefinitions: BlockDefinitions + selectedAutomationId: string | null +} + +interface DerivedAutomationState { + data: Automation | null + blockRefs: Record +} + +const initialAutomationState: AutomationState = { automations: [], testResults: null, showTestPanel: false, @@ -37,25 +63,11 @@ const initialAutomationState = { selectedAutomationId: null, } -// If this functions, remove the actions elements -export const createAutomationStore = () => { - const store = writable(initialAutomationState) - - store.actions = automationActions(store) - - // Setup history for automations - const history = createHistoryStore({ - getDoc: store.actions.getDefinition, - selectDoc: store.actions.select, - }) - - store.actions.save = history.wrapSaveDoc(store.actions.save) - store.actions.delete = history.wrapDeleteDoc(store.actions.delete) - return { store, history } -} - -const getFinalDefinitions = (triggers, actions) => { - const creatable = {} +const getFinalDefinitions = ( + triggers: Record, + actions: Record +): BlockDefinitions => { + const creatable: Record = {} Object.entries(triggers).forEach(entry => { if (entry[0] === AutomationTriggerStepId.ROW_ACTION) { return @@ -69,7 +81,27 @@ const getFinalDefinitions = (triggers, actions) => { } } -const automationActions = store => ({ +class AutomationStore extends BudiStore { + history: any + + constructor() { + super(initialAutomationState) + + // Setup history for automations + this.history = createHistoryStore({ + getDoc: this.getDefinition.bind(this), + selectDoc: this.select.bind(this), + beforeAction: () => {}, + afterAction: () => {}, + }) + + // Wrap save and delete with history + const originalSave = this.save.bind(this) + const originalDelete = this.delete.bind(this) + this.save = this.history.wrapSaveDoc(originalSave) + this.delete = this.history.wrapDeleteDoc(originalDelete) + } + /** * Move a given block from one location on the tree to another. * @@ -77,7 +109,7 @@ const automationActions = store => ({ * @param {Object} destPath the destinationPart * @param {Object} automation the automaton to be mutated */ - moveBlock: async (sourcePath, destPath, automation) => { + async moveBlock(sourcePath: any, destPath: any, automation: Automation) { // The last part of the source node address, containing the id. const pathSource = sourcePath.at(-1) @@ -101,15 +133,12 @@ const automationActions = store => ({ // Use core delete to remove and return the deleted block // from the automation - const { deleted, newAutomation } = store.actions.deleteBlock( - sourcePath, - automation - ) + const { deleted, newAutomation } = this.deleteBlock(sourcePath, automation) // Traverse again as deleting the node from its original location // will redefine all proceding node locations const newRefs = {} - store.actions.traverse(newRefs, newAutomation) + this.traverse(newRefs, newAutomation) let finalPath // If dropping in a branch-step dropzone you need to find @@ -126,20 +155,15 @@ const automationActions = store => ({ // Uses the updated tree refs to resolve the new position // for the moved element. - const updated = store.actions.updateStep( - finalPath, - newAutomation, - deleted, - true - ) + const updated = this.updateStep(finalPath, newAutomation, deleted, true) try { - await store.actions.save(updated) + await this.save(updated) } catch (e) { notifications.error("Error moving automation block") console.error("Error moving automation block ", e) } - }, + } /** * Core delete function that will delete the node at the provided @@ -150,7 +174,7 @@ const automationActions = store => ({ * @param {*} automation the automation to alter. * @returns {Object} contains the deleted nodes and new updated automation */ - deleteBlock: (pathTo, automation) => { + deleteBlock(pathTo: Array, automation: Automation) { let newAutomation = cloneDeep(automation) const steps = [ @@ -158,20 +182,20 @@ const automationActions = store => ({ ...newAutomation.definition.steps, ] - let cache + let cache: any pathTo.forEach((path, pathIdx, array) => { const final = pathIdx === array.length - 1 const { stepIdx, branchIdx } = path - const deleteCore = (steps, idx) => { + const deleteCore = (steps: AutomationStep[], idx: number) => { const targetBlock = steps[idx] // By default, include the id of the target block const idsToDelete = [targetBlock.id] - const blocksDeleted = [] + const blocksDeleted: AutomationStep[] = [] // If deleting a looped block, ensure all related block references are // collated beforehand. Delete can then be handled atomically - const loopSteps = {} + const loopSteps: Record = {} steps.forEach(child => { const { blockToLoop, id: loopBlockId } = child if (blockToLoop) { @@ -227,7 +251,7 @@ const automationActions = store => ({ // should be 1-2 blocks in an array return cache - }, + } /** * Build metadata for the automation tree. Store the path and @@ -236,7 +260,12 @@ const automationActions = store => ({ * @param {Object} block * @param {Array} pathTo */ - registerBlock: (blocks, block, pathTo, terminating) => { + registerBlock( + blocks: Record, + block: AutomationStep, + pathTo: Array, + terminating: boolean + ) { // Directly mutate the `blocks` object without reassigning blocks[block.id] = { ...(blocks[block.id] || {}), @@ -252,21 +281,22 @@ const automationActions = store => ({ looped: block.id, } } - }, + } + /** * Build a sequential list of all steps on the step path provided * * @param {Array} pathWay e.g. [{stepIdx:2},{branchIdx:0, stepIdx:2},...] * @returns {Array} all steps encountered on the provided path */ - getPathSteps: (pathWay, automation) => { + getPathSteps(pathWay: Array, automation: Automation) { // Base Steps, including trigger const steps = [ automation.definition.trigger, ...automation.definition.steps, ] - let result + let result: AutomationStep[] pathWay.forEach(path => { const { stepIdx, branchIdx } = path let last = result ? result[result.length - 1] : [] @@ -285,7 +315,7 @@ const automationActions = store => ({ } }) return result - }, + } /** * Take an updated step and replace it in the specified location @@ -298,13 +328,22 @@ const automationActions = store => ({ * @param {Boolean} insert defaults to false * @returns */ - updateStep: (pathWay, automation, update, insert = false) => { + updateStep( + pathWay: Array, + automation: Automation, + update: AutomationStep | AutomationStep[], + insert = false + ) { let newAutomation = cloneDeep(automation) - const finalise = (dest, idx, update) => { + const finalise = ( + dest: AutomationStep[], + idx: number, + update: AutomationStep | AutomationStep[] + ) => { dest.splice( idx, - insert ? 0 : update.length || 1, + insert ? 0 : Array.isArray(update) ? update.length : 1, ...(Array.isArray(update) ? update : [update]) ) } @@ -336,7 +375,7 @@ const automationActions = store => ({ }) return newAutomation - }, + } /** * If the current license covers Environment variables, @@ -344,7 +383,7 @@ const automationActions = store => ({ * * @returns {Array} all available environment bindings */ - buildEnvironmentBindings: () => { + buildEnvironmentBindings() { if (get(licensing).environmentVariablesEnabled) { return getEnvironmentBindings().map(binding => { return { @@ -357,14 +396,13 @@ const automationActions = store => ({ }) } return [] - }, - + } /** * Get user bindings * * @returns {Array} all available user bindings */ - buildUserBindings: () => { + buildUserBindings() { return getUserBindings().map(binding => { return { ...binding, @@ -375,14 +413,13 @@ const automationActions = store => ({ }, } }) - }, - + } /** * Get settings bindings * * @returns {Array} all available settings bindings */ - buildSettingBindings: () => { + buildSettingBindings() { return getSettingBindings().map(binding => { return { ...binding, @@ -392,8 +429,7 @@ const automationActions = store => ({ }, } }) - }, - + } /** * Take the supplied step id and aggregate all bindings for every * step preceding it. @@ -401,15 +437,11 @@ const automationActions = store => ({ * @param {string} id the step id of the target * @returns {Array} all bindings on the path to this step */ - getPathBindings: id => { - const block = get(selectedAutomation).blockRefs[id] - const bindings = store.actions.getAvailableBindings( - block, - get(selectedAutomation).data - ) + getPathBindings(id: string) { + const block = get(selectedAutomation)?.blockRefs[id] + return this.getAvailableBindings(block, get(selectedAutomation)?.data) + } - return bindings - }, /** * Takes the provided automation and traverses all possible paths. * References to all nodes/steps encountered on the way are stored @@ -418,8 +450,8 @@ const automationActions = store => ({ * * @param {Object} automation */ - traverse: (blockRefs, automation) => { - let blocks = [] + traverse(blockRefs: Record, automation: Automation) { + let blocks: AutomationStep[] = [] if (!automation || !blockRefs) { return } @@ -428,7 +460,13 @@ const automationActions = store => ({ } blocks = blocks.concat(automation.definition.steps || []) - const treeTraverse = (block, pathTo, stepIdx, branchIdx, terminating) => { + const treeTraverse = ( + block: AutomationStep, + pathTo: Array | null, + stepIdx: number, + branchIdx: number | null, + terminating: boolean + ) => { const pathToCurrentNode = [ ...(pathTo || []), { @@ -447,7 +485,7 @@ const automationActions = store => ({ }) }) - store.actions.registerBlock( + this.registerBlock( blockRefs, block, pathToCurrentNode, @@ -461,7 +499,7 @@ const automationActions = store => ({ }) return blockRefs - }, + } /** * Build a list of all bindings specifically on the path @@ -471,38 +509,50 @@ const automationActions = store => ({ * @param {Object} automation The complete automation * @returns */ - getAvailableBindings: (block, automation) => { + + getAvailableBindings(block: any, automation: Automation | null) { if (!block || !automation?.definition) { return [] } // Registered blocks - const blocks = get(selectedAutomation).blockRefs + const blocks = get(selectedAutomation)?.blockRefs // Get all preceeding steps, including the trigger // Filter out the target step as we don't want to include itself - const pathSteps = store.actions - .getPathSteps(block.pathTo, automation) - .slice(0, -1) + const pathSteps = this.getPathSteps(block.pathTo, automation).slice(0, -1) // Current step will always be the last step of the path - const currentBlock = store.actions - .getPathSteps(block.pathTo, automation) - .at(-1) + const currentBlock = this.getPathSteps(block.pathTo, automation).at(-1) - // Extract all outputs from all previous steps as available bindingsx§x - let bindings = [] - const addBinding = (name, value, icon, idx, isLoopBlock, bindingName) => { + // Extract all outputs from all previous steps as available bindings + let bindings: any[] = [] + const addBinding = ( + name: string, + value: any, + icon: string, + idx: number, + isLoopBlock: boolean, + bindingName?: string + ) => { if (!name) return - const runtimeBinding = determineRuntimeBinding( + const runtimeBinding = this.determineRuntimeBinding( name, idx, isLoopBlock, - bindingName + bindingName, + automation, + currentBlock, + pathSteps + ) + const categoryName = this.determineCategoryName( + idx, + isLoopBlock, + bindingName, + loopBlockCount ) - const categoryName = determineCategoryName(idx, isLoopBlock, bindingName) bindings.push( - createBindingObject( + this.createBindingObject( name, value, icon, @@ -516,93 +566,6 @@ const automationActions = store => ({ ) } - const determineRuntimeBinding = (name, idx, isLoopBlock) => { - let runtimeName - - /* Begin special cases for generating custom schemas based on triggers */ - if ( - idx === 0 && - automation.definition.trigger?.event === AutomationEventType.APP_TRIGGER - ) { - return `trigger.fields.${name}` - } - - if ( - idx === 0 && - (automation.definition.trigger?.event === - AutomationEventType.ROW_UPDATE || - automation.definition.trigger?.event === AutomationEventType.ROW_SAVE) - ) { - let noRowKeywordBindings = ["id", "revision", "oldRow"] - if (!noRowKeywordBindings.includes(name)) return `trigger.row.${name}` - } - /* End special cases for generating custom schemas based on triggers */ - - if (isLoopBlock) { - runtimeName = `loop.${name}` - } else if (idx === 0) { - runtimeName = `trigger.${name}` - } else if ( - currentBlock?.stepId === AutomationActionStepId.EXECUTE_SCRIPT - ) { - const stepId = pathSteps[idx].id - if (!stepId) { - notifications.error("Error generating binding: Step ID not found.") - return null - } - runtimeName = `steps["${stepId}"].${name}` - } else { - const stepId = pathSteps[idx].id - if (!stepId) { - notifications.error("Error generating binding: Step ID not found.") - return null - } - runtimeName = `steps.${stepId}.${name}` - } - - return runtimeName - } - - const determineCategoryName = (idx, isLoopBlock, bindingName) => { - if (idx === 0) return "Trigger outputs" - if (isLoopBlock) return "Loop Outputs" - return bindingName - ? `${bindingName} outputs` - : `Step ${idx - loopBlockCount} outputs` - } - - const createBindingObject = ( - name, - value, - icon, - idx, - loopBlockCount, - isLoopBlock, - runtimeBinding, - categoryName, - bindingName - ) => { - const field = Object.values(FIELDS).find( - field => field.type === value.type && field.subtype === value.subtype - ) - return { - readableBinding: - bindingName && !isLoopBlock && idx !== 0 - ? `steps.${bindingName}.${name}` - : runtimeBinding, - runtimeBinding, - type: value.type, - description: value.description, - icon, - category: categoryName, - display: { - type: field?.name || value.type, - name, - rank: isLoopBlock ? idx + 1 : idx - loopBlockCount, - }, - } - } - let loopBlockCount = 0 for (let blockIdx = 0; blockIdx < pathSteps.length; blockIdx++) { @@ -641,7 +604,7 @@ const automationActions = store => ({ pathBlock.event === AutomationEventType.ROW_UPDATE || pathBlock.event === AutomationEventType.ROW_SAVE ) { - let table = get(tables).list.find( + let table: Table = get(tables).list.find( table => table._id === pathBlock.inputs.tableId ) // We want to generate our own schema for the bindings from the table schema itself @@ -685,10 +648,109 @@ const automationActions = store => ({ bindings = bindings.filter(x => !x.readableBinding.includes("loop")) } return bindings - }, - definitions: async () => { + } + + private determineRuntimeBinding( + name: string, + idx: number, + isLoopBlock: boolean, + bindingName: string | undefined, + automation: Automation, + currentBlock: AutomationStep | undefined, + pathSteps: AutomationStep[] + ) { + let runtimeName: string | null + + /* Begin special cases for generating custom schemas based on triggers */ + if ( + idx === 0 && + automation.definition.trigger?.event === AutomationEventType.APP_TRIGGER + ) { + return `trigger.fields.${name}` + } + + if ( + idx === 0 && + (automation.definition.trigger?.event === + AutomationEventType.ROW_UPDATE || + automation.definition.trigger?.event === AutomationEventType.ROW_SAVE) + ) { + let noRowKeywordBindings = ["id", "revision", "oldRow"] + if (!noRowKeywordBindings.includes(name)) return `trigger.row.${name}` + } + /* End special cases for generating custom schemas based on triggers */ + + if (isLoopBlock) { + runtimeName = `loop.${name}` + } else if (idx === 0) { + runtimeName = `trigger.${name}` + } else if (currentBlock?.stepId === AutomationActionStepId.EXECUTE_SCRIPT) { + const stepId = pathSteps[idx].id + if (!stepId) { + notifications.error("Error generating binding: Step ID not found.") + return null + } + runtimeName = `steps["${stepId}"].${name}` + } else { + const stepId = pathSteps[idx].id + if (!stepId) { + notifications.error("Error generating binding: Step ID not found.") + return null + } + runtimeName = `steps.${stepId}.${name}` + } + + return runtimeName + } + + private determineCategoryName( + idx: number, + isLoopBlock: boolean, + bindingName: string | undefined, + loopBlockCount: number + ) { + if (idx === 0) return "Trigger outputs" + if (isLoopBlock) return "Loop Outputs" + return bindingName + ? `${bindingName} outputs` + : `Step ${idx - loopBlockCount} outputs` + } + + private createBindingObject( + name: string, + value: any, + icon: string, + idx: number, + loopBlockCount: number, + isLoopBlock: boolean, + runtimeBinding: string | null, + categoryName: string, + bindingName?: string + ) { + const field = Object.values(FIELDS).find( + field => field.type === value.type && field.subtype === value.subtype + ) + return { + readableBinding: + bindingName && !isLoopBlock && idx !== 0 + ? `steps.${bindingName}.${name}` + : runtimeBinding, + runtimeBinding, + type: value.type, + description: value.description, + icon, + category: categoryName, + display: { + type: field?.name || value.type, + name, + rank: isLoopBlock ? idx + 1 : idx - loopBlockCount, + }, + } + } + + async definitions() { const response = await API.getAutomationDefinitions() - store.update(state => { + this.store.update(state => { state.blockDefinitions = getFinalDefinitions( response.trigger, response.action @@ -696,13 +758,14 @@ const automationActions = store => ({ return state }) return response - }, - fetch: async () => { + } + + async fetch() { const [automationResponse, definitions] = await Promise.all([ API.getAutomations(), API.getAutomationDefinitions(), ]) - store.update(state => { + this.store.update(state => { state.automations = automationResponse.automations state.automations.sort((a, b) => { return a.name < b.name ? -1 : 1 @@ -713,9 +776,10 @@ const automationActions = store => ({ ) return state }) - }, - create: async (name, trigger) => { - const automation = { + } + + async create(name: string, trigger: AutomationStep) { + const automation: Automation = { name, type: "automation", definition: { @@ -724,26 +788,28 @@ const automationActions = store => ({ }, disabled: false, } - const response = await store.actions.save(automation) + const response = await this.save(automation) return response - }, - duplicate: async automation => { - const response = await store.actions.save({ + } + + async duplicate(automation: Automation) { + const response = await this.save({ ...automation, name: `${automation.name} - copy`, _id: undefined, - _ref: undefined, + _rev: undefined, }) return response - }, - save: async automation => { - const response = await API.updateAutomation(automation) + } - await store.actions.fetch() - store.actions.select(response._id) + async save(automation: Automation) { + const response = await API.updateAutomation(automation) + await this.fetch() + this.select(response._id) return response.automation - }, - delete: async automation => { + } + + async delete(automation: Automation) { const isRowAction = sdk.automations.isRowAction(automation) if (isRowAction) { await rowActions.delete( @@ -751,32 +817,45 @@ const automationActions = store => ({ automation.definition.trigger.inputs.rowActionId ) } else { - await API.deleteAutomation(automation?._id, automation?._rev) + await API.deleteAutomation(automation._id!, automation._rev!) } - store.update(state => { - // Remove the automation + this.store.update(state => { state.automations = state.automations.filter( x => x._id !== automation._id ) - - // Select a new automation if required if (automation._id === state.selectedAutomationId) { state.selectedAutomationId = state.automations[0]?._id || null } - return state }) - }, - toggleDisabled: async automationId => { - let automation + } + + select(id: string | null) { + if (!id || id === get(this.store).selectedAutomationId) { + return + } + this.store.update(state => { + state.selectedAutomationId = id + state.testResults = null + state.showTestPanel = false + return state + }) + } + + getDefinition(id: string): Automation | undefined { + return get(this.store).automations?.find(x => x._id === id) + } + + async toggleDisabled(automationId: string) { + let automation: Automation | undefined try { - automation = store.actions.getDefinition(automationId) + automation = this.getDefinition(automationId) if (!automation) { return } automation.disabled = !automation.disabled - await store.actions.save(automation) + await this.save(automation) notifications.success( `Automation ${ automation.disabled ? "disabled" : "enabled" @@ -784,14 +863,12 @@ const automationActions = store => ({ ) } catch (error) { notifications.error( - `Error ${ - automation && automation.disabled ? "disabling" : "enabling" - } automation` + `Error ${automation?.disabled ? "disabling" : "enabling"} automation` ) } - }, + } - processBlockInputs: async (block, data) => { + async processBlockInputs(block: AutomationStep, data: Record) { // Create new modified block let newBlock = { ...block, @@ -810,11 +887,11 @@ const automationActions = store => ({ }) // Create new modified automation - const automation = get(selectedAutomation).data - const newAutomation = store.actions.getUpdatedDefinition( - automation, - newBlock - ) + const automation = get(selectedAutomation)?.data + if (!automation) { + return false + } + const newAutomation = this.getUpdatedDefinition(automation, newBlock) // Don't save if no changes were made if (JSON.stringify(newAutomation) === JSON.stringify(automation)) { @@ -822,19 +899,21 @@ const automationActions = store => ({ } return newAutomation - }, - updateBlockInputs: async (block, data) => { - const newAutomation = await store.actions.processBlockInputs(block, data) + } + + async updateBlockInputs(block: AutomationStep, data: Record) { + const newAutomation = await this.processBlockInputs(block, data) if (newAutomation === false) { return } - await store.actions.save(newAutomation) - }, - test: async (automation, testData) => { - let result + await this.save(newAutomation) + } + + async test(automation: Automation, testData: any) { + let result: any try { - result = await API.testAutomation(automation?._id, testData) - } catch (err) { + result = await API.testAutomation(automation._id!, testData) + } catch (err: any) { const message = err.message || err.status || JSON.stringify(err) throw `Automation test failed - ${message}` } @@ -844,61 +923,69 @@ const automationActions = store => ({ } throw "Something went wrong testing your automation" } - store.update(state => { + this.store.update(state => { state.testResults = result return state }) - }, - getDefinition: id => { - return get(store).automations?.find(x => x._id === id) - }, - getUpdatedDefinition: (automation, block) => { - let newAutomation + } + + getUpdatedDefinition( + automation: Automation, + block: AutomationStep | AutomationTrigger + ): Automation { + let newAutomation: Automation if (automation.definition.trigger?.id === block.id) { newAutomation = cloneDeep(automation) - newAutomation.definition.trigger = block + newAutomation.definition.trigger = block as AutomationTrigger } else { - const pathToStep = get(selectedAutomation).blockRefs[block.id].pathTo - newAutomation = automationStore.actions.updateStep( - pathToStep, - automation, - block - ) + const pathToStep = get(selectedAutomation)!.blockRefs[block.id].pathTo + newAutomation = this.updateStep(pathToStep, automation, block) } return newAutomation - }, - select: id => { - if (!id || id === get(store).selectedAutomationId) { - return - } - store.update(state => { - state.selectedAutomationId = id - state.testResults = null - state.showTestPanel = false - return state - }) - }, - getLogs: async ({ automationId, startDate, status, page } = {}) => { + } + + async getLogs({ + automationId, + startDate, + status, + page, + }: { + automationId?: string + startDate?: string + status?: AutomationStatus + page?: number + } = {}) { return await API.getAutomationLogs({ automationId, startDate, status, page, }) - }, - clearLogErrors: async ({ automationId, appId } = {}) => { + } + + async clearLogErrors({ + automationId, + appId, + }: { + automationId?: string + appId?: string + } = {}) { return await API.clearAutomationLogErrors(automationId, appId) - }, - addTestDataToAutomation: data => { - let newAutomation = cloneDeep(get(selectedAutomation).data) + } + + addTestDataToAutomation(data: any) { + let newAutomation = cloneDeep(get(selectedAutomation)?.data) + if (!newAutomation) { + return newAutomation + } newAutomation.testData = { ...newAutomation.testData, ...data, } return newAutomation - }, - constructBlock(type, stepId, blockDefinition) { - let newName + } + + constructBlock(type: string, stepId: string, blockDefinition: any) { const newStep = { ...blockDefinition, inputs: blockDefinition.inputs || {}, @@ -906,35 +993,21 @@ const automationActions = store => ({ type, id: generate(), } - newName = getNewStepName(get(selectedAutomation)?.data, newStep) + const newName = getNewStepName(get(selectedAutomation)?.data, newStep) newStep.name = newName return newStep - }, - /** - * Generate a new branch block for adding to the automation - * There are a minimum of 2 empty branches by default. - * - * @returns {Object} - a default branch block - */ - generateBranchBlock: () => { - const branchDefinition = get(automationStore).blockDefinitions.ACTION.BRANCH - const branchBlock = automationStore.actions.constructBlock( - "ACTION", - "BRANCH", - branchDefinition - ) - return branchBlock - }, + } - /** - * Take a newly constructed block and insert it in the automation tree - * at the specified location. - * - * @param {Object} block the new block - * @param {Array} pathWay location of insert point - */ - addBlockToAutomation: async (block, pathWay) => { - const automation = get(selectedAutomation).data + generateBranchBlock() { + const branchDefinition = get(this.store).blockDefinitions.ACTION.BRANCH + return this.constructBlock("ACTION", "BRANCH", branchDefinition) + } + + async addBlockToAutomation(block: AutomationStep, pathWay: Array) { + const automation = get(selectedAutomation)?.data + if (!automation) { + return + } let newAutomation = cloneDeep(automation) const steps = [ @@ -942,12 +1015,12 @@ const automationActions = store => ({ ...newAutomation.definition.steps, ] - let cache + let cache: any pathWay.forEach((path, pathIdx, array) => { const { stepIdx, branchIdx } = path const final = pathIdx === array.length - 1 - const insertBlock = (steps, stepIdx) => { + const insertBlock = (steps: AutomationStep[], stepIdx: number) => { const isBranchNode = !Number.isInteger(stepIdx) // If it's a loop block, insert at the looped block stepIdx @@ -982,20 +1055,14 @@ const automationActions = store => ({ }) try { - await store.actions.save(newAutomation) + await this.save(newAutomation) } catch (e) { notifications.error("Error adding automation block") console.error("Automation adding block ", e) } - }, + } - /** - * Generate empty condition config - * Used on initialisation and reset of a condition. - * - * @returns {Object} contains a condition and conditionUI entry. - */ - generateDefaultConditions: () => { + generateDefaultConditions() { const baseConditionUI = { logicalOperator: "all", onEmptyFilter: "none", @@ -1005,27 +1072,19 @@ const automationActions = store => ({ condition: QueryUtils.buildQuery(baseConditionUI), conditionUI: baseConditionUI, } - }, + } - /** - * Generates a new branch in the tree at the given location. - * All steps below the path, if any, are added to a new default branch - * 2 branch nodes are created by default. - * - * @param {Array} path - the insertion point on the tree. - * @param {Object} automation - the target automation to update. - */ - branchAutomation: async (path, automation) => { + async branchAutomation(path: Array, automation: Automation) { const insertPoint = path.at(-1) let newAutomation = cloneDeep(automation) - let cache = null + let cache: any = null let atRoot = false // Generate a default empty branch - const createBranch = name => { + const createBranch = (name: string) => { return { - name: name, - ...store.actions.generateDefaultConditions(), + name, + ...this.generateDefaultConditions(), id: generate(), } } @@ -1070,7 +1129,7 @@ const automationActions = store => ({ cache[insertIdx].inputs.children[branchEntry.id] = [] try { - await store.actions.save(newAutomation) + await this.save(newAutomation) } catch (e) { notifications.error("Error adding branch to automation") console.error("Error adding automation branch", e) @@ -1079,7 +1138,7 @@ const automationActions = store => ({ } // Creating a new branch block - const newBranch = store.actions.generateBranchBlock() + const newBranch = this.generateBranchBlock() // Default branch node count is 2. Build 2 default entries newBranch.inputs.branches = Array.from({ length: 2 }).map((_, idx) => { @@ -1089,7 +1148,7 @@ const automationActions = store => ({ // Init the branch children. Shift all steps following the new branch step // into the 0th branch. newBranch.inputs.children = newBranch.inputs.branches.reduce( - (acc, branch, idx) => { + (acc: Record, branch: Branch, idx: number) => { acc[branch.id] = idx == 0 ? cache.slice(insertIdx + 1) : [] return acc }, @@ -1103,29 +1162,22 @@ const automationActions = store => ({ cache.push(newBranch) try { - await store.actions.save(newAutomation) + await this.save(newAutomation) } catch (e) { notifications.error("Error adding branch to automation") console.error("Error adding automation branch", e) } - }, + } - /** - * Take a block and move the provided branch to the left - * - * @param {Array} pathTo - * @param {Object} automation - * @param {Object} block - */ - branchLeft: async (pathTo, automation, block) => { - const update = store.actions.shiftBranch(pathTo, block) - const updatedAuto = store.actions.updateStep( - pathTo.slice(0, -1), - automation, - update - ) - await store.actions.save(updatedAuto) - }, + async branchLeft( + pathTo: Array, + automation: Automation, + block: AutomationStep + ) { + const update = this.shiftBranch(pathTo, block) + const updatedAuto = this.updateStep(pathTo.slice(0, -1), automation, update) + await this.save(updatedAuto) + } /** * Take a block and move the provided branch right @@ -1134,24 +1186,17 @@ const automationActions = store => ({ * @param {Object} automation * @param {Object} block */ - branchRight: async (pathTo, automation, block) => { - const update = store.actions.shiftBranch(pathTo, block, 1) - const updatedAuto = store.actions.updateStep( - pathTo.slice(0, -1), - automation, - update - ) - await store.actions.save(updatedAuto) - }, + async branchRight( + pathTo: Array, + automation: Automation, + block: AutomationStep + ) { + const update = this.shiftBranch(pathTo, block, 1) + const updatedAuto = this.updateStep(pathTo.slice(0, -1), automation, update) + await this.save(updatedAuto) + } - /** - * Shift swap a branch with its immediate neighbour. - * @param {Array} pathTo - address of the branch to be moved. - * @param {Object} block - the step the branch belongs to - * @param {Number} direction - the direction of the swap. Defaults to -1 for left, add 1 for right - * @returns - */ - shiftBranch(pathTo, block, direction = -1) { + shiftBranch(pathTo: Array, block: AutomationStep, direction = -1) { let newBlock = cloneDeep(block) const branchPath = pathTo.at(-1) const targetIdx = branchPath.branchIdx @@ -1167,8 +1212,7 @@ const automationActions = store => ({ newBlock.inputs.branches.splice(targetIdx, 0, neighbour) return newBlock - }, - + } /** * Delete a branch at the given path * When branch count reaches 1, the branch children are removed @@ -1177,15 +1221,15 @@ const automationActions = store => ({ * @param {Array} path * @param {Array} automation */ - deleteBranch: async (path, automation) => { + async deleteBranch(path: Array, automation: Automation) { let newAutomation = cloneDeep(automation) - let cache = [] + let cache: any[] = [] path.forEach((path, pathIdx, array) => { const { stepIdx, branchIdx } = path const final = pathIdx === array.length - 1 - // The first poi + // The first point if (!cache.length) { if (final) { cache = newAutomation.definition.steps @@ -1239,15 +1283,15 @@ const automationActions = store => ({ }) try { - await store.actions.save(newAutomation) + await this.save(newAutomation) } catch (e) { notifications.error("Error deleting automation branch") console.error("Error deleting automation branch", e) } - }, + } - saveAutomationName: async (blockId, name) => { - const automation = get(selectedAutomation).data + async saveAutomationName(blockId: string, name: string) { + const automation = get(selectedAutomation)?.data let newAutomation = cloneDeep(automation) if (!newAutomation) { return @@ -1260,117 +1304,128 @@ const automationActions = store => ({ [blockId]: newName, } - await store.actions.save(newAutomation) - }, - deleteAutomationName: async blockId => { - const automation = get(selectedAutomation).data + await this.save(newAutomation) + } + + async deleteAutomationName(blockId: string) { + const automation = get(selectedAutomation)?.data let newAutomation = cloneDeep(automation) if (!automation) { return } - if (newAutomation.definition.stepNames) { + if (newAutomation?.definition.stepNames) { delete newAutomation.definition.stepNames[blockId] } - await store.actions.save(newAutomation) - }, + await this.save(newAutomation) + } - /** - * Delete the block at a given path and save. - * Any related blocks, like loops, are purged at the same time - * - * @param {Array} pathTo the path to the target node - */ - deleteAutomationBlock: async pathTo => { + async deleteAutomationBlock(pathTo: Array) { const automation = get(selectedAutomation)?.data + if (!automation) { + return + } - const { newAutomation } = store.actions.deleteBlock(pathTo, automation) + const { newAutomation } = this.deleteBlock(pathTo, automation) try { - await store.actions.save(newAutomation) + await this.save(newAutomation) } catch (e) { notifications.error("Error deleting automation block") console.error("Automation deleting block ", e) } - }, + } - replace: async (automationId, automation) => { + async replace(automationId: string, automation?: Automation) { if (!automation) { - store.update(state => { + this.store.update(state => { // Remove the automation state.automations = state.automations.filter( x => x._id !== automationId ) // Select a new automation if required if (automationId === state.selectedAutomationId) { - store.actions.select(state.automations[0]?._id) + this.select(state.automations[0]?._id || null) } return state }) } else { - const index = get(store).automations.findIndex( + const index = get(this.store).automations.findIndex( x => x._id === automation._id ) if (index === -1) { // Automation addition - store.update(state => ({ + this.store.update(state => ({ ...state, automations: [...state.automations, automation], })) } else { // Automation update - store.update(state => { + this.store.update(state => { state.automations[index] = automation return state }) } } - }, -}) - -const automations = createAutomationStore() - -export const automationStore = automations.store - -export const automationHistoryStore = automations.history - -// Derived automation state -export const selectedAutomation = derived(automationStore, $automationStore => { - if (!$automationStore.selectedAutomationId) { - return null } +} - const selected = $automationStore.automations?.find( - x => x._id === $automationStore.selectedAutomationId - ) +export class SelectedAutomationStore extends DerivedBudiStore< + AutomationState, + AutomationState & { data: Automation | null; blockRefs: Record } +> { + constructor(automationStore: AutomationStore) { + const makeDerivedStore = (store: Writable) => { + return derived(store, $store => { + if (!$store.selectedAutomationId === null) { + return { ...$store, data: null, blockRefs: {} } + } - // Traverse the entire tree and record all nodes found - // Also store any info relevant to the UX - const blockRefs = {} - automationStore.actions.traverse(blockRefs, selected) + const selected = $store.automations?.find( + x => x._id === $store.selectedAutomationId + ) - // Parse the steps for references to sequential binding - // Replace all bindings with id based alternatives - const updatedAuto = cloneDeep(selected) - Object.values(blockRefs) - .filter(blockRef => { - // Pulls out all distinct terminating nodes - return blockRef.terminating - }) - .forEach(blockRef => { - automationStore.actions - .getPathSteps(blockRef.pathTo, updatedAuto) - .forEach((step, idx, steps) => { - migrateReferencesInObject({ - obj: step, - originalIndex: idx, - steps, + if (!selected) { + return { ...$store, data: null, blockRefs: {} } + } + + // Traverse the entire tree and record all nodes found + // Also store any info relevant to the UX + const blockRefs: Record = {} + automations.traverse(blockRefs, selected) + + // Parse the steps for references to sequential binding + // Replace all bindings with id based alternatives + const updatedAuto = cloneDeep(selected) + Object.values(blockRefs) + .filter(blockRef => { + // Pulls out all distinct terminating nodes + return blockRef.terminating + }) + .forEach(blockRef => { + automations + .getPathSteps(blockRef.pathTo, updatedAuto) + .forEach((step, idx, steps) => { + migrateReferencesInObject({ + obj: step, + originalIndex: idx, + steps, + }) + }) }) - }) - }) - return { - data: updatedAuto, - blockRefs, + return { + ...$store, + data: updatedAuto, + blockRefs, + } + }) + } + + super(initialAutomationState, makeDerivedStore) } -}) +} + +export const automations = new AutomationStore() +export const automationHistoryStore = automations.history +export const selectedAutomation = new SelectedAutomationStore(automations) From 317ef26f1a0b6609e684caa27098f034b1bfa22c Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 19 Dec 2024 15:20:08 +0000 Subject: [PATCH 02/52] more typings --- .../builder/src/stores/builder/automations.ts | 734 ++++++++++-------- .../src/documents/app/automation/schema.ts | 4 +- 2 files changed, 404 insertions(+), 334 deletions(-) diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index a5b0e00d45..61ec4814f1 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -46,7 +46,7 @@ interface AutomationState { selectedAutomationId: string | null } -interface DerivedAutomationState { +interface DerivedAutomationState extends AutomationState { data: Automation | null blockRefs: Record } @@ -81,27 +81,7 @@ const getFinalDefinitions = ( } } -class AutomationStore extends BudiStore { - history: any - - constructor() { - super(initialAutomationState) - - // Setup history for automations - this.history = createHistoryStore({ - getDoc: this.getDefinition.bind(this), - selectDoc: this.select.bind(this), - beforeAction: () => {}, - afterAction: () => {}, - }) - - // Wrap save and delete with history - const originalSave = this.save.bind(this) - const originalDelete = this.delete.bind(this) - this.save = this.history.wrapSaveDoc(originalSave) - this.delete = this.history.wrapDeleteDoc(originalDelete) - } - +const automationActions = (store: AutomationStore) => ({ /** * Move a given block from one location on the tree to another. * @@ -109,7 +89,7 @@ class AutomationStore extends BudiStore { * @param {Object} destPath the destinationPart * @param {Object} automation the automaton to be mutated */ - async moveBlock(sourcePath: any, destPath: any, automation: Automation) { + moveBlock: async (sourcePath: any, destPath: any, automation: Automation) => { // The last part of the source node address, containing the id. const pathSource = sourcePath.at(-1) @@ -133,12 +113,15 @@ class AutomationStore extends BudiStore { // Use core delete to remove and return the deleted block // from the automation - const { deleted, newAutomation } = this.deleteBlock(sourcePath, automation) + const { deleted, newAutomation } = store.actions.deleteBlock( + sourcePath, + automation + ) // Traverse again as deleting the node from its original location // will redefine all proceding node locations - const newRefs = {} - this.traverse(newRefs, newAutomation) + const newRefs: Record = {} + store.actions.traverse(newRefs, newAutomation) let finalPath // If dropping in a branch-step dropzone you need to find @@ -155,16 +138,20 @@ class AutomationStore extends BudiStore { // Uses the updated tree refs to resolve the new position // for the moved element. - const updated = this.updateStep(finalPath, newAutomation, deleted, true) + const updated = store.actions.updateStep( + finalPath, + newAutomation, + deleted, + true + ) try { - await this.save(updated) + await store.actions.save(updated) } catch (e) { notifications.error("Error moving automation block") console.error("Error moving automation block ", e) } - } - + }, /** * Core delete function that will delete the node at the provided * location. Loops require 2 deletes so the function returns an array. @@ -174,7 +161,7 @@ class AutomationStore extends BudiStore { * @param {*} automation the automation to alter. * @returns {Object} contains the deleted nodes and new updated automation */ - deleteBlock(pathTo: Array, automation: Automation) { + deleteBlock: (pathTo: Array, automation: Automation) => { let newAutomation = cloneDeep(automation) const steps = [ @@ -251,8 +238,7 @@ class AutomationStore extends BudiStore { // should be 1-2 blocks in an array return cache - } - + }, /** * Build metadata for the automation tree. Store the path and * note any loop information used when rendering @@ -260,13 +246,12 @@ class AutomationStore extends BudiStore { * @param {Object} block * @param {Array} pathTo */ - registerBlock( + registerBlock: ( blocks: Record, block: AutomationStep, pathTo: Array, terminating: boolean - ) { - // Directly mutate the `blocks` object without reassigning + ) => { blocks[block.id] = { ...(blocks[block.id] || {}), pathTo, @@ -281,7 +266,7 @@ class AutomationStore extends BudiStore { looped: block.id, } } - } + }, /** * Build a sequential list of all steps on the step path provided @@ -289,7 +274,7 @@ class AutomationStore extends BudiStore { * @param {Array} pathWay e.g. [{stepIdx:2},{branchIdx:0, stepIdx:2},...] * @returns {Array} all steps encountered on the provided path */ - getPathSteps(pathWay: Array, automation: Automation) { + getPathSteps: (pathWay: Array, automation: Automation) => { // Base Steps, including trigger const steps = [ automation.definition.trigger, @@ -315,7 +300,7 @@ class AutomationStore extends BudiStore { } }) return result - } + }, /** * Take an updated step and replace it in the specified location @@ -328,12 +313,12 @@ class AutomationStore extends BudiStore { * @param {Boolean} insert defaults to false * @returns */ - updateStep( + updateStep: ( pathWay: Array, automation: Automation, update: AutomationStep | AutomationStep[], insert = false - ) { + ) => { let newAutomation = cloneDeep(automation) const finalise = ( @@ -348,7 +333,7 @@ class AutomationStore extends BudiStore { ) } - let cache = null + let cache: any = null pathWay.forEach((path, idx, array) => { const { stepIdx, branchIdx } = path let final = idx === array.length - 1 @@ -375,7 +360,7 @@ class AutomationStore extends BudiStore { }) return newAutomation - } + }, /** * If the current license covers Environment variables, @@ -383,7 +368,7 @@ class AutomationStore extends BudiStore { * * @returns {Array} all available environment bindings */ - buildEnvironmentBindings() { + buildEnvironmentBindings: () => { if (get(licensing).environmentVariablesEnabled) { return getEnvironmentBindings().map(binding => { return { @@ -396,14 +381,15 @@ class AutomationStore extends BudiStore { }) } return [] - } + }, + /** * Get user bindings * * @returns {Array} all available user bindings */ - buildUserBindings() { - return getUserBindings().map(binding => { + buildUserBindings: () => { + return getUserBindings().map((binding: any) => { return { ...binding, category: "User", @@ -413,13 +399,14 @@ class AutomationStore extends BudiStore { }, } }) - } + }, + /** * Get settings bindings * * @returns {Array} all available settings bindings */ - buildSettingBindings() { + buildSettingBindings: () => { return getSettingBindings().map(binding => { return { ...binding, @@ -429,7 +416,7 @@ class AutomationStore extends BudiStore { }, } }) - } + }, /** * Take the supplied step id and aggregate all bindings for every * step preceding it. @@ -437,10 +424,13 @@ class AutomationStore extends BudiStore { * @param {string} id the step id of the target * @returns {Array} all bindings on the path to this step */ - getPathBindings(id: string) { + getPathBindings: (id: string) => { const block = get(selectedAutomation)?.blockRefs[id] - return this.getAvailableBindings(block, get(selectedAutomation)?.data) - } + return store.actions.getAvailableBindings( + block, + get(selectedAutomation)?.data + ) + }, /** * Takes the provided automation and traverses all possible paths. @@ -450,7 +440,7 @@ class AutomationStore extends BudiStore { * * @param {Object} automation */ - traverse(blockRefs: Record, automation: Automation) { + traverse: (blockRefs: Record, automation: Automation) => { let blocks: AutomationStep[] = [] if (!automation || !blockRefs) { return @@ -475,17 +465,19 @@ class AutomationStore extends BudiStore { id: block.id, }, ] - const branches = block.inputs?.branches || [] + const branches: Branch[] = block.inputs?.branches || [] branches.forEach((branch, bIdx) => { - block.inputs?.children[branch.id].forEach((bBlock, sIdx, array) => { - const ended = - array.length - 1 === sIdx && !bBlock.inputs?.branches?.length - treeTraverse(bBlock, pathToCurrentNode, sIdx, bIdx, ended) - }) + block.inputs?.children[branch.id].forEach( + (bBlock: any, sIdx: any, array: any) => { + const ended = + array.length - 1 === sIdx && !bBlock.inputs?.branches?.length + treeTraverse(bBlock, pathToCurrentNode, sIdx, bIdx, ended) + } + ) }) - this.registerBlock( + store.actions.registerBlock( blockRefs, block, pathToCurrentNode, @@ -499,18 +491,9 @@ class AutomationStore extends BudiStore { }) return blockRefs - } + }, - /** - * Build a list of all bindings specifically on the path - * preceding the provided block. - * - * @param {Object} block step object - * @param {Object} automation The complete automation - * @returns - */ - - getAvailableBindings(block: any, automation: Automation | null) { + getAvailableBindings: (block: any, automation: Automation | null) => { if (!block || !automation?.definition) { return [] } @@ -520,10 +503,14 @@ class AutomationStore extends BudiStore { // Get all preceeding steps, including the trigger // Filter out the target step as we don't want to include itself - const pathSteps = this.getPathSteps(block.pathTo, automation).slice(0, -1) + const pathSteps = store.actions + .getPathSteps(block.pathTo, automation) + .slice(0, -1) // Current step will always be the last step of the path - const currentBlock = this.getPathSteps(block.pathTo, automation).at(-1) + const currentBlock = store.actions + .getPathSteps(block.pathTo, automation) + .at(-1) // Extract all outputs from all previous steps as available bindings let bindings: any[] = [] @@ -536,7 +523,7 @@ class AutomationStore extends BudiStore { bindingName?: string ) => { if (!name) return - const runtimeBinding = this.determineRuntimeBinding( + const runtimeBinding = store.actions.determineRuntimeBinding( name, idx, isLoopBlock, @@ -545,14 +532,14 @@ class AutomationStore extends BudiStore { currentBlock, pathSteps ) - const categoryName = this.determineCategoryName( + const categoryName = store.actions.determineCategoryName( idx, isLoopBlock, bindingName, loopBlockCount ) bindings.push( - this.createBindingObject( + store.actions.createBindingObject( name, value, icon, @@ -581,9 +568,6 @@ class AutomationStore extends BudiStore { const isTrigger = pathBlock.type === AutomationStepType.TRIGGER - // Add the loop schema - // Should only be visible for blocks[pathBlock.id].looped - // Only a once otherwise there will be 1 per loop block if (isLoopBlock && loopBlockCount == 0) { schema = { currentItem: { @@ -604,17 +588,15 @@ class AutomationStore extends BudiStore { pathBlock.event === AutomationEventType.ROW_UPDATE || pathBlock.event === AutomationEventType.ROW_SAVE ) { - let table: Table = get(tables).list.find( - table => table._id === pathBlock.inputs.tableId + let table = get(tables).list.find( + (table: Table) => table._id === pathBlock.inputs.tableId ) - // We want to generate our own schema for the bindings from the table schema itself for (const key in table?.schema) { schema[key] = { type: table.schema[key].type, subtype: table.schema[key].subtype, } } - // remove the original binding delete schema.row } else if (pathBlock.event === AutomationEventType.APP_TRIGGER) { schema = Object.fromEntries( @@ -648,9 +630,9 @@ class AutomationStore extends BudiStore { bindings = bindings.filter(x => !x.readableBinding.includes("loop")) } return bindings - } + }, - private determineRuntimeBinding( + determineRuntimeBinding: ( name: string, idx: number, isLoopBlock: boolean, @@ -658,7 +640,7 @@ class AutomationStore extends BudiStore { automation: Automation, currentBlock: AutomationStep | undefined, pathSteps: AutomationStep[] - ) { + ) => { let runtimeName: string | null /* Begin special cases for generating custom schemas based on triggers */ @@ -701,22 +683,22 @@ class AutomationStore extends BudiStore { } return runtimeName - } + }, - private determineCategoryName( + determineCategoryName: ( idx: number, isLoopBlock: boolean, bindingName: string | undefined, loopBlockCount: number - ) { + ) => { if (idx === 0) return "Trigger outputs" if (isLoopBlock) return "Loop Outputs" return bindingName ? `${bindingName} outputs` : `Step ${idx - loopBlockCount} outputs` - } + }, - private createBindingObject( + createBindingObject: ( name: string, value: any, icon: string, @@ -726,7 +708,7 @@ class AutomationStore extends BudiStore { runtimeBinding: string | null, categoryName: string, bindingName?: string - ) { + ) => { const field = Object.values(FIELDS).find( field => field.type === value.type && field.subtype === value.subtype ) @@ -746,129 +728,12 @@ class AutomationStore extends BudiStore { rank: isLoopBlock ? idx + 1 : idx - loopBlockCount, }, } - } + }, - async definitions() { - const response = await API.getAutomationDefinitions() - this.store.update(state => { - state.blockDefinitions = getFinalDefinitions( - response.trigger, - response.action - ) - return state - }) - return response - } - - async fetch() { - const [automationResponse, definitions] = await Promise.all([ - API.getAutomations(), - API.getAutomationDefinitions(), - ]) - this.store.update(state => { - state.automations = automationResponse.automations - state.automations.sort((a, b) => { - return a.name < b.name ? -1 : 1 - }) - state.blockDefinitions = getFinalDefinitions( - definitions.trigger, - definitions.action - ) - return state - }) - } - - async create(name: string, trigger: AutomationStep) { - const automation: Automation = { - name, - type: "automation", - definition: { - steps: [], - trigger, - }, - disabled: false, - } - const response = await this.save(automation) - return response - } - - async duplicate(automation: Automation) { - const response = await this.save({ - ...automation, - name: `${automation.name} - copy`, - _id: undefined, - _rev: undefined, - }) - return response - } - - async save(automation: Automation) { - const response = await API.updateAutomation(automation) - await this.fetch() - this.select(response._id) - return response.automation - } - - async delete(automation: Automation) { - const isRowAction = sdk.automations.isRowAction(automation) - if (isRowAction) { - await rowActions.delete( - automation.definition.trigger.inputs.tableId, - automation.definition.trigger.inputs.rowActionId - ) - } else { - await API.deleteAutomation(automation._id!, automation._rev!) - } - - this.store.update(state => { - state.automations = state.automations.filter( - x => x._id !== automation._id - ) - if (automation._id === state.selectedAutomationId) { - state.selectedAutomationId = state.automations[0]?._id || null - } - return state - }) - } - - select(id: string | null) { - if (!id || id === get(this.store).selectedAutomationId) { - return - } - this.store.update(state => { - state.selectedAutomationId = id - state.testResults = null - state.showTestPanel = false - return state - }) - } - - getDefinition(id: string): Automation | undefined { - return get(this.store).automations?.find(x => x._id === id) - } - - async toggleDisabled(automationId: string) { - let automation: Automation | undefined - try { - automation = this.getDefinition(automationId) - if (!automation) { - return - } - automation.disabled = !automation.disabled - await this.save(automation) - notifications.success( - `Automation ${ - automation.disabled ? "disabled" : "enabled" - } successfully` - ) - } catch (error) { - notifications.error( - `Error ${automation?.disabled ? "disabling" : "enabling"} automation` - ) - } - } - - async processBlockInputs(block: AutomationStep, data: Record) { + processBlockInputs: async ( + block: AutomationStep, + data: Record + ) => { // Create new modified block let newBlock = { ...block, @@ -891,7 +756,10 @@ class AutomationStore extends BudiStore { if (!automation) { return false } - const newAutomation = this.getUpdatedDefinition(automation, newBlock) + const newAutomation = store.actions.getUpdatedDefinition( + automation, + newBlock + ) // Don't save if no changes were made if (JSON.stringify(newAutomation) === JSON.stringify(automation)) { @@ -899,17 +767,20 @@ class AutomationStore extends BudiStore { } return newAutomation - } + }, - async updateBlockInputs(block: AutomationStep, data: Record) { - const newAutomation = await this.processBlockInputs(block, data) + updateBlockInputs: async ( + block: AutomationStep, + data: Record + ) => { + const newAutomation = await store.actions.processBlockInputs(block, data) if (newAutomation === false) { return } - await this.save(newAutomation) - } + await store.actions.save(newAutomation) + }, - async test(automation: Automation, testData: any) { + test: async (automation: Automation, testData: any) => { let result: any try { result = await API.testAutomation(automation._id!, testData) @@ -923,28 +794,28 @@ class AutomationStore extends BudiStore { } throw "Something went wrong testing your automation" } - this.store.update(state => { + store.update(state => { state.testResults = result return state }) - } + }, - getUpdatedDefinition( + getUpdatedDefinition: ( automation: Automation, block: AutomationStep | AutomationTrigger - ): Automation { + ): Automation => { let newAutomation: Automation if (automation.definition.trigger?.id === block.id) { newAutomation = cloneDeep(automation) newAutomation.definition.trigger = block as AutomationTrigger } else { const pathToStep = get(selectedAutomation)!.blockRefs[block.id].pathTo - newAutomation = this.updateStep(pathToStep, automation, block) + newAutomation = store.actions.updateStep(pathToStep, automation, block) } return newAutomation - } + }, - async getLogs({ + getLogs: async ({ automationId, startDate, status, @@ -953,27 +824,30 @@ class AutomationStore extends BudiStore { automationId?: string startDate?: string status?: AutomationStatus - page?: number - } = {}) { + page?: string + } = {}) => { return await API.getAutomationLogs({ automationId, startDate, status, page, }) - } + }, - async clearLogErrors({ + clearLogErrors: async ({ automationId, appId, }: { - automationId?: string - appId?: string - } = {}) { + automationId: string + appId: string + }) => { + if (!automationId || !appId) { + throw new Error("automationId and appId are required") + } return await API.clearAutomationLogErrors(automationId, appId) - } + }, - addTestDataToAutomation(data: any) { + addTestDataToAutomation: (data: any) => { let newAutomation = cloneDeep(get(selectedAutomation)?.data) if (!newAutomation) { return newAutomation @@ -983,9 +857,9 @@ class AutomationStore extends BudiStore { ...data, } return newAutomation - } + }, - constructBlock(type: string, stepId: string, blockDefinition: any) { + constructBlock: (type: string, stepId: string, blockDefinition: any) => { const newStep = { ...blockDefinition, inputs: blockDefinition.inputs || {}, @@ -996,14 +870,27 @@ class AutomationStore extends BudiStore { const newName = getNewStepName(get(selectedAutomation)?.data, newStep) newStep.name = newName return newStep - } + }, - generateBranchBlock() { - const branchDefinition = get(this.store).blockDefinitions.ACTION.BRANCH - return this.constructBlock("ACTION", "BRANCH", branchDefinition) - } + /** + * Generate a new branch block for adding to the automation + * There are a minimum of 2 empty branches by default. + * + * @returns {Object} - a default branch block + */ + generateBranchBlock: () => { + const branchDefinition = get(store).blockDefinitions.ACTION.BRANCH + return store.actions.constructBlock("ACTION", "BRANCH", branchDefinition) + }, - async addBlockToAutomation(block: AutomationStep, pathWay: Array) { + /** + * Take a newly constructed block and insert it in the automation tree + * at the specified location. + * + * @param {Object} block the new block + * @param {Array} pathWay location of insert point + */ + addBlockToAutomation: async (block: AutomationStep, pathWay: Array) => { const automation = get(selectedAutomation)?.data if (!automation) { return @@ -1022,17 +909,13 @@ class AutomationStore extends BudiStore { const insertBlock = (steps: AutomationStep[], stepIdx: number) => { const isBranchNode = !Number.isInteger(stepIdx) - - // If it's a loop block, insert at the looped block stepIdx const insertIdx = block.blockToLoop || isBranchNode ? stepIdx : stepIdx + 1 - steps.splice(insertIdx, 0, block) } if (!cache) { if (final) { - // Offset path to accommodate the trigger insertBlock(newAutomation.definition.steps, stepIdx - 1) cache = block } else { @@ -1055,14 +938,20 @@ class AutomationStore extends BudiStore { }) try { - await this.save(newAutomation) + await store.actions.save(newAutomation) } catch (e) { notifications.error("Error adding automation block") console.error("Automation adding block ", e) } - } + }, - generateDefaultConditions() { + /** + * Generate empty condition config + * Used on initialisation and reset of a condition. + * + * @returns {Object} contains a condition and conditionUI entry. + */ + generateDefaultConditions: () => { const baseConditionUI = { logicalOperator: "all", onEmptyFilter: "none", @@ -1072,9 +961,17 @@ class AutomationStore extends BudiStore { condition: QueryUtils.buildQuery(baseConditionUI), conditionUI: baseConditionUI, } - } + }, - async branchAutomation(path: Array, automation: Automation) { + /** + * Generates a new branch in the tree at the given location. + * All steps below the path, if any, are added to a new default branch + * 2 branch nodes are created by default. + * + * @param {Array} path - the insertion point on the tree. + * @param {Object} automation - the target automation to update. + */ + branchAutomation: async (path: Array, automation: Automation) => { const insertPoint = path.at(-1) let newAutomation = cloneDeep(automation) let cache: any = null @@ -1084,7 +981,7 @@ class AutomationStore extends BudiStore { const createBranch = (name: string) => { return { name, - ...this.generateDefaultConditions(), + ...store.actions.generateDefaultConditions(), id: generate(), } } @@ -1129,7 +1026,7 @@ class AutomationStore extends BudiStore { cache[insertIdx].inputs.children[branchEntry.id] = [] try { - await this.save(newAutomation) + await store.actions.save(newAutomation) } catch (e) { notifications.error("Error adding branch to automation") console.error("Error adding automation branch", e) @@ -1138,7 +1035,7 @@ class AutomationStore extends BudiStore { } // Creating a new branch block - const newBranch = this.generateBranchBlock() + const newBranch = store.actions.generateBranchBlock() // Default branch node count is 2. Build 2 default entries newBranch.inputs.branches = Array.from({ length: 2 }).map((_, idx) => { @@ -1162,22 +1059,33 @@ class AutomationStore extends BudiStore { cache.push(newBranch) try { - await this.save(newAutomation) + await store.actions.save(newAutomation) } catch (e) { notifications.error("Error adding branch to automation") console.error("Error adding automation branch", e) } - } + }, - async branchLeft( + /** + * Take a block and move the provided branch to the left + * + * @param {Array} pathTo + * @param {Object} automation + * @param {Object} block + */ + branchLeft: async ( pathTo: Array, automation: Automation, block: AutomationStep - ) { - const update = this.shiftBranch(pathTo, block) - const updatedAuto = this.updateStep(pathTo.slice(0, -1), automation, update) - await this.save(updatedAuto) - } + ) => { + const update = store.actions.shiftBranch(pathTo, block) + const updatedAuto = store.actions.updateStep( + pathTo.slice(0, -1), + automation, + update + ) + await store.actions.save(updatedAuto) + }, /** * Take a block and move the provided branch right @@ -1186,17 +1094,28 @@ class AutomationStore extends BudiStore { * @param {Object} automation * @param {Object} block */ - async branchRight( + branchRight: async ( pathTo: Array, automation: Automation, block: AutomationStep - ) { - const update = this.shiftBranch(pathTo, block, 1) - const updatedAuto = this.updateStep(pathTo.slice(0, -1), automation, update) - await this.save(updatedAuto) - } + ) => { + const update = store.actions.shiftBranch(pathTo, block, 1) + const updatedAuto = store.actions.updateStep( + pathTo.slice(0, -1), + automation, + update + ) + await store.actions.save(updatedAuto) + }, - shiftBranch(pathTo: Array, block: AutomationStep, direction = -1) { + /** + * Shift swap a branch with its immediate neighbour. + * @param {Array} pathTo - address of the branch to be moved. + * @param {Object} block - the step the branch belongs to + * @param {Number} direction - the direction of the swap. Defaults to -1 for left, add 1 for right + * @returns + */ + shiftBranch: (pathTo: Array, block: AutomationStep, direction = -1) => { let newBlock = cloneDeep(block) const branchPath = pathTo.at(-1) const targetIdx = branchPath.branchIdx @@ -1207,12 +1126,10 @@ class AutomationStore extends BudiStore { } let [neighbour] = newBlock.inputs.branches.splice(targetIdx + direction, 1) - - // Put it back in the previous position. newBlock.inputs.branches.splice(targetIdx, 0, neighbour) - return newBlock - } + }, + /** * Delete a branch at the given path * When branch count reaches 1, the branch children are removed @@ -1221,15 +1138,15 @@ class AutomationStore extends BudiStore { * @param {Array} path * @param {Array} automation */ - async deleteBranch(path: Array, automation: Automation) { + deleteBranch: async (path: Array, automation: Automation) => { let newAutomation = cloneDeep(automation) - let cache: any[] = [] + let cache: any = [] path.forEach((path, pathIdx, array) => { const { stepIdx, branchIdx } = path const final = pathIdx === array.length - 1 - // The first point + // The first poi if (!cache.length) { if (final) { cache = newAutomation.definition.steps @@ -1283,14 +1200,14 @@ class AutomationStore extends BudiStore { }) try { - await this.save(newAutomation) + await store.actions.save(newAutomation) } catch (e) { notifications.error("Error deleting automation branch") console.error("Error deleting automation branch", e) } - } + }, - async saveAutomationName(blockId: string, name: string) { + saveAutomationName: async (blockId: string, name: string) => { const automation = get(selectedAutomation)?.data let newAutomation = cloneDeep(automation) if (!newAutomation) { @@ -1298,16 +1215,15 @@ class AutomationStore extends BudiStore { } const newName = name.trim() - newAutomation.definition.stepNames = { ...newAutomation.definition.stepNames, [blockId]: newName, } - await this.save(newAutomation) - } + await store.actions.save(newAutomation) + }, - async deleteAutomationName(blockId: string) { + deleteAutomationName: async (blockId: string) => { const automation = get(selectedAutomation)?.data let newAutomation = cloneDeep(automation) if (!automation) { @@ -1317,68 +1233,219 @@ class AutomationStore extends BudiStore { delete newAutomation.definition.stepNames[blockId] } - await this.save(newAutomation) - } + await store.actions.save(newAutomation) + }, - async deleteAutomationBlock(pathTo: Array) { + /** + * Delete the block at a given path and save. + * Any related blocks, like loops, are purged at the same time + * + * @param {Array} pathTo the path to the target node + */ + deleteAutomationBlock: async (pathTo: Array) => { const automation = get(selectedAutomation)?.data if (!automation) { return } - const { newAutomation } = this.deleteBlock(pathTo, automation) + const { newAutomation } = store.actions.deleteBlock(pathTo, automation) try { - await this.save(newAutomation) + await store.actions.save(newAutomation) } catch (e) { notifications.error("Error deleting automation block") console.error("Automation deleting block ", e) } - } + }, - async replace(automationId: string, automation?: Automation) { + replace: (automationId: string, automation?: Automation) => { if (!automation) { - this.store.update(state => { - // Remove the automation + store.store.update(state => { state.automations = state.automations.filter( x => x._id !== automationId ) - // Select a new automation if required if (automationId === state.selectedAutomationId) { - this.select(state.automations[0]?._id || null) + store.actions.select(state.automations[0]?._id || null) } return state }) } else { - const index = get(this.store).automations.findIndex( + const index = get(store.store).automations.findIndex( x => x._id === automation._id ) if (index === -1) { - // Automation addition - this.store.update(state => ({ + store.store.update(state => ({ ...state, automations: [...state.automations, automation], })) } else { - // Automation update - this.store.update(state => { + store.store.update(state => { state.automations[index] = automation return state }) } } + }, + + create: async (name: string, trigger: AutomationTrigger) => { + const automation: Automation = { + name, + type: "automation", + definition: { + steps: [], + trigger, + }, + disabled: false, + } + const response = await store.actions.save(automation) + return response + }, + + duplicate: async (automation: Automation) => { + const response = await store.actions.save({ + ...automation, + name: `${automation.name} - copy`, + _id: undefined, + _rev: undefined, + }) + return response + }, + + toggleDisabled: async (automationId: string) => { + let automation: Automation | undefined + try { + automation = store.actions.getDefinition(automationId) + if (!automation) { + return + } + automation.disabled = !automation.disabled + await store.actions.save(automation) + notifications.success( + `Automation ${ + automation.disabled ? "disabled" : "enabled" + } successfully` + ) + } catch (error) { + notifications.error( + `Error ${automation?.disabled ? "disabling" : "enabling"} automation` + ) + } + }, + + definitions: async () => { + const response = await API.getAutomationDefinitions() + store.update(state => { + state.blockDefinitions = getFinalDefinitions( + response.trigger, + response.action + ) + return state + }) + return response + }, + + fetch: async () => { + const [automationResponse, definitions] = await Promise.all([ + API.getAutomations(), + API.getAutomationDefinitions(), + ]) + store.update(state => { + state.automations = automationResponse.automations + state.automations.sort((a, b) => { + return a.name < b.name ? -1 : 1 + }) + state.blockDefinitions = getFinalDefinitions( + definitions.trigger, + definitions.action + ) + return state + }) + }, + + select: (id: string | null) => { + if (!id || id === get(store).selectedAutomationId) { + return + } + store.update(state => { + state.selectedAutomationId = id + state.testResults = null + state.showTestPanel = false + return state + }) + }, + + getDefinition: (id: string): Automation | undefined => { + return get(store.store).automations?.find(x => x._id === id) + }, + + save: async (automation: Automation) => { + const response = await API.updateAutomation(automation) + await store.actions.fetch() + store.actions.select(response._id) + return response.automation + }, + + delete: async (automation: Automation) => { + const isRowAction = sdk.automations.isRowAction(automation) + if (isRowAction) { + await rowActions.delete( + automation.definition.trigger.inputs.tableId, + automation.definition.trigger.inputs.rowActionId + ) + } else { + await API.deleteAutomation(automation._id!, automation._rev!) + } + + store.update(state => { + state.automations = state.automations.filter( + x => x._id !== automation._id + ) + if (automation._id === state.selectedAutomationId) { + state.selectedAutomationId = state.automations[0]?._id || null + } + return state + }) + }, +}) + +class AutomationStore extends BudiStore { + history: any + actions: ReturnType + + constructor() { + super(initialAutomationState) + this.actions = automationActions(this) + this.history = createHistoryStore({ + getDoc: this.actions.getDefinition.bind(this), + selectDoc: this.actions.select.bind(this), + beforeAction: () => {}, + afterAction: () => {}, + }) + + // Then wrap save and delete with history + const originalSave = this.actions.save.bind(this.actions) + const originalDelete = this.actions.delete.bind(this.actions) + this.actions.save = this.history.wrapSaveDoc(originalSave) + this.actions.delete = this.history.wrapDeleteDoc(originalDelete) } } +export const automationStore = new AutomationStore() +export const automationHistoryStore = automationStore.history + export class SelectedAutomationStore extends DerivedBudiStore< AutomationState, - AutomationState & { data: Automation | null; blockRefs: Record } + DerivedAutomationState > { constructor(automationStore: AutomationStore) { const makeDerivedStore = (store: Writable) => { - return derived(store, $store => { - if (!$store.selectedAutomationId === null) { - return { ...$store, data: null, blockRefs: {} } + return derived(automationStore, $store => { + if (!$store.selectedAutomationId) { + return { + data: null, + blockRefs: {}, + ...$store, + } } const selected = $store.automations?.find( @@ -1386,46 +1453,47 @@ export class SelectedAutomationStore extends DerivedBudiStore< ) if (!selected) { - return { ...$store, data: null, blockRefs: {} } + return { + data: null, + blockRefs: {}, + ...$store, + } } - // Traverse the entire tree and record all nodes found - // Also store any info relevant to the UX const blockRefs: Record = {} - automations.traverse(blockRefs, selected) - - // Parse the steps for references to sequential binding - // Replace all bindings with id based alternatives const updatedAuto = cloneDeep(selected) - Object.values(blockRefs) - .filter(blockRef => { - // Pulls out all distinct terminating nodes - return blockRef.terminating - }) - .forEach(blockRef => { - automations - .getPathSteps(blockRef.pathTo, updatedAuto) - .forEach((step, idx, steps) => { - migrateReferencesInObject({ - obj: step, - originalIndex: idx, - steps, + + // Only traverse if we have a valid automation + if (updatedAuto) { + automationStore.actions.traverse(blockRefs, updatedAuto) + + Object.values(blockRefs) + .filter(blockRef => blockRef.terminating) + .forEach(blockRef => { + automationStore.actions + .getPathSteps(blockRef.pathTo, updatedAuto) + .forEach((step, idx, steps) => { + migrateReferencesInObject({ + obj: step, + originalIndex: idx, + steps, + }) }) - }) - }) + }) + } return { - ...$store, data: updatedAuto, blockRefs, + ...$store, } }) } + // Initialize the DerivedBudiStore with automation state and derived logic super(initialAutomationState, makeDerivedStore) } } -export const automations = new AutomationStore() -export const automationHistoryStore = automations.history -export const selectedAutomation = new SelectedAutomationStore(automations) +// Exporting an instance of the `SelectedAutomationStore` +export const selectedAutomation = new SelectedAutomationStore(automationStore) diff --git a/packages/types/src/documents/app/automation/schema.ts b/packages/types/src/documents/app/automation/schema.ts index efdf60a4e2..84bfebf6bf 100644 --- a/packages/types/src/documents/app/automation/schema.ts +++ b/packages/types/src/documents/app/automation/schema.ts @@ -6,6 +6,7 @@ import { AutomationFeature, InputOutputBlock, AutomationTriggerStepId, + AutomationEventType, } from "./automation" import { CollectStepInputs, @@ -142,6 +143,7 @@ export type ActionImplementations = { export interface AutomationStepSchemaBase { name: string stepTitle?: string + event?: AutomationEventType tagline: string icon: string description: string @@ -344,7 +346,7 @@ export interface AutomationTriggerSchema< > extends AutomationStepSchemaBase { id: string type: AutomationStepType.TRIGGER - event?: string + event?: AutomationEventType cronJobId?: string stepId: TTrigger inputs: AutomationTriggerInputs & Record // The record union to be removed once the types are fixed From 28f02cc41d79a7f0bfb1aac30f262b5b46f089ad Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 11:00:15 +0000 Subject: [PATCH 03/52] more typing --- packages/builder/src/dataBinding.js | 8 +- .../builder/src/stores/builder/automations.ts | 90 ++++++++++--------- .../builder/src/stores/portal/licensing.js | 1 + .../documents/app/automation/automation.ts | 1 + 4 files changed, 59 insertions(+), 41 deletions(-) diff --git a/packages/builder/src/dataBinding.js b/packages/builder/src/dataBinding.js index c89221f163..c026a36cb3 100644 --- a/packages/builder/src/dataBinding.js +++ b/packages/builder/src/dataBinding.js @@ -1507,7 +1507,12 @@ export const updateReferencesInObject = ({ // Migrate references // Switch all bindings to reference their ids -export const migrateReferencesInObject = ({ obj, label = "steps", steps }) => { +export const migrateReferencesInObject = ({ + obj, + label = "steps", + steps, + originalIndex, +}) => { const stepIndexRegex = new RegExp(`{{\\s*${label}\\.(\\d+)\\.`, "g") const updateActionStep = (str, index, replaceWith) => str.replace(`{{ ${label}.${index}.`, `{{ ${label}.${replaceWith}.`) @@ -1528,6 +1533,7 @@ export const migrateReferencesInObject = ({ obj, label = "steps", steps }) => { migrateReferencesInObject({ obj: obj[key], steps, + originalIndex, }) } } diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index 61ec4814f1..ce16c47668 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -1,4 +1,4 @@ -import { derived, get, Writable } from "svelte/store" +import { derived, get } from "svelte/store" import { API } from "api" import { cloneDeep } from "lodash/fp" import { generate } from "shortid" @@ -23,6 +23,9 @@ import { Branch, AutomationTrigger, AutomationStatus, + UILogicalOperator, + EmptyFilterOption, + AutomationIOType, } from "@budibase/types" import { ActionStepID } from "constants/backend/automations" import { FIELDS } from "constants/backend" @@ -31,6 +34,7 @@ import { rowActions } from "./rowActions" import { getNewStepName } from "helpers/automations/nameHelpers" import { QueryUtils } from "@budibase/frontend-core" import { BudiStore, DerivedBudiStore } from "stores/BudiStore" +import { appStore } from "stores/builder" interface BlockDefinitions { TRIGGER: Record @@ -248,7 +252,7 @@ const automationActions = (store: AutomationStore) => ({ */ registerBlock: ( blocks: Record, - block: AutomationStep, + block: AutomationStep | AutomationTrigger, pathTo: Array, terminating: boolean ) => { @@ -281,7 +285,7 @@ const automationActions = (store: AutomationStore) => ({ ...automation.definition.steps, ] - let result: AutomationStep[] + let result: (AutomationStep | AutomationTrigger)[] = [] pathWay.forEach(path => { const { stepIdx, branchIdx } = path let last = result ? result[result.length - 1] : [] @@ -290,13 +294,14 @@ const automationActions = (store: AutomationStore) => ({ result = steps.slice(0, stepIdx + 1) return } - - if (Number.isInteger(branchIdx)) { - const branchId = last.inputs.branches[branchIdx].id - const children = last.inputs.children[branchId] - const stepChildren = children.slice(0, stepIdx + 1) - // Preceeding steps. - result = result.concat(stepChildren) + if (last && "inputs" in last) { + if (Number.isInteger(branchIdx)) { + const branchId = last.inputs.branches[branchIdx].id + const children = last.inputs.children[branchId] + const stepChildren = children.slice(0, stepIdx + 1) + // Preceeding steps. + result = result.concat(stepChildren) + } } }) return result @@ -316,7 +321,7 @@ const automationActions = (store: AutomationStore) => ({ updateStep: ( pathWay: Array, automation: Automation, - update: AutomationStep | AutomationStep[], + update: AutomationStep | AutomationTrigger, insert = false ) => { let newAutomation = cloneDeep(automation) @@ -324,7 +329,7 @@ const automationActions = (store: AutomationStore) => ({ const finalise = ( dest: AutomationStep[], idx: number, - update: AutomationStep | AutomationStep[] + update: AutomationStep | AutomationTrigger ) => { dest.splice( idx, @@ -441,7 +446,7 @@ const automationActions = (store: AutomationStore) => ({ * @param {Object} automation */ traverse: (blockRefs: Record, automation: Automation) => { - let blocks: AutomationStep[] = [] + let blocks: (AutomationStep | AutomationTrigger)[] = [] if (!automation || !blockRefs) { return } @@ -451,7 +456,7 @@ const automationActions = (store: AutomationStore) => ({ blocks = blocks.concat(automation.definition.steps || []) const treeTraverse = ( - block: AutomationStep, + block: AutomationStep | AutomationTrigger, pathTo: Array | null, stepIdx: number, branchIdx: number | null, @@ -571,7 +576,7 @@ const automationActions = (store: AutomationStore) => ({ if (isLoopBlock && loopBlockCount == 0) { schema = { currentItem: { - type: "string", + type: AutomationIOType.STRING, description: "the item currently being executed", }, } @@ -588,9 +593,10 @@ const automationActions = (store: AutomationStore) => ({ pathBlock.event === AutomationEventType.ROW_UPDATE || pathBlock.event === AutomationEventType.ROW_SAVE ) { - let table = get(tables).list.find( + let table: any = get(tables).list.find( (table: Table) => table._id === pathBlock.inputs.tableId ) + for (const key in table?.schema) { schema[key] = { type: table.schema[key].type, @@ -638,8 +644,8 @@ const automationActions = (store: AutomationStore) => ({ isLoopBlock: boolean, bindingName: string | undefined, automation: Automation, - currentBlock: AutomationStep | undefined, - pathSteps: AutomationStep[] + currentBlock: AutomationStep | AutomationTrigger | undefined, + pathSteps: (AutomationStep | AutomationTrigger)[] ) => { let runtimeName: string | null @@ -710,7 +716,9 @@ const automationActions = (store: AutomationStore) => ({ bindingName?: string ) => { const field = Object.values(FIELDS).find( - field => field.type === value.type && field.subtype === value.subtype + field => + field.type === value.type && + ("subtype" in field ? field.subtype === value.subtype : true) ) return { readableBinding: @@ -735,7 +743,7 @@ const automationActions = (store: AutomationStore) => ({ data: Record ) => { // Create new modified block - let newBlock = { + let newBlock: any = { ...block, inputs: { ...block.inputs, @@ -953,8 +961,8 @@ const automationActions = (store: AutomationStore) => ({ */ generateDefaultConditions: () => { const baseConditionUI = { - logicalOperator: "all", - onEmptyFilter: "none", + logicalOperator: UILogicalOperator.ALL, + onEmptyFilter: EmptyFilterOption.RETURN_NONE, groups: [], } return { @@ -1079,12 +1087,14 @@ const automationActions = (store: AutomationStore) => ({ block: AutomationStep ) => { const update = store.actions.shiftBranch(pathTo, block) - const updatedAuto = store.actions.updateStep( - pathTo.slice(0, -1), - automation, - update - ) - await store.actions.save(updatedAuto) + if (update) { + const updatedAuto = store.actions.updateStep( + pathTo.slice(0, -1), + automation, + update + ) + await store.actions.save(updatedAuto) + } }, /** @@ -1100,12 +1110,14 @@ const automationActions = (store: AutomationStore) => ({ block: AutomationStep ) => { const update = store.actions.shiftBranch(pathTo, block, 1) - const updatedAuto = store.actions.updateStep( - pathTo.slice(0, -1), - automation, - update - ) - await store.actions.save(updatedAuto) + if (update) { + const updatedAuto = store.actions.updateStep( + pathTo.slice(0, -1), + automation, + update + ) + await store.actions.save(updatedAuto) + } }, /** @@ -1226,7 +1238,7 @@ const automationActions = (store: AutomationStore) => ({ deleteAutomationName: async (blockId: string) => { const automation = get(selectedAutomation)?.data let newAutomation = cloneDeep(automation) - if (!automation) { + if (!automation || !newAutomation) { return } if (newAutomation?.definition.stepNames) { @@ -1291,6 +1303,7 @@ const automationActions = (store: AutomationStore) => ({ const automation: Automation = { name, type: "automation", + appId: get(appStore).appId, definition: { steps: [], trigger, @@ -1381,7 +1394,7 @@ const automationActions = (store: AutomationStore) => ({ save: async (automation: Automation) => { const response = await API.updateAutomation(automation) await store.actions.fetch() - store.actions.select(response._id) + store.actions.select(response.automation._id!) return response.automation }, @@ -1438,7 +1451,7 @@ export class SelectedAutomationStore extends DerivedBudiStore< DerivedAutomationState > { constructor(automationStore: AutomationStore) { - const makeDerivedStore = (store: Writable) => { + const makeDerivedStore = () => { return derived(automationStore, $store => { if (!$store.selectedAutomationId) { return { @@ -1490,10 +1503,7 @@ export class SelectedAutomationStore extends DerivedBudiStore< }) } - // Initialize the DerivedBudiStore with automation state and derived logic super(initialAutomationState, makeDerivedStore) } } - -// Exporting an instance of the `SelectedAutomationStore` export const selectedAutomation = new SelectedAutomationStore(automationStore) diff --git a/packages/builder/src/stores/portal/licensing.js b/packages/builder/src/stores/portal/licensing.js index 72a44a8fa0..b5dd022c5c 100644 --- a/packages/builder/src/stores/portal/licensing.js +++ b/packages/builder/src/stores/portal/licensing.js @@ -22,6 +22,7 @@ export const createLicensingStore = () => { backupsEnabled: false, brandingEnabled: false, scimEnabled: false, + environmentVariablesEnabled: false, budibaseAIEnabled: false, customAIConfigsEnabled: false, auditLogsEnabled: false, diff --git a/packages/types/src/documents/app/automation/automation.ts b/packages/types/src/documents/app/automation/automation.ts index 71530c7939..55fbd26b23 100644 --- a/packages/types/src/documents/app/automation/automation.ts +++ b/packages/types/src/documents/app/automation/automation.ts @@ -148,6 +148,7 @@ export interface Automation extends Document { interface BaseIOStructure { type?: AutomationIOType + subtype?: AutomationIOType customType?: AutomationCustomIOType title?: string description?: string From de8c8f5d68ea1d31c1071dde030b054ae63c255d Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 12:09:29 +0000 Subject: [PATCH 04/52] added ui store types --- .../builder/src/stores/builder/automations.ts | 27 +++++++++++-------- .../documents/app/automation/automation.ts | 2 +- packages/types/src/ui/stores/automations.ts | 5 ++++ packages/types/src/ui/stores/index.ts | 1 + 4 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 packages/types/src/ui/stores/automations.ts diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index ce16c47668..066ace0326 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -26,6 +26,9 @@ import { UILogicalOperator, EmptyFilterOption, AutomationIOType, + AutomationStepSchema, + AutomationTriggerSchema, + BranchPath, } from "@budibase/types" import { ActionStepID } from "constants/backend/automations" import { FIELDS } from "constants/backend" @@ -165,7 +168,7 @@ const automationActions = (store: AutomationStore) => ({ * @param {*} automation the automation to alter. * @returns {Object} contains the deleted nodes and new updated automation */ - deleteBlock: (pathTo: Array, automation: Automation) => { + deleteBlock: (pathTo: Array, automation: Automation) => { let newAutomation = cloneDeep(automation) const steps = [ @@ -253,7 +256,7 @@ const automationActions = (store: AutomationStore) => ({ registerBlock: ( blocks: Record, block: AutomationStep | AutomationTrigger, - pathTo: Array, + pathTo: Array, terminating: boolean ) => { blocks[block.id] = { @@ -278,7 +281,7 @@ const automationActions = (store: AutomationStore) => ({ * @param {Array} pathWay e.g. [{stepIdx:2},{branchIdx:0, stepIdx:2},...] * @returns {Array} all steps encountered on the provided path */ - getPathSteps: (pathWay: Array, automation: Automation) => { + getPathSteps: (pathWay: Array, automation: Automation) => { // Base Steps, including trigger const steps = [ automation.definition.trigger, @@ -319,7 +322,7 @@ const automationActions = (store: AutomationStore) => ({ * @returns */ updateStep: ( - pathWay: Array, + pathWay: Array, automation: Automation, update: AutomationStep | AutomationTrigger, insert = false @@ -474,7 +477,7 @@ const automationActions = (store: AutomationStore) => ({ branches.forEach((branch, bIdx) => { block.inputs?.children[branch.id].forEach( - (bBlock: any, sIdx: any, array: any) => { + (bBlock: AutomationStep, sIdx: number, array: AutomationStep[]) => { const ended = array.length - 1 === sIdx && !bBlock.inputs?.branches?.length treeTraverse(bBlock, pathToCurrentNode, sIdx, bIdx, ended) @@ -569,7 +572,7 @@ const automationActions = (store: AutomationStore) => ({ const isLoopBlock = pathBlock.stepId === ActionStepID.LOOP && - pathBlock.blockToLoop in blocks + pathBlock.blockToLoop! in blocks const isTrigger = pathBlock.type === AutomationStepType.TRIGGER @@ -910,7 +913,10 @@ const automationActions = (store: AutomationStore) => ({ ...newAutomation.definition.steps, ] - let cache: any + let cache: + | AutomationStepSchema + | AutomationTriggerSchema + pathWay.forEach((path, pathIdx, array) => { const { stepIdx, branchIdx } = path const final = pathIdx === array.length - 1 @@ -931,7 +937,6 @@ const automationActions = (store: AutomationStore) => ({ } return } - if (Number.isInteger(branchIdx)) { const branchId = cache.inputs.branches[branchIdx].id const children = cache.inputs.children[branchId] @@ -982,7 +987,7 @@ const automationActions = (store: AutomationStore) => ({ branchAutomation: async (path: Array, automation: Automation) => { const insertPoint = path.at(-1) let newAutomation = cloneDeep(automation) - let cache: any = null + let cache: any let atRoot = false // Generate a default empty branch @@ -1105,7 +1110,7 @@ const automationActions = (store: AutomationStore) => ({ * @param {Object} block */ branchRight: async ( - pathTo: Array, + pathTo: Array, automation: Automation, block: AutomationStep ) => { @@ -1254,7 +1259,7 @@ const automationActions = (store: AutomationStore) => ({ * * @param {Array} pathTo the path to the target node */ - deleteAutomationBlock: async (pathTo: Array) => { + deleteAutomationBlock: async (pathTo: Array) => { const automation = get(selectedAutomation)?.data if (!automation) { return diff --git a/packages/types/src/documents/app/automation/automation.ts b/packages/types/src/documents/app/automation/automation.ts index 55fbd26b23..d56f0de879 100644 --- a/packages/types/src/documents/app/automation/automation.ts +++ b/packages/types/src/documents/app/automation/automation.ts @@ -193,7 +193,7 @@ export enum AutomationStoppedReason { export interface AutomationResults { automationId?: string status?: AutomationStatus - trigger?: any + trigger?: AutomationTrigger steps: { stepId: AutomationTriggerStepId | AutomationActionStepId inputs: { diff --git a/packages/types/src/ui/stores/automations.ts b/packages/types/src/ui/stores/automations.ts new file mode 100644 index 0000000000..81e669ba4a --- /dev/null +++ b/packages/types/src/ui/stores/automations.ts @@ -0,0 +1,5 @@ +export interface BranchPath { + stepIdx: number + branchIdx: number + branchStepId: string +} diff --git a/packages/types/src/ui/stores/index.ts b/packages/types/src/ui/stores/index.ts index 658691cc6d..9c58b54867 100644 --- a/packages/types/src/ui/stores/index.ts +++ b/packages/types/src/ui/stores/index.ts @@ -1 +1,2 @@ export * from "./integration" +export * from "./automations" From 9003be49b38865425d7a3fbcbcf2068ccf7dd870 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 14:34:16 +0000 Subject: [PATCH 05/52] moved definitions to types lib --- packages/types/src/ui/stores/automations.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/types/src/ui/stores/automations.ts b/packages/types/src/ui/stores/automations.ts index 81e669ba4a..60275a0f4d 100644 --- a/packages/types/src/ui/stores/automations.ts +++ b/packages/types/src/ui/stores/automations.ts @@ -3,3 +3,9 @@ export interface BranchPath { branchIdx: number branchStepId: string } + +export interface BlockDefinitions { + TRIGGER: Record + CREATABLE_TRIGGER: Record + ACTION: Record +} From cfc56277fda3f3dab3ca6bf63c96877138bb1bae Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 14:41:03 +0000 Subject: [PATCH 06/52] add types for shortid --- packages/builder/package.json | 1 + .../builder/src/stores/builder/automations.ts | 7 +- yarn.lock | 1597 +++++++++++++++-- 3 files changed, 1468 insertions(+), 137 deletions(-) diff --git a/packages/builder/package.json b/packages/builder/package.json index f2a829d5a9..71d1c32008 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -94,6 +94,7 @@ "@sveltejs/vite-plugin-svelte": "1.4.0", "@testing-library/jest-dom": "6.4.2", "@testing-library/svelte": "^4.1.0", + "@types/shortid": "^2.2.0", "babel-jest": "^29.6.2", "identity-obj-proxy": "^3.0.0", "jest": "29.7.0", diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index 066ace0326..e2af403d7f 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -29,6 +29,7 @@ import { AutomationStepSchema, AutomationTriggerSchema, BranchPath, + BlockDefinitions, } from "@budibase/types" import { ActionStepID } from "constants/backend/automations" import { FIELDS } from "constants/backend" @@ -39,12 +40,6 @@ import { QueryUtils } from "@budibase/frontend-core" import { BudiStore, DerivedBudiStore } from "stores/BudiStore" import { appStore } from "stores/builder" -interface BlockDefinitions { - TRIGGER: Record - CREATABLE_TRIGGER: Record - ACTION: Record -} - interface AutomationState { automations: Automation[] testResults: any | null diff --git a/yarn.lock b/yarn.lock index a8af49581c..6e06f7aa8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -810,7 +810,7 @@ "@azure/abort-controller" "^2.0.0" tslib "^2.6.2" -"@azure/identity@4.2.1", "@azure/identity@^4.2.1": +"@azure/identity@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.1.tgz#22b366201e989b7b41c0e1690e103bd579c31e4c" integrity sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q== @@ -924,7 +924,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/eslint-parser@7.25.9": +"@babel/eslint-parser@7.25.9", "@babel/eslint-parser@^7.22.5": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== @@ -2130,28 +2130,6 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@npm:@budibase/pro@latest": - version "3.2.28" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-3.2.28.tgz#59b5b37225715bb8fbf5b1c5c989140b10b58710" - integrity sha512-eDPeZpYFRZYQhCulcQAUwFoPk68c8+K9mIsB6QD3oMHmHTDA1P2ZcXvLNqDTIqHB94DqnWinqDf4hTuGYApgPA== - dependencies: - "@anthropic-ai/sdk" "^0.27.3" - "@budibase/backend-core" "*" - "@budibase/shared-core" "*" - "@budibase/string-templates" "*" - "@budibase/types" "*" - "@koa/router" "13.1.0" - bull "4.10.1" - dd-trace "5.26.0" - joi "17.6.0" - jsonwebtoken "9.0.2" - lru-cache "^7.14.1" - memorystream "^0.3.1" - node-fetch "2.6.7" - openai "4.59.0" - scim-patch "^0.8.1" - scim2-parse-filter "^0.2.8" - "@bull-board/api@5.10.2": version "5.10.2" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-5.10.2.tgz#ae8ff6918b23897bf879a6ead3683f964374c4b3" @@ -2371,6 +2349,28 @@ pump "^3.0.0" secure-json-parse "^2.1.0" +"@emnapi/core@^1.1.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16" + integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog== + dependencies: + "@emnapi/wasi-threads" "1.0.1" + tslib "^2.4.0" + +"@emnapi/runtime@^1.1.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" + integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b" + integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== + dependencies: + tslib "^2.4.0" + "@esbuild-plugins/tsconfig-paths@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@esbuild-plugins/tsconfig-paths/-/tsconfig-paths-0.1.2.tgz#1955de0a124ecf4364717a2fadbfbea876955232" @@ -2558,6 +2558,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + "@eslint/js@9.16.0": version "9.16.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" @@ -2575,6 +2580,11 @@ dependencies: levn "^0.4.1" +"@faker-js/faker@^9.2.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.3.0.tgz#ef398dab34c67faaa0e348318c905eae3564fa58" + integrity sha512-r0tJ3ZOkMd9xsu3VRfqlFR6cz0V/jFYRswAIpC+m/DIfAUXq7g8N7wTAlhSANySXYGKzGryfDXwtwsY8TxEIDw== + "@fastify/busboy@^2.0.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" @@ -2717,12 +2727,21 @@ debug "^4.3.1" minimatch "^3.0.5" +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.2", "@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== @@ -2764,6 +2783,11 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + "@isaacs/ttlcache@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" @@ -3437,6 +3461,83 @@ yargs "16.2.0" yargs-parser "20.2.4" +"@lerna/create@8.1.9": + version "8.1.9" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-8.1.9.tgz#6ab7b8514a9a200a4bacb7fa6cf6f01d82d3a154" + integrity sha512-DPnl5lPX4v49eVxEbJnAizrpMdMTBz1qykZrAbBul9rfgk531v8oAt+Pm6O/rpAleRombNM7FJb5rYGzBJatOQ== + dependencies: + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.11" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + execa "5.0.0" + fs-extra "^11.2.0" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + js-yaml "4.1.0" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-reduce "^2.1.0" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.4" + set-blocking "^2.0.0" + signal-exit "3.0.7" + slash "^3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + strip-ansi "^6.0.1" + strong-log-transformer "2.1.0" + tar "6.2.1" + temp-dir "1.0.0" + upath "2.0.1" + uuid "^10.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" + "@lezer/common@^1.0.0": version "1.0.2" resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087" @@ -3516,6 +3617,15 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== +"@napi-rs/wasm-runtime@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== + dependencies: + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3544,6 +3654,58 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" + integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.1" + "@npmcli/installed-package-contents" "^2.1.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^7.1.1" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.1.0" + "@npmcli/query" "^3.1.0" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + bin-links "^4.0.4" + cacache "^18.0.3" + common-ancestor-path "^1.0.1" + hosted-git-info "^7.0.2" + json-parse-even-better-errors "^3.0.2" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^7.2.1" + npm-install-checks "^6.2.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-registry-fetch "^17.0.1" + pacote "^18.0.6" + parse-conflict-json "^3.0.0" + proc-log "^4.2.0" + proggy "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.6" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + "@npmcli/fs@^2.1.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" @@ -3559,6 +3721,13 @@ dependencies: semver "^7.3.5" +"@npmcli/fs@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + "@npmcli/git@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" @@ -3573,6 +3742,21 @@ semver "^7.3.5" which "^3.0.0" +"@npmcli/git@^5.0.0": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" + integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + ini "^4.1.3" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^4.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + "@npmcli/installed-package-contents@^2.0.1": version "2.0.2" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" @@ -3581,6 +3765,35 @@ npm-bundled "^3.0.0" npm-normalize-package-bin "^3.0.0" +"@npmcli/installed-package-contents@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" + integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== + dependencies: + cacache "^18.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^18.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + "@npmcli/move-file@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" @@ -3589,11 +3802,42 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + "@npmcli/node-gyp@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== +"@npmcli/package-json@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" + integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" + integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + "@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": version "6.0.2" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" @@ -3601,6 +3845,25 @@ dependencies: which "^3.0.0" +"@npmcli/promise-spawn@^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" + integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== + dependencies: + which "^4.0.0" + +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/redact@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" + integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== + "@npmcli/run-script@6.0.2", "@npmcli/run-script@^6.0.0": version "6.0.2" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" @@ -3612,6 +3875,18 @@ read-package-json-fast "^3.0.0" which "^3.0.0" +"@npmcli/run-script@8.1.0", "@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" + integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + proc-log "^4.0.0" + which "^4.0.0" + "@nrwl/devkit@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.10.0.tgz#ac8c5b4db00f12c4b817c937be2f7c4eb8f2593c" @@ -3647,56 +3922,120 @@ tmp "~0.2.1" tslib "^2.3.0" +"@nx/devkit@>=17.1.2 < 21": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-20.2.2.tgz#fdba0dee4347e5b755566da2738411822669d48b" + integrity sha512-uqs0LVvuRRVAfFdn0ewvmr1vsNV9Ztugw36emcLJxskqhBZb10K+vzdTDAZpg5aVE2ISg1BmPidoOyk1tP+Omg== + dependencies: + ejs "^3.1.7" + enquirer "~2.3.6" + ignore "^5.0.4" + minimatch "9.0.3" + semver "^7.5.3" + tmp "~0.2.1" + tslib "^2.3.0" + yargs-parser "21.1.1" + "@nx/nx-darwin-arm64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.10.0.tgz#0c73010cac7a502549483b12bad347da9014e6f1" integrity sha512-YF+MIpeuwFkyvM5OwgY/rTNRpgVAI/YiR0yTYCZR+X3AAvP775IVlusNgQ3oedTBRUzyRnI4Tknj1WniENFsvQ== +"@nx/nx-darwin-arm64@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.2.2.tgz#6a2e7ad5f52a6ae2caf850d2ec93e2b2b430e62e" + integrity sha512-gnS5mtbaBAO5TJkl4T68rQaN/79MMWePavw2SOcFyFnIdAriGEZ+ZFDUE0B/xYJSs9CPWLaGHf+n7oqyxaGd9A== + "@nx/nx-darwin-x64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.10.0.tgz#2ccf270418d552fd0a8e0d6089aee4944315adaa" integrity sha512-ypi6YxwXgb0kg2ixKXE3pwf5myVNUgWf1CsV5OzVccCM8NzheMO51KDXTDmEpXdzUsfT0AkO1sk5GZeCjhVONg== +"@nx/nx-darwin-x64@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-20.2.2.tgz#d9c06352c7efdc6e43583f7648d13c2eea7c858a" + integrity sha512-IctvdQon+K8mlhl06zIq1xTPwf5L4OuS7crzCmK26p5F/lV6iz/UXSPCcgn+bYKOL/q3QCLNR7UasQMjzgCNkQ== + "@nx/nx-freebsd-x64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.10.0.tgz#c3ee6914256e69493fed9355b0d6661d0e86da44" integrity sha512-UeEYFDmdbbDkTQamqvtU8ibgu5jQLgFF1ruNb/U4Ywvwutw2d4ruOMl2e0u9hiNja9NFFAnDbvzrDcMo7jYqYw== +"@nx/nx-freebsd-x64@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.2.2.tgz#833947cb08c7b9c987f984277c5e26a888a3fa47" + integrity sha512-4/Blg9Y6LVU8tS8yoa2BEXPHWsorpvCuZRH0gXPh96i6b71o4ORPafyLOHp08o3WjtUZb4jl5TfDryE+8y62ZA== + "@nx/nx-linux-arm-gnueabihf@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.10.0.tgz#a961eccbb38acb2da7fc125b29d1fead0b39152f" integrity sha512-WV3XUC2DB6/+bz1sx+d1Ai9q2Cdr+kTZRN50SOkfmZUQyEBaF6DRYpx/a4ahhxH3ktpNfyY8Maa9OEYxGCBkQA== +"@nx/nx-linux-arm-gnueabihf@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.2.2.tgz#5de6efe89a99c4bebe27972b7fc4d8b6292918d8" + integrity sha512-AVAxbUXi6q+inmp8re3OV7HzH6fbkKnnMKvjDLnkzK8dA2Mv4JFl/gz++rgkYfEsBk20lcB1i3unqNrtOvzS7Q== + "@nx/nx-linux-arm64-gnu@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.10.0.tgz#795f20072549d03822b5c4639ef438e473dbb541" integrity sha512-aWIkOUw995V3ItfpAi5FuxQ+1e9EWLS1cjWM1jmeuo+5WtaKToJn5itgQOkvSlPz+HSLgM3VfXMvOFALNk125g== +"@nx/nx-linux-arm64-gnu@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.2.2.tgz#614d0563691248994463e847d1bfcb2bba541004" + integrity sha512-h04SLH464Oh/k/1mpAfsMhTVlnc1NJItx4N5DLZb2VuOOY+Tquhrp7HBJLyAhU0Q74JG0LevGFO6wdxliHupmA== + "@nx/nx-linux-arm64-musl@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.10.0.tgz#f2428ee6dbe2b2c326e8973f76c97666def33607" integrity sha512-uO6Gg+irqpVcCKMcEPIQcTFZ+tDI02AZkqkP7koQAjniLEappd8DnUBSQdcn53T086pHpdc264X/ZEpXFfrKWQ== +"@nx/nx-linux-arm64-musl@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.2.2.tgz#ff76da9f8122fe5c44b3084e929bef03f87bdacd" + integrity sha512-rnRXDLvHHj66rCslD4ShDq6KBOVsQ+X63GWTGKM0pnTIIDje9+ltZCoAByieCUm4BvFfCWMUf9y0mGfZvLVKSw== + "@nx/nx-linux-x64-gnu@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.10.0.tgz#d36c2bcf94d49eaa24e3880ddaf6f1f617de539b" integrity sha512-134PW/u/arNFAQKpqMJniC7irbChMPz+W+qtyKPAUXE0XFKPa7c1GtlI/wK2dvP9qJDZ6bKf0KtA0U/m2HMUOA== +"@nx/nx-linux-x64-gnu@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.2.2.tgz#2a78959e3d66ce8cdf95751b80a66f0a712571d3" + integrity sha512-K1Z2DVTnyCGl4nolhZ8fvHEixoe1pZOY256LD6D0lGca4Fsi3mHQ7lDU237Pzyc91+cfLva/OAvrivRPeU+DMA== + "@nx/nx-linux-x64-musl@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.10.0.tgz#78bd2ab97a583b3d4ea3387b67fd7b136907493c" integrity sha512-q8sINYLdIJxK/iUx9vRk5jWAWb/2O0PAbOJFwv4qkxBv4rLoN7y+otgCZ5v0xfx/zztFgk/oNY4lg5xYjIso2Q== +"@nx/nx-linux-x64-musl@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.2.2.tgz#beb0a368809befcb7cfd03a7e72143af284ac01b" + integrity sha512-pyWe+d2Y2pJVgPZf27KkDBufhFPq+Xhs3/zAQdJbicMvym7uhw0qMTV+lmoMXgfx52WZzhqTfG8JQcDqHjExJw== + "@nx/nx-win32-arm64-msvc@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.10.0.tgz#ef20ec8d0c83d66e73e20df12d2c788b8f866396" integrity sha512-moJkL9kcqxUdJSRpG7dET3UeLIciwrfP08mzBQ12ewo8K8FzxU8ZUsTIVVdNrwt01CXOdXoweGfdQLjJ4qTURA== +"@nx/nx-win32-arm64-msvc@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.2.2.tgz#1cd083ed8600475c90fb8e5fa3c061e7367b037b" + integrity sha512-zqSoVrV34tx6qhQo/PwD9IMGhzoNSaFQxjTjNCY61sE7iwi5Qt4dDs3Rlh1ZFCBFnrjziymRPY2RryArgeK8Bw== + "@nx/nx-win32-x64-msvc@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.10.0.tgz#7410a51d0f8be631eec9552f01b2e5946285927c" integrity sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA== +"@nx/nx-win32-x64-msvc@20.2.2": + version "20.2.2" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.2.2.tgz#74d641328c9dfb47201bcc8650fa785039e569ea" + integrity sha512-IfQf2axmCuSArhFGaocIDt8ajWDHXoVut5NOQH4eV2q9whP1j/LVB8EehEaolF5UenM7rhL4V25PXPuuBaUq4A== + "@octokit/auth-token@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" @@ -3850,6 +4189,13 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@playwright/test@^1.48.2": + version "1.49.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.49.1.tgz#55fa360658b3187bfb6371e2f8a64f50ef80c827" + integrity sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g== + dependencies: + playwright "1.49.1" + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -4165,11 +4511,40 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" + integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" + promise-retry "^2.0.1" + "@sigstore/tuf@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.0.tgz#13b69323e7bf8de458cd6c952c57acd1169772a5" @@ -4179,6 +4554,23 @@ make-fetch-happen "^11.0.1" tuf-js "^1.1.3" +"@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" + +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -5206,6 +5598,11 @@ resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + "@tufjs/models@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" @@ -5214,6 +5611,21 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" + +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/accepts@*": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" @@ -5301,6 +5713,11 @@ resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.3.tgz#d19fe9391288d60fdccd87632bfc9ab2b4523fea" integrity sha512-X6c6ghhe4/sQh4XzcZWSFaTAUOda38GQHmq9BUanYkOE/EO7ZrkazwKmtsj3xzTjkLWmwULE++23g3d3CCWaWw== +"@types/chance@^1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.6.tgz#2fe3de58742629602c3fbab468093b27207f04ad" + integrity sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ== + "@types/codemirror@^5.60.4": version "5.60.7" resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.7.tgz#efbb78e5e79f90c6762c2127c02096648e600808" @@ -5507,7 +5924,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.6": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -5686,6 +6103,13 @@ dependencies: undici-types "~6.19.2" +"@types/node@^22.9.0": + version "22.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" + integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== + dependencies: + undici-types "~6.20.0" + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -5931,6 +6355,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.7.tgz#b9eb89d7dfa70d5d1ce525bc1411a35347f533a3" integrity sha512-4g1jrL98mdOIwSOUh6LTlB0Cs9I0dQPwINUhBg7C6pN4HLr8GS8xsksJxilW6S6dQHVi2K/o+lQuQcg7LroCnw== +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + "@types/serve-static@*": version "1.15.1" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" @@ -5946,6 +6375,11 @@ dependencies: "@types/node" "*" +"@types/shortid@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/shortid/-/shortid-2.2.0.tgz#905990fc4275f77e60ab0cd9f791b91a3d4bff04" + integrity sha512-jBG2FgBxcaSf0h662YloTGA32M8UtNbnTPekUr/eCmWXq0JWQXgNEQ/P5Gf05Cv66QZtE1Ttr83I1AJBPdzCBg== + "@types/ssh2-streams@*": version "0.1.12" resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz#e68795ba2bf01c76b93f9c9809e1f42f0eaaec5f" @@ -6123,6 +6557,14 @@ "@typescript-eslint/visitor-keys" "8.17.0" debug "^4.3.4" +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/scope-manager@8.17.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz#a3f49bf3d4d27ff8d6b2ea099ba465ef4dbcaa3a" @@ -6156,6 +6598,19 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.17.0.tgz#ef84c709ef8324e766878834970bea9a7e3b72cf" integrity sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA== +"@typescript-eslint/typescript-estree@5.62.0", "@typescript-eslint/typescript-estree@^5.13.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/typescript-estree@8.17.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz#40b5903bc929b1e8dd9c77db3cb52cfb199a2a34" @@ -6183,19 +6638,6 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@^5.13.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/utils@8.17.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.17.0.tgz#41c05105a2b6ab7592f513d2eeb2c2c0236d8908" @@ -6206,6 +6648,20 @@ "@typescript-eslint/types" "8.17.0" "@typescript-eslint/typescript-estree" "8.17.0" +"@typescript-eslint/utils@^5.10.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" @@ -6357,6 +6813,14 @@ js-yaml "^3.10.0" tslib "^2.4.0" +"@yarnpkg/parsers@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" + integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + "@yr/monotone-cubic-spline@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz#7272d89f8e4f6fb7a1600c28c378cc18d3b577b9" @@ -6374,6 +6838,13 @@ dependencies: argparse "^2.0.1" +"@zkochan/js-yaml@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" + integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== + dependencies: + argparse "^2.0.1" + JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -6397,6 +6868,11 @@ abbrev@1, abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -6535,6 +7011,11 @@ agent-base@^7.0.2, agent-base@^7.1.0: dependencies: debug "^4.3.4" +agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" @@ -6687,7 +7168,7 @@ app-module-path@^2.2.0: resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== -"aproba@^1.0.3 || ^2.0.0": +aproba@2.0.0, "aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== @@ -7030,7 +7511,23 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== -axios@1.1.3, axios@1.7.7, axios@^0.21.1, axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8: +axios@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" + integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8: version "1.7.7" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== @@ -7039,6 +7536,15 @@ axios@1.1.3, axios@1.7.7, axios@^0.21.1, axios@^1.0.0, axios@^1.1.3, axios@^1.4. form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.7.4, axios@^1.7.7: + version "1.7.9" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.0.0.tgz#04a4c90dce33cc5d606c76d6216e3b250ff70dab" @@ -7261,6 +7767,16 @@ bignumber.js@^9.0.0, bignumber.js@^9.1.2: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bin-links@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -7583,6 +8099,24 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" +cacache@^18.0.0, cacache@^18.0.3: + version "18.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + cache-content-type@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" @@ -7797,6 +8331,11 @@ ci-info@^3.2.0, ci-info@^3.6.1: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +ci-info@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83" + integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A== + cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -7924,6 +8463,11 @@ cmd-shim@6.0.1: resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== +cmd-shim@6.0.3, cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + co-body@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124" @@ -7999,7 +8543,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2, color-support@^1.1.3: +color-support@1.1.3, color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -8080,6 +8624,11 @@ commander@^9.1.0, commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -8367,6 +8916,16 @@ cors@~2.8.5: object-assign "^4" vary "^1" +cosmiconfig@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + cosmiconfig@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -8453,6 +9012,13 @@ cron-validate@1.4.5: dependencies: yup "0.32.9" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@7.0.6, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" @@ -8841,6 +9407,11 @@ dedent@0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + dedent@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.3.0.tgz#15d6809eb15b581d5587a2dc208f34118e35bee3" @@ -9373,6 +9944,13 @@ dotenv-expand@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== +dotenv-expand@~11.0.6: + version "11.0.7" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== + dependencies: + dotenv "^16.4.5" + dotenv@16.0.1: version "16.0.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" @@ -9388,6 +9966,11 @@ dotenv@8.6.0, dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +dotenv@^16.4.5, dotenv@~16.4.5: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + dotenv@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" @@ -9621,11 +10204,16 @@ entities@^4.2.0, entities@^4.3.0, entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -env-paths@^2.2.0: +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envinfo@7.13.0: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + envinfo@7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -9775,6 +10363,11 @@ es6-error@^4.0.1, es6-error@^4.1.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + esbuild-node-externals@^1.14.0: version "1.14.0" resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.14.0.tgz#fc2950c67a068dc2b538fd1381ad7d8e20a6f54d" @@ -9783,6 +10376,14 @@ esbuild-node-externals@^1.14.0: find-up "^5.0.0" tslib "^2.4.1" +esbuild-node-externals@^1.15.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.16.0.tgz#803a3b1720c9ea65a11304cab23b8cc951c3c4aa" + integrity sha512-g16pp/yDFqBJ9/9D+UIWPj5uC8MPslMK62HmAXW+ZomZWJifOFTuJgado86UUiMeBrk03z2uvdS6cIGi0OTRcg== + dependencies: + find-up "^5.0.0" + tslib "^2.4.1" + esbuild@^0.18.10, esbuild@^0.18.17: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" @@ -9916,12 +10517,19 @@ eslint-plugin-jest@28.9.0: dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" +eslint-plugin-jest@^27.9.0: + version "27.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" + integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== + dependencies: + "@typescript-eslint/utils" "^5.10.0" + eslint-plugin-local-rules@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/eslint-plugin-local-rules/-/eslint-plugin-local-rules-3.0.2.tgz#84c02ea1d604ecb00970779ad27f00738ff361ae" integrity sha512-IWME7GIYHXogTkFsToLdBCQVJ0U4kbSuVyDT+nKoR4UgtnVrrVeNWuAZkdEu1nxkvi9nsPccGehEEF6dgA28IQ== -eslint-plugin-svelte@2.46.1: +eslint-plugin-svelte@2.46.1, eslint-plugin-svelte@^2.34.0: version "2.46.1" resolved "https://registry.yarnpkg.com/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz#22691c8685420cd4eabf0cbaa31a0cfb8395595b" integrity sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw== @@ -9938,7 +10546,7 @@ eslint-plugin-svelte@2.46.1: semver "^7.6.2" svelte-eslint-parser "^0.43.0" -eslint-scope@5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -10017,6 +10625,50 @@ eslint@9.16.0: natural-compare "^1.4.0" optionator "^0.9.3" +eslint@^8.52.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + eslint@^8.56.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" @@ -10243,6 +10895,11 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + express-useragent@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/express-useragent/-/express-useragent-1.0.15.tgz#cefda5fa4904345d51d3368b117a8dd4124985d9" @@ -10648,7 +11305,7 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.15.6: +follow-redirects@^1.14.0, follow-redirects@^1.15.0, follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== @@ -10759,6 +11416,13 @@ from2@^2.1.1: inherits "^2.0.1" readable-stream "^2.0.0" +front-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" + integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== + dependencies: + js-yaml "^3.13.1" + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -10773,6 +11437,15 @@ fs-extra@^11.1.0, fs-extra@^11.1.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -10802,6 +11475,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -11110,6 +11788,13 @@ git-url-parse@13.1.0: dependencies: git-up "^7.0.0" +git-url-parse@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" + integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== + dependencies: + git-up "^7.0.0" + gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" @@ -11129,7 +11814,7 @@ glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.2: +glob-parent@6.0.2, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -11160,7 +11845,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.0.0, glob@^10.2.2: +glob@^10.0.0, glob@^10.2.2, glob@^10.3.10: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -11263,10 +11948,22 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@15.13.0, globals@^11.1.0, globals@^13.19.0, globals@^14.0.0: - version "15.13.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.13.0.tgz#bbec719d69aafef188ecd67954aae76a696010fc" - integrity sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g== +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== globalthis@^1.0.1, globalthis@^1.0.4: version "1.0.4" @@ -11305,6 +12002,18 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: dependencies: minimist "^1.2.5" +google-auth-library@9.11.0: + version "9.11.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.11.0.tgz#bd6da364bcde4e0cc4ed70a0e0df5112b6a671dd" + integrity sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw== + 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" + google-auth-library@^8.0.1: version "8.9.0" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" @@ -11357,6 +12066,14 @@ google-p12-pem@^4.0.0: dependencies: node-forge "^1.3.1" +google-spreadsheet@4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/google-spreadsheet/-/google-spreadsheet-4.1.4.tgz#c52f3f65f05ba7d84b23d988e7b7100c369a0287" + integrity sha512-v6Bi7LIB/2E3+/XKmk11Qih2U0KpENSZuLSHOi8XoRDna/Tx8WYCZeEUTF60eucaELGLWC8GSepb0Cbkr3aXfg== + dependencies: + axios "^1.7.7" + lodash "^4.17.21" + "google-spreadsheet@npm:@budibase/google-spreadsheet@4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@budibase/google-spreadsheet/-/google-spreadsheet-4.1.5.tgz#c89ffcbfcb1a3538e910d9275f73efc1d7deb85f" @@ -11616,6 +12333,13 @@ hosted-git-info@^6.0.0: dependencies: lru-cache "^7.5.1" +hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + hpagent@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" @@ -11676,7 +12400,12 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.8.0" -http-cache-semantics@3.8.1, http-cache-semantics@4.1.1, http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -11788,6 +12517,11 @@ husky@^8.0.3: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== +husky@^9.1.4: + version "9.1.7" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" + integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== + ical-generator@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-4.1.0.tgz#2a336c951864c5583a2aa715d16f2edcdfd2d90b" @@ -11845,6 +12579,13 @@ ignore-walk@^6.0.0: dependencies: minimatch "^7.4.2" +ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -11867,7 +12608,7 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -11951,6 +12692,11 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.8, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ini@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== + init-package-json@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-5.0.0.tgz#030cf0ea9c84cfc1b0dc2e898b45d171393e4b40" @@ -11964,6 +12710,19 @@ init-package-json@5.0.0: validate-npm-package-license "^3.0.4" validate-npm-package-name "^5.0.0" +init-package-json@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" + integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== + dependencies: + "@npmcli/package-json" "^5.0.0" + npm-package-arg "^11.0.0" + promzard "^1.0.0" + read "^3.0.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^5.0.0" + inquirer@8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" @@ -12074,6 +12833,14 @@ ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -12127,6 +12894,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-buffer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -12549,6 +13321,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + isobject@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" @@ -12566,11 +13343,6 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isolated-vm@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/isolated-vm/-/isolated-vm-4.7.2.tgz#5670d5cce1d92004f9b825bec5b0b11fc7501b65" @@ -13170,6 +13942,11 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.14.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -13287,6 +14064,11 @@ json-parse-even-better-errors@^3.0.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== +json-parse-even-better-errors@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -13307,6 +14089,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -13385,6 +14172,16 @@ jstransform@~11.0.0: object-assign "^2.0.0" source-map "^0.4.2" +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -13455,7 +14252,22 @@ kill-port@^1.6.1: get-them-args "1.3.2" shell-exec "1.0.2" -kind-of@6.0.3, kind-of@^3.0.2, kind-of@^3.1.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kill-port@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kill-port/-/kill-port-2.0.1.tgz#e5e18e2706b13d54320938be42cb7d40609b15cf" + integrity sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ== + dependencies: + get-them-args "1.3.2" + shell-exec "1.0.2" + +kind-of@^3.0.2, kind-of@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -13793,6 +14605,93 @@ lerna@7.4.2: yargs "16.2.0" yargs-parser "20.2.4" +lerna@^8.1.9: + version "8.1.9" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.9.tgz#1233c3cfacca3b85b23c292235e246d79de3de32" + integrity sha512-ZRFlRUBB2obm+GkbTR7EbgTMuAdni6iwtTQTMy7LIrQ4UInG44LyfRepljtgUxh4HA0ltzsvWfPkd5J1DKGCeQ== + dependencies: + "@lerna/create" "8.1.9" + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.11" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-angular "7.0.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + envinfo "7.13.0" + execa "5.0.0" + fs-extra "^11.2.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + import-local "3.1.0" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + jest-diff ">=29.4.3 < 30" + js-yaml "4.1.0" + libnpmaccess "8.0.6" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + set-blocking "^2.0.0" + signal-exit "3.0.7" + slash "3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + strip-ansi "^6.0.1" + strong-log-transformer "2.1.0" + tar "6.2.1" + temp-dir "1.0.0" + typescript ">=3 < 6" + upath "2.0.1" + uuid "^10.0.0" + validate-npm-package-license "3.0.4" + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" + level-codec@9.0.2, level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -13932,6 +14831,14 @@ libnpmaccess@7.0.2: npm-package-arg "^10.1.0" npm-registry-fetch "^14.0.3" +libnpmaccess@8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" + integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== + dependencies: + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + libnpmpublish@7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.3.0.tgz#2ceb2b36866d75a6cd7b4aa748808169f4d17e37" @@ -13946,6 +14853,20 @@ libnpmpublish@7.3.0: sigstore "^1.4.0" ssri "^10.0.1" +libnpmpublish@9.0.9: + version "9.0.9" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-9.0.9.tgz#e737378c09f09738377d2a276734be35cffb85e2" + integrity sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg== + dependencies: + ci-info "^4.0.0" + normalize-package-data "^6.0.1" + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + proc-log "^4.2.0" + semver "^7.3.7" + sigstore "^2.2.0" + ssri "^10.0.6" + lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -13963,16 +14884,16 @@ limiter@1.1.5: resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== +lines-and-columns@2.0.3, lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lines-and-columns@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" - integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== - load-json-file@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" @@ -14175,7 +15096,7 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -14232,6 +15153,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.0.1, lru-cache@^10.2.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" @@ -14334,6 +15260,15 @@ magic-string@^0.30.11, magic-string@^0.30.3, magic-string@^0.30.4: dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" +mailslurp-client@^15.20.2: + version "15.20.2" + resolved "https://registry.yarnpkg.com/mailslurp-client/-/mailslurp-client-15.20.2.tgz#ff2297b40666466b07e3f314153f7e4141599cc6" + integrity sha512-7abeZ/Yw639U9r7G2F5vokvpN0mp+Ds9FAPPbcPjnMLQRiOI0HWY71lXEb2YdeVrHtsj/L4rhcg+/EbVagfGQA== + dependencies: + cross-fetch "^3.1.5" + es6-promise "^4.2.8" + url "^0.11.0" + make-dir@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -14411,6 +15346,24 @@ make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.0: socks-proxy-agent "^7.0.0" ssri "^10.0.0" +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -14598,6 +15551,13 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -14647,6 +15607,13 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + minipass-fetch@^2.0.3: version "2.1.2" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" @@ -14715,7 +15682,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== @@ -14860,7 +15827,7 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" -msgpackr@1.10.1, msgpackr@^1.5.2: +msgpackr@^1.5.2: version "1.10.1" resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== @@ -14908,7 +15875,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mute-stream@~1.0.0: +mute-stream@^1.0.0, mute-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== @@ -15053,13 +16020,27 @@ node-domexception@1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@2.6.7, node-fetch@2.6.9, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.12, node-fetch@^2.6.9: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -15085,6 +16066,22 @@ node-gyp-build@~4.1.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== +node-gyp@^10.0.0: + version "10.3.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" + integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + tar "^6.2.1" + which "^4.0.0" + node-gyp@^9.0.0: version "9.3.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" @@ -15189,6 +16186,13 @@ nopt@^6.0.0: dependencies: abbrev "^1.0.0" +nopt@^7.0.0, nopt@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -15226,6 +16230,15 @@ normalize-package-data@^5.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" +normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== + dependencies: + hosted-git-info "^7.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -15271,6 +16284,13 @@ npm-install-checks@^6.0.0: dependencies: semver "^7.1.1" +npm-install-checks@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" @@ -15281,6 +16301,16 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz#6097436adb4ef09e2628b59a7882576fe53ce485" integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== +npm-package-arg@11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" + integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-package-arg@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" @@ -15300,6 +16330,16 @@ npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: semver "^7.3.5" validate-npm-package-name "^5.0.0" +npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: + version "11.0.3" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" + integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-packlist@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" @@ -15310,6 +16350,13 @@ npm-packlist@5.1.1: npm-bundled "^1.1.2" npm-normalize-package-bin "^1.0.1" +npm-packlist@8.0.2, npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== + dependencies: + ignore-walk "^6.0.4" + npm-packlist@^7.0.0: version "7.0.4" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" @@ -15327,6 +16374,16 @@ npm-pick-manifest@^8.0.0: npm-package-arg "^10.0.0" semver "^7.3.5" +npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" + integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: version "14.0.5" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" @@ -15340,6 +16397,20 @@ npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0 npm-package-arg "^10.0.0" proc-log "^3.0.0" +npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1, npm-registry-fetch@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" + integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== + dependencies: + "@npmcli/redact" "^2.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^4.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -15450,6 +16521,56 @@ nx@16.10.0, "nx@>=16.5.1 < 17": "@nx/nx-win32-arm64-msvc" "16.10.0" "@nx/nx-win32-x64-msvc" "16.10.0" +"nx@>=17.1.2 < 21": + version "20.2.2" + resolved "https://registry.yarnpkg.com/nx/-/nx-20.2.2.tgz#ade48dc648570f747b8f75c60cd8767548188af0" + integrity sha512-wHgC/NQ82Q3LOeUZXPI2j/JhpZwb7JjRc0uDn3kQU+lN/ulySCJHTHCf4CIglW4NjZeN1WZZ7YMeddtFWETGGA== + dependencies: + "@napi-rs/wasm-runtime" "0.2.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.2" + "@zkochan/js-yaml" "0.0.7" + axios "^1.7.4" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^8.0.1" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + enquirer "~2.3.6" + figures "3.2.0" + flat "^5.0.2" + front-matter "^4.0.2" + ignore "^5.0.4" + jest-diff "^29.4.1" + jsonc-parser "3.2.0" + lines-and-columns "2.0.3" + minimatch "9.0.3" + node-machine-id "1.1.12" + npm-run-path "^4.0.1" + open "^8.4.0" + ora "5.3.0" + semver "^7.5.3" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + yaml "^2.6.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nx/nx-darwin-arm64" "20.2.2" + "@nx/nx-darwin-x64" "20.2.2" + "@nx/nx-freebsd-x64" "20.2.2" + "@nx/nx-linux-arm-gnueabihf" "20.2.2" + "@nx/nx-linux-arm64-gnu" "20.2.2" + "@nx/nx-linux-arm64-musl" "20.2.2" + "@nx/nx-linux-x64-gnu" "20.2.2" + "@nx/nx-linux-x64-musl" "20.2.2" + "@nx/nx-win32-arm64-msvc" "20.2.2" + "@nx/nx-win32-x64-msvc" "20.2.2" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -15707,6 +16828,20 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -15925,6 +17060,29 @@ pacote@^15.2.0: ssri "^10.0.0" tar "^6.1.11" +pacote@^18.0.0, pacote@^18.0.6: + version "18.0.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" + integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^8.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^17.0.0" + proc-log "^4.0.0" + promise-retry "^2.0.1" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" + pako@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -15955,6 +17113,15 @@ parse-bmfont-xml@^1.1.6: xml-parse-from-string "^1.0.0" xml2js "^0.5.0" +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + parse-headers@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" @@ -16083,7 +17250,15 @@ passport-strategy@1.x.x, passport-strategy@^1.0.0: resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== -passport@0.6.0, passport@^0.4.0, passport@^0.6.0: +passport@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" + integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + +passport@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d" integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug== @@ -16425,6 +17600,20 @@ pkg-types@^1.1.1: mlly "^1.7.1" pathe "^1.1.2" +playwright-core@1.49.1: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015" + integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg== + +playwright@1.49.1: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c" + integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA== + dependencies: + playwright-core "1.49.1" + optionalDependencies: + fsevents "2.3.2" + please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -16470,7 +17659,7 @@ postcss-scss@^4.0.9: resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== -postcss-selector-parser@^6.1.0: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.1.0: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -16944,6 +18133,11 @@ proc-log@^3.0.0: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== +proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -16964,6 +18158,21 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +proggy@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" + integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" + integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -17068,6 +18277,13 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== +psl@^1.1.28: + version "1.15.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" + psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -17091,7 +18307,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== -punycode@^1.3.2: +punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -17101,6 +18317,11 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + pupa@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" @@ -17132,6 +18353,13 @@ qs@^6.10.3, qs@^6.11.0, qs@^6.4.0: dependencies: side-channel "^1.0.6" +qs@^6.12.3: + version "6.13.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" + integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== + dependencies: + side-channel "^1.0.6" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -17240,12 +18468,12 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -read-cmd-shim@4.0.0: +read-cmd-shim@4.0.0, read-cmd-shim@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-package-json-fast@^3.0.0: +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== @@ -17306,6 +18534,13 @@ read@^2.0.0: dependencies: mute-stream "~1.0.0" +read@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" + integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== + dependencies: + mute-stream "^1.0.0" + readable-stream@1.1.14, readable-stream@^1.0.27-1: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -17932,6 +19167,11 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== +sax@>=0.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + sax@>=0.6.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -18004,13 +19244,28 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@7.5.3, semver@^5.6.0, semver@^5.7.1, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: +"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@7.5.3, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: version "7.5.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + seq-queue@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" @@ -18167,6 +19422,18 @@ sigstore@^1.3.0, sigstore@^1.4.0: make-fetch-happen "^11.0.1" tuf-js "^1.1.3" +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -18305,6 +19572,15 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" +socks-proxy-agent@^8.0.3: + version "8.0.5" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" @@ -18313,6 +19589,14 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" +socks@^2.8.3: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -18531,6 +19815,13 @@ ssri@^10.0.0, ssri@^10.0.1: dependencies: minipass "^4.0.0" +ssri@^10.0.6: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" @@ -18639,16 +19930,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -18740,7 +20022,7 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -18754,13 +20036,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" @@ -19182,7 +20457,7 @@ tar@6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -tar@6.2.1, tar@^6.1.11, tar@^6.1.2: +tar@6.2.1, tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== @@ -19250,7 +20525,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -testcontainers@10.16.0: +testcontainers@10.16.0, testcontainers@^10.7.2: version "10.16.0" resolved "https://registry.yarnpkg.com/testcontainers/-/testcontainers-10.16.0.tgz#8a7e69ada5cd2c6cce1c6db72b3a3e8e412fcaf6" integrity sha512-oxPLuOtrRWS11A+Yn0+zXB7GkmNarflWqmy6CQJk8KJ75LZs2/zlUXDpizTbPpCGtk4kE2EQYwFZjrE967F8Wg== @@ -19474,7 +20749,7 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@4.1.3, "tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.0.0, tough-cookie@^4.1.2, tough-cookie@~2.5.0: +"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.0.0, tough-cookie@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -19484,6 +20759,14 @@ tough-cookie@4.1.3, "tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.0 universalify "^0.2.0" url-parse "^1.5.3" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -19503,6 +20786,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -19622,6 +20910,15 @@ tuf-js@^1.1.3: debug "^4.3.4" make-fetch-happen "^11.1.0" +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + dependencies: + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -19856,6 +21153,11 @@ undici-types@~6.19.2, undici-types@~6.19.8: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + undici@^4.14.1: version "4.16.0" resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" @@ -19951,14 +21253,6 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unset-value@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-2.0.1.tgz#57bed0c22d26f28d69acde5df9a11b77c74d2df3" - integrity sha512-2hvrBfjUE00PkqN+q0XP6yRAOGrR06uSiUoIQGZkc7GxvQ9H7v8quUPNtZjMg4uux69i8HWpIjLPUKwCuRGyNg== - dependencies: - has-value "^2.0.2" - isobject "^4.0.0" - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" @@ -20037,6 +21331,14 @@ url@0.10.3: punycode "1.3.2" querystring "0.2.0" +url@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" + integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg== + dependencies: + punycode "^1.4.1" + qs "^6.12.3" + utf-8-validate@^5.0.2: version "5.0.10" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" @@ -20092,6 +21394,11 @@ uuid@8.3.2, uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -20136,6 +21443,11 @@ validate-npm-package-name@5.0.0, validate-npm-package-name@^5.0.0: dependencies: builtins "^5.0.0" +validate-npm-package-name@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" @@ -20271,6 +21583,11 @@ w3c-xmlserializer@^4.0.0: dependencies: xml-name-validator "^4.0.0" +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== + walkdir@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" @@ -20443,6 +21760,13 @@ which@^3.0.0: dependencies: isexe "^2.0.0" +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + why-is-node-running@^2.2.2: version "2.3.0" resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" @@ -20451,7 +21775,7 @@ why-is-node-running@^2.2.2: siginfo "^2.0.0" stackback "0.0.2" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@1.1.5, wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -20508,7 +21832,7 @@ worker-farm@1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -20526,15 +21850,6 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -20549,7 +21864,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@5.0.1: +write-file-atomic@5.0.1, write-file-atomic@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== @@ -20662,7 +21977,14 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== -xml2js@0.1.x, xml2js@0.6.2, xml2js@^0.5.0: +xml2js@0.1.x: + version "0.1.14" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" + integrity sha512-pbdws4PPPNc1HPluSUKamY4GWMk592K7qwcj6BExbVOhhubub8+pMda/ql68b6L3luZs/OGjGSB5goV7SnmgnA== + dependencies: + sax ">=0.1.1" + +xml2js@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== @@ -20670,6 +21992,14 @@ xml2js@0.1.x, xml2js@0.6.2, xml2js@^0.5.0: sax ">=0.6.0" xmlbuilder "~11.0.0" +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" @@ -20730,6 +22060,11 @@ yaml@^2.1.1, yaml@^2.2.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" + integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== + yamljs@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" @@ -20774,6 +22109,19 @@ yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@17.7.2, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yargs@^13.2.4: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -20790,19 +22138,6 @@ yargs@^13.2.4: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From ac1b56db6f69e04f0d539063070be47407bec888 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 14:54:37 +0000 Subject: [PATCH 07/52] type errors --- packages/builder/src/stores/builder/automations.ts | 11 ++++++----- packages/server/src/tests/utilities/structures.ts | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index e2af403d7f..031a261498 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -564,11 +564,12 @@ const automationActions = (store: AutomationStore) => ({ automation.definition.stepNames?.[pathBlock.id] || pathBlock.name let schema = cloneDeep(pathBlock?.schema?.outputs?.properties) ?? {} - - const isLoopBlock = - pathBlock.stepId === ActionStepID.LOOP && - pathBlock.blockToLoop! in blocks - + let isLoopBlock = false + if (pathBlock.blockToLoop) { + isLoopBlock = + pathBlock.stepId === ActionStepID.LOOP && + pathBlock.blockToLoop in blocks + } const isTrigger = pathBlock.type === AutomationStepType.TRIGGER if (isLoopBlock && loopBlockCount == 0) { diff --git a/packages/server/src/tests/utilities/structures.ts b/packages/server/src/tests/utilities/structures.ts index 33e6e407dc..3058a706c1 100644 --- a/packages/server/src/tests/utilities/structures.ts +++ b/packages/server/src/tests/utilities/structures.ts @@ -456,7 +456,7 @@ export function filterAutomation(appId: string, tableId?: string): Automation { icon: "Icon", id: "a", type: AutomationStepType.TRIGGER, - event: "row:save", + event: AutomationEventType.ROW_SAVE, stepId: AutomationTriggerStepId.ROW_SAVED, inputs: { tableId: tableId!, @@ -498,7 +498,7 @@ export function updateRowAutomationWithFilters( icon: "Icon", id: "a", type: AutomationStepType.TRIGGER, - event: "row:update", + event: AutomationEventType.ROW_UPDATE, stepId: AutomationTriggerStepId.ROW_UPDATED, inputs: { tableId }, schema: TRIGGER_DEFINITIONS.ROW_UPDATED.schema, @@ -513,7 +513,7 @@ export function basicAutomationResults( return { automationId, status: AutomationStatus.SUCCESS, - trigger: "trigger", + trigger: "trigger" as any, steps: [ { stepId: AutomationActionStepId.SERVER_LOG, From fb7d8b7125484a0110537fc5cb349c60e654af49 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 20 Dec 2024 15:15:34 +0000 Subject: [PATCH 08/52] fix lockfile --- yarn.lock | 196 ++++++++++++++---------------------------------------- 1 file changed, 50 insertions(+), 146 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6e06f7aa8b..51a2986029 100644 --- a/yarn.lock +++ b/yarn.lock @@ -810,7 +810,7 @@ "@azure/abort-controller" "^2.0.0" tslib "^2.6.2" -"@azure/identity@^4.2.1": +"@azure/identity@4.2.1", "@azure/identity@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.1.tgz#22b366201e989b7b41c0e1690e103bd579c31e4c" integrity sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q== @@ -2130,6 +2130,28 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" +"@budibase/pro@npm:@budibase/pro@latest": + version "3.2.29" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-3.2.29.tgz#298920e4854279ca4cf495d4e000134e74c3b4e2" + integrity sha512-eMArIF4qf4xHOJ3sqZnse1V5QLMJgZnVfTtdNeX9UD7Ccrc7KQHljXVttPODhYHuATmiMMR+tTZfgA0/i6U/tg== + dependencies: + "@anthropic-ai/sdk" "^0.27.3" + "@budibase/backend-core" "*" + "@budibase/shared-core" "*" + "@budibase/string-templates" "*" + "@budibase/types" "*" + "@koa/router" "13.1.0" + bull "4.10.1" + dd-trace "5.26.0" + joi "17.6.0" + jsonwebtoken "9.0.2" + lru-cache "^7.14.1" + memorystream "^0.3.1" + node-fetch "2.6.7" + openai "4.59.0" + scim-patch "^0.8.1" + scim2-parse-filter "^0.2.8" + "@bull-board/api@5.10.2": version "5.10.2" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-5.10.2.tgz#ae8ff6918b23897bf879a6ead3683f964374c4b3" @@ -7511,23 +7533,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== -axios@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8: +axios@1.1.3, axios@1.7.7, axios@^0.21.1, axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8, axios@^1.7.4, axios@^1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== @@ -7536,15 +7542,6 @@ axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.7.4, axios@^1.7.7: - version "1.7.9" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axobject-query@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.0.0.tgz#04a4c90dce33cc5d606c76d6216e3b250ff70dab" @@ -11305,7 +11302,7 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.14.0, follow-redirects@^1.15.0, follow-redirects@^1.15.6: +follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== @@ -11948,22 +11945,10 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globals@15.13.0, globals@^11.1.0, globals@^13.19.0, globals@^14.0.0: + version "15.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.13.0.tgz#bbec719d69aafef188ecd67954aae76a696010fc" + integrity sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g== globalthis@^1.0.1, globalthis@^1.0.4: version "1.0.4" @@ -12400,12 +12385,7 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.8.0" -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-cache-semantics@3.8.1, http-cache-semantics@4.1.1, http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -12894,11 +12874,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-buffer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -13343,6 +13318,11 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isolated-vm@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/isolated-vm/-/isolated-vm-4.7.2.tgz#5670d5cce1d92004f9b825bec5b0b11fc7501b65" @@ -14260,14 +14240,7 @@ kill-port@^2.0.1: get-them-args "1.3.2" shell-exec "1.0.2" -kind-of@^3.0.2, kind-of@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@6.0.3, kind-of@^3.0.2, kind-of@^3.1.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -15827,7 +15800,7 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" -msgpackr@^1.5.2: +msgpackr@1.10.1, msgpackr@^1.5.2: version "1.10.1" resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== @@ -16020,27 +15993,13 @@ node-domexception@1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@2.6.9, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" -node-fetch@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.12, node-fetch@^2.6.9: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -17250,15 +17209,7 @@ passport-strategy@1.x.x, passport-strategy@^1.0.0: resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== -passport@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" - integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - -passport@^0.6.0: +passport@0.6.0, passport@^0.4.0, passport@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d" integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug== @@ -18277,13 +18228,6 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -psl@^1.1.28: - version "1.15.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" - integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== - dependencies: - punycode "^2.3.1" - psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -18317,11 +18261,6 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - pupa@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" @@ -19167,11 +19106,6 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== -sax@>=0.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - sax@>=0.6.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -19244,28 +19178,13 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@7.5.3, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: +"semver@2 || 3 || 4 || 5", semver@7.5.3, semver@^5.6.0, semver@^5.7.1, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: version "7.5.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - seq-queue@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" @@ -20749,7 +20668,7 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.0.0, tough-cookie@^4.1.2: +tough-cookie@4.1.3, "tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0", tough-cookie@^4.0.0, tough-cookie@^4.1.2, tough-cookie@~2.5.0: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -20759,14 +20678,6 @@ touch@^3.1.0: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -21253,6 +21164,14 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +unset-value@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-2.0.1.tgz#57bed0c22d26f28d69acde5df9a11b77c74d2df3" + integrity sha512-2hvrBfjUE00PkqN+q0XP6yRAOGrR06uSiUoIQGZkc7GxvQ9H7v8quUPNtZjMg4uux69i8HWpIjLPUKwCuRGyNg== + dependencies: + has-value "^2.0.2" + isobject "^4.0.0" + untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" @@ -21977,14 +21896,7 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== -xml2js@0.1.x: - version "0.1.14" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" - integrity sha512-pbdws4PPPNc1HPluSUKamY4GWMk592K7qwcj6BExbVOhhubub8+pMda/ql68b6L3luZs/OGjGSB5goV7SnmgnA== - dependencies: - sax ">=0.1.1" - -xml2js@0.6.2: +xml2js@0.1.x, xml2js@0.6.2, xml2js@^0.5.0: version "0.6.2" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== @@ -21992,14 +21904,6 @@ xml2js@0.6.2: sax ">=0.6.0" xmlbuilder "~11.0.0" -xml2js@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" - integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" From a1569e11455fbc8a786001bf3b928901df2ebb5c Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 23 Dec 2024 09:22:59 +0000 Subject: [PATCH 09/52] updated yarn lock --- yarn.lock | 1375 +++-------------------------------------------------- 1 file changed, 58 insertions(+), 1317 deletions(-) diff --git a/yarn.lock b/yarn.lock index 51a2986029..f59f89b87c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -924,7 +924,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/eslint-parser@7.25.9", "@babel/eslint-parser@^7.22.5": +"@babel/eslint-parser@7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== @@ -2131,9 +2131,9 @@ through2 "^2.0.0" "@budibase/pro@npm:@budibase/pro@latest": - version "3.2.29" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-3.2.29.tgz#298920e4854279ca4cf495d4e000134e74c3b4e2" - integrity sha512-eMArIF4qf4xHOJ3sqZnse1V5QLMJgZnVfTtdNeX9UD7Ccrc7KQHljXVttPODhYHuATmiMMR+tTZfgA0/i6U/tg== + version "3.2.28" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-3.2.28.tgz#59b5b37225715bb8fbf5b1c5c989140b10b58710" + integrity sha512-eDPeZpYFRZYQhCulcQAUwFoPk68c8+K9mIsB6QD3oMHmHTDA1P2ZcXvLNqDTIqHB94DqnWinqDf4hTuGYApgPA== dependencies: "@anthropic-ai/sdk" "^0.27.3" "@budibase/backend-core" "*" @@ -2371,28 +2371,6 @@ pump "^3.0.0" secure-json-parse "^2.1.0" -"@emnapi/core@^1.1.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16" - integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog== - dependencies: - "@emnapi/wasi-threads" "1.0.1" - tslib "^2.4.0" - -"@emnapi/runtime@^1.1.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" - integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b" - integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== - dependencies: - tslib "^2.4.0" - "@esbuild-plugins/tsconfig-paths@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@esbuild-plugins/tsconfig-paths/-/tsconfig-paths-0.1.2.tgz#1955de0a124ecf4364717a2fadbfbea876955232" @@ -2580,11 +2558,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - "@eslint/js@9.16.0": version "9.16.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" @@ -2602,11 +2575,6 @@ dependencies: levn "^0.4.1" -"@faker-js/faker@^9.2.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.3.0.tgz#ef398dab34c67faaa0e348318c905eae3564fa58" - integrity sha512-r0tJ3ZOkMd9xsu3VRfqlFR6cz0V/jFYRswAIpC+m/DIfAUXq7g8N7wTAlhSANySXYGKzGryfDXwtwsY8TxEIDw== - "@fastify/busboy@^2.0.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" @@ -2749,21 +2717,12 @@ debug "^4.3.1" minimatch "^3.0.5" -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2", "@humanwhocodes/object-schema@^2.0.3": +"@humanwhocodes/object-schema@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== @@ -2805,11 +2764,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - "@isaacs/ttlcache@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" @@ -3483,83 +3437,6 @@ yargs "16.2.0" yargs-parser "20.2.4" -"@lerna/create@8.1.9": - version "8.1.9" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-8.1.9.tgz#6ab7b8514a9a200a4bacb7fa6cf6f01d82d3a154" - integrity sha512-DPnl5lPX4v49eVxEbJnAizrpMdMTBz1qykZrAbBul9rfgk531v8oAt+Pm6O/rpAleRombNM7FJb5rYGzBJatOQ== - dependencies: - "@npmcli/arborist" "7.5.4" - "@npmcli/package-json" "5.2.0" - "@npmcli/run-script" "8.1.0" - "@nx/devkit" ">=17.1.2 < 21" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - aproba "2.0.0" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.3" - color-support "1.1.3" - columnify "1.6.0" - console-control-strings "^1.1.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "9.0.0" - dedent "1.5.3" - execa "5.0.0" - fs-extra "^11.2.0" - get-stream "6.0.0" - git-url-parse "14.0.0" - glob-parent "6.0.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - ini "^1.3.8" - init-package-json "6.0.3" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - js-yaml "4.1.0" - libnpmpublish "9.0.9" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "11.0.2" - npm-packlist "8.0.2" - npm-registry-fetch "^17.1.0" - nx ">=17.1.2 < 21" - p-map "4.0.0" - p-map-series "2.1.0" - p-queue "6.6.2" - p-reduce "^2.1.0" - pacote "^18.0.6" - pify "5.0.0" - read-cmd-shim "4.0.0" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.4" - set-blocking "^2.0.0" - signal-exit "3.0.7" - slash "^3.0.0" - ssri "^10.0.6" - string-width "^4.2.3" - strip-ansi "^6.0.1" - strong-log-transformer "2.1.0" - tar "6.2.1" - temp-dir "1.0.0" - upath "2.0.1" - uuid "^10.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "5.0.1" - wide-align "1.1.5" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - "@lezer/common@^1.0.0": version "1.0.2" resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087" @@ -3639,15 +3516,6 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== -"@napi-rs/wasm-runtime@0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" - integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== - dependencies: - "@emnapi/core" "^1.1.0" - "@emnapi/runtime" "^1.1.0" - "@tybys/wasm-util" "^0.9.0" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3676,58 +3544,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/agent@^2.0.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" - integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== - dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.3" - -"@npmcli/arborist@7.5.4": - version "7.5.4" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" - integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/fs" "^3.1.1" - "@npmcli/installed-package-contents" "^2.1.0" - "@npmcli/map-workspaces" "^3.0.2" - "@npmcli/metavuln-calculator" "^7.1.1" - "@npmcli/name-from-folder" "^2.0.0" - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.1.0" - "@npmcli/query" "^3.1.0" - "@npmcli/redact" "^2.0.0" - "@npmcli/run-script" "^8.1.0" - bin-links "^4.0.4" - cacache "^18.0.3" - common-ancestor-path "^1.0.1" - hosted-git-info "^7.0.2" - json-parse-even-better-errors "^3.0.2" - json-stringify-nice "^1.1.4" - lru-cache "^10.2.2" - minimatch "^9.0.4" - nopt "^7.2.1" - npm-install-checks "^6.2.0" - npm-package-arg "^11.0.2" - npm-pick-manifest "^9.0.1" - npm-registry-fetch "^17.0.1" - pacote "^18.0.6" - parse-conflict-json "^3.0.0" - proc-log "^4.2.0" - proggy "^2.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^3.0.1" - read-package-json-fast "^3.0.2" - semver "^7.3.7" - ssri "^10.0.6" - treeverse "^3.0.0" - walk-up-path "^3.0.1" - "@npmcli/fs@^2.1.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" @@ -3743,13 +3559,6 @@ dependencies: semver "^7.3.5" -"@npmcli/fs@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== - dependencies: - semver "^7.3.5" - "@npmcli/git@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" @@ -3764,21 +3573,6 @@ semver "^7.3.5" which "^3.0.0" -"@npmcli/git@^5.0.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" - integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== - dependencies: - "@npmcli/promise-spawn" "^7.0.0" - ini "^4.1.3" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^4.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" - "@npmcli/installed-package-contents@^2.0.1": version "2.0.2" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" @@ -3787,35 +3581,6 @@ npm-bundled "^3.0.0" npm-normalize-package-bin "^3.0.0" -"@npmcli/installed-package-contents@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" - integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/map-workspaces@^3.0.2": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" - integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== - dependencies: - "@npmcli/name-from-folder" "^2.0.0" - glob "^10.2.2" - minimatch "^9.0.0" - read-package-json-fast "^3.0.0" - -"@npmcli/metavuln-calculator@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" - integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== - dependencies: - cacache "^18.0.0" - json-parse-even-better-errors "^3.0.0" - pacote "^18.0.0" - proc-log "^4.1.0" - semver "^7.3.5" - "@npmcli/move-file@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" @@ -3824,42 +3589,11 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@npmcli/name-from-folder@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" - integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== - "@npmcli/node-gyp@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== -"@npmcli/package-json@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" - integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" - -"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" - integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" - "@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": version "6.0.2" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" @@ -3867,25 +3601,6 @@ dependencies: which "^3.0.0" -"@npmcli/promise-spawn@^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" - integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== - dependencies: - which "^4.0.0" - -"@npmcli/query@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" - integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== - dependencies: - postcss-selector-parser "^6.0.10" - -"@npmcli/redact@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" - integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== - "@npmcli/run-script@6.0.2", "@npmcli/run-script@^6.0.0": version "6.0.2" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" @@ -3897,18 +3612,6 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@npmcli/run-script@8.1.0", "@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" - integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - proc-log "^4.0.0" - which "^4.0.0" - "@nrwl/devkit@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.10.0.tgz#ac8c5b4db00f12c4b817c937be2f7c4eb8f2593c" @@ -3944,120 +3647,56 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nx/devkit@>=17.1.2 < 21": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-20.2.2.tgz#fdba0dee4347e5b755566da2738411822669d48b" - integrity sha512-uqs0LVvuRRVAfFdn0ewvmr1vsNV9Ztugw36emcLJxskqhBZb10K+vzdTDAZpg5aVE2ISg1BmPidoOyk1tP+Omg== - dependencies: - ejs "^3.1.7" - enquirer "~2.3.6" - ignore "^5.0.4" - minimatch "9.0.3" - semver "^7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - yargs-parser "21.1.1" - "@nx/nx-darwin-arm64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.10.0.tgz#0c73010cac7a502549483b12bad347da9014e6f1" integrity sha512-YF+MIpeuwFkyvM5OwgY/rTNRpgVAI/YiR0yTYCZR+X3AAvP775IVlusNgQ3oedTBRUzyRnI4Tknj1WniENFsvQ== -"@nx/nx-darwin-arm64@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.2.2.tgz#6a2e7ad5f52a6ae2caf850d2ec93e2b2b430e62e" - integrity sha512-gnS5mtbaBAO5TJkl4T68rQaN/79MMWePavw2SOcFyFnIdAriGEZ+ZFDUE0B/xYJSs9CPWLaGHf+n7oqyxaGd9A== - "@nx/nx-darwin-x64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.10.0.tgz#2ccf270418d552fd0a8e0d6089aee4944315adaa" integrity sha512-ypi6YxwXgb0kg2ixKXE3pwf5myVNUgWf1CsV5OzVccCM8NzheMO51KDXTDmEpXdzUsfT0AkO1sk5GZeCjhVONg== -"@nx/nx-darwin-x64@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-20.2.2.tgz#d9c06352c7efdc6e43583f7648d13c2eea7c858a" - integrity sha512-IctvdQon+K8mlhl06zIq1xTPwf5L4OuS7crzCmK26p5F/lV6iz/UXSPCcgn+bYKOL/q3QCLNR7UasQMjzgCNkQ== - "@nx/nx-freebsd-x64@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.10.0.tgz#c3ee6914256e69493fed9355b0d6661d0e86da44" integrity sha512-UeEYFDmdbbDkTQamqvtU8ibgu5jQLgFF1ruNb/U4Ywvwutw2d4ruOMl2e0u9hiNja9NFFAnDbvzrDcMo7jYqYw== -"@nx/nx-freebsd-x64@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.2.2.tgz#833947cb08c7b9c987f984277c5e26a888a3fa47" - integrity sha512-4/Blg9Y6LVU8tS8yoa2BEXPHWsorpvCuZRH0gXPh96i6b71o4ORPafyLOHp08o3WjtUZb4jl5TfDryE+8y62ZA== - "@nx/nx-linux-arm-gnueabihf@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.10.0.tgz#a961eccbb38acb2da7fc125b29d1fead0b39152f" integrity sha512-WV3XUC2DB6/+bz1sx+d1Ai9q2Cdr+kTZRN50SOkfmZUQyEBaF6DRYpx/a4ahhxH3ktpNfyY8Maa9OEYxGCBkQA== -"@nx/nx-linux-arm-gnueabihf@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.2.2.tgz#5de6efe89a99c4bebe27972b7fc4d8b6292918d8" - integrity sha512-AVAxbUXi6q+inmp8re3OV7HzH6fbkKnnMKvjDLnkzK8dA2Mv4JFl/gz++rgkYfEsBk20lcB1i3unqNrtOvzS7Q== - "@nx/nx-linux-arm64-gnu@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.10.0.tgz#795f20072549d03822b5c4639ef438e473dbb541" integrity sha512-aWIkOUw995V3ItfpAi5FuxQ+1e9EWLS1cjWM1jmeuo+5WtaKToJn5itgQOkvSlPz+HSLgM3VfXMvOFALNk125g== -"@nx/nx-linux-arm64-gnu@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.2.2.tgz#614d0563691248994463e847d1bfcb2bba541004" - integrity sha512-h04SLH464Oh/k/1mpAfsMhTVlnc1NJItx4N5DLZb2VuOOY+Tquhrp7HBJLyAhU0Q74JG0LevGFO6wdxliHupmA== - "@nx/nx-linux-arm64-musl@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.10.0.tgz#f2428ee6dbe2b2c326e8973f76c97666def33607" integrity sha512-uO6Gg+irqpVcCKMcEPIQcTFZ+tDI02AZkqkP7koQAjniLEappd8DnUBSQdcn53T086pHpdc264X/ZEpXFfrKWQ== -"@nx/nx-linux-arm64-musl@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.2.2.tgz#ff76da9f8122fe5c44b3084e929bef03f87bdacd" - integrity sha512-rnRXDLvHHj66rCslD4ShDq6KBOVsQ+X63GWTGKM0pnTIIDje9+ltZCoAByieCUm4BvFfCWMUf9y0mGfZvLVKSw== - "@nx/nx-linux-x64-gnu@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.10.0.tgz#d36c2bcf94d49eaa24e3880ddaf6f1f617de539b" integrity sha512-134PW/u/arNFAQKpqMJniC7irbChMPz+W+qtyKPAUXE0XFKPa7c1GtlI/wK2dvP9qJDZ6bKf0KtA0U/m2HMUOA== -"@nx/nx-linux-x64-gnu@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.2.2.tgz#2a78959e3d66ce8cdf95751b80a66f0a712571d3" - integrity sha512-K1Z2DVTnyCGl4nolhZ8fvHEixoe1pZOY256LD6D0lGca4Fsi3mHQ7lDU237Pzyc91+cfLva/OAvrivRPeU+DMA== - "@nx/nx-linux-x64-musl@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.10.0.tgz#78bd2ab97a583b3d4ea3387b67fd7b136907493c" integrity sha512-q8sINYLdIJxK/iUx9vRk5jWAWb/2O0PAbOJFwv4qkxBv4rLoN7y+otgCZ5v0xfx/zztFgk/oNY4lg5xYjIso2Q== -"@nx/nx-linux-x64-musl@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.2.2.tgz#beb0a368809befcb7cfd03a7e72143af284ac01b" - integrity sha512-pyWe+d2Y2pJVgPZf27KkDBufhFPq+Xhs3/zAQdJbicMvym7uhw0qMTV+lmoMXgfx52WZzhqTfG8JQcDqHjExJw== - "@nx/nx-win32-arm64-msvc@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.10.0.tgz#ef20ec8d0c83d66e73e20df12d2c788b8f866396" integrity sha512-moJkL9kcqxUdJSRpG7dET3UeLIciwrfP08mzBQ12ewo8K8FzxU8ZUsTIVVdNrwt01CXOdXoweGfdQLjJ4qTURA== -"@nx/nx-win32-arm64-msvc@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.2.2.tgz#1cd083ed8600475c90fb8e5fa3c061e7367b037b" - integrity sha512-zqSoVrV34tx6qhQo/PwD9IMGhzoNSaFQxjTjNCY61sE7iwi5Qt4dDs3Rlh1ZFCBFnrjziymRPY2RryArgeK8Bw== - "@nx/nx-win32-x64-msvc@16.10.0": version "16.10.0" resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.10.0.tgz#7410a51d0f8be631eec9552f01b2e5946285927c" integrity sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA== -"@nx/nx-win32-x64-msvc@20.2.2": - version "20.2.2" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.2.2.tgz#74d641328c9dfb47201bcc8650fa785039e569ea" - integrity sha512-IfQf2axmCuSArhFGaocIDt8ajWDHXoVut5NOQH4eV2q9whP1j/LVB8EehEaolF5UenM7rhL4V25PXPuuBaUq4A== - "@octokit/auth-token@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" @@ -4211,13 +3850,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@playwright/test@^1.48.2": - version "1.49.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.49.1.tgz#55fa360658b3187bfb6371e2f8a64f50ef80c827" - integrity sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g== - dependencies: - playwright "1.49.1" - "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -4533,40 +4165,11 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sigstore/bundle@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" - integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - -"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" - integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== - "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== -"@sigstore/protobuf-specs@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" - integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== - -"@sigstore/sign@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" - integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - make-fetch-happen "^13.0.1" - proc-log "^4.2.0" - promise-retry "^2.0.1" - "@sigstore/tuf@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.0.tgz#13b69323e7bf8de458cd6c952c57acd1169772a5" @@ -4576,23 +4179,6 @@ make-fetch-happen "^11.0.1" tuf-js "^1.1.3" -"@sigstore/tuf@^2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" - integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - tuf-js "^2.2.1" - -"@sigstore/verify@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" - integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.1.0" - "@sigstore/protobuf-specs" "^0.3.2" - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -5620,11 +5206,6 @@ resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== -"@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== - "@tufjs/models@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" @@ -5633,21 +5214,6 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" -"@tufjs/models@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" - integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== - dependencies: - "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.4" - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== - dependencies: - tslib "^2.4.0" - "@types/accepts@*": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" @@ -5735,11 +5301,6 @@ resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.3.tgz#d19fe9391288d60fdccd87632bfc9ab2b4523fea" integrity sha512-X6c6ghhe4/sQh4XzcZWSFaTAUOda38GQHmq9BUanYkOE/EO7ZrkazwKmtsj3xzTjkLWmwULE++23g3d3CCWaWw== -"@types/chance@^1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.6.tgz#2fe3de58742629602c3fbab468093b27207f04ad" - integrity sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ== - "@types/codemirror@^5.60.4": version "5.60.7" resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.7.tgz#efbb78e5e79f90c6762c2127c02096648e600808" @@ -5946,7 +5507,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.6": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -6125,13 +5686,6 @@ dependencies: undici-types "~6.19.2" -"@types/node@^22.9.0": - version "22.10.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" - integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== - dependencies: - undici-types "~6.20.0" - "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -6377,11 +5931,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.7.tgz#b9eb89d7dfa70d5d1ce525bc1411a35347f533a3" integrity sha512-4g1jrL98mdOIwSOUh6LTlB0Cs9I0dQPwINUhBg7C6pN4HLr8GS8xsksJxilW6S6dQHVi2K/o+lQuQcg7LroCnw== -"@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - "@types/serve-static@*": version "1.15.1" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" @@ -6579,14 +6128,6 @@ "@typescript-eslint/visitor-keys" "8.17.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - "@typescript-eslint/scope-manager@8.17.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz#a3f49bf3d4d27ff8d6b2ea099ba465ef4dbcaa3a" @@ -6620,19 +6161,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.17.0.tgz#ef84c709ef8324e766878834970bea9a7e3b72cf" integrity sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA== -"@typescript-eslint/typescript-estree@5.62.0", "@typescript-eslint/typescript-estree@^5.13.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@8.17.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz#40b5903bc929b1e8dd9c77db3cb52cfb199a2a34" @@ -6660,6 +6188,19 @@ semver "^7.3.5" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@^5.13.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@8.17.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": version "8.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.17.0.tgz#41c05105a2b6ab7592f513d2eeb2c2c0236d8908" @@ -6670,20 +6211,6 @@ "@typescript-eslint/types" "8.17.0" "@typescript-eslint/typescript-estree" "8.17.0" -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" @@ -6835,14 +6362,6 @@ js-yaml "^3.10.0" tslib "^2.4.0" -"@yarnpkg/parsers@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" - integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - "@yr/monotone-cubic-spline@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz#7272d89f8e4f6fb7a1600c28c378cc18d3b577b9" @@ -6860,13 +6379,6 @@ dependencies: argparse "^2.0.1" -"@zkochan/js-yaml@0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" - integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== - dependencies: - argparse "^2.0.1" - JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -6890,11 +6402,6 @@ abbrev@1, abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -7033,11 +6540,6 @@ agent-base@^7.0.2, agent-base@^7.1.0: dependencies: debug "^4.3.4" -agent-base@^7.1.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" - integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== - agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" @@ -7190,7 +6692,7 @@ app-module-path@^2.2.0: resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== -aproba@2.0.0, "aproba@^1.0.3 || ^2.0.0": +"aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== @@ -7533,7 +7035,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== -axios@1.1.3, axios@1.7.7, axios@^0.21.1, axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8, axios@^1.7.4, axios@^1.7.7: +axios@1.1.3, axios@1.7.7, axios@^0.21.1, axios@^1.0.0, axios@^1.1.3, axios@^1.4.0, axios@^1.6.2, axios@^1.6.8: version "1.7.7" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== @@ -7764,16 +7266,6 @@ bignumber.js@^9.0.0, bignumber.js@^9.1.2: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== -bin-links@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" - integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== - dependencies: - cmd-shim "^6.0.0" - npm-normalize-package-bin "^3.0.0" - read-cmd-shim "^4.0.0" - write-file-atomic "^5.0.0" - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -8096,24 +7588,6 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" -cacache@^18.0.0, cacache@^18.0.3: - version "18.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" - integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^2.0.1" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - cache-content-type@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" @@ -8328,11 +7802,6 @@ ci-info@^3.2.0, ci-info@^3.6.1: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -ci-info@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83" - integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A== - cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -8460,11 +7929,6 @@ cmd-shim@6.0.1: resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== -cmd-shim@6.0.3, cmd-shim@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" - integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== - co-body@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124" @@ -8540,7 +8004,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@1.1.3, color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -8621,11 +8085,6 @@ commander@^9.1.0, commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -8913,16 +8372,6 @@ cors@~2.8.5: object-assign "^4" vary "^1" -cosmiconfig@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - cosmiconfig@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -9009,13 +8458,6 @@ cron-validate@1.4.5: dependencies: yup "0.32.9" -cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - cross-spawn@7.0.6, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" @@ -9404,11 +8846,6 @@ dedent@0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -dedent@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - dedent@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.3.0.tgz#15d6809eb15b581d5587a2dc208f34118e35bee3" @@ -9941,13 +9378,6 @@ dotenv-expand@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== -dotenv-expand@~11.0.6: - version "11.0.7" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" - integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== - dependencies: - dotenv "^16.4.5" - dotenv@16.0.1: version "16.0.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" @@ -9963,11 +9393,6 @@ dotenv@8.6.0, dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -dotenv@^16.4.5, dotenv@~16.4.5: - version "16.4.7" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - dotenv@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" @@ -10201,16 +9626,11 @@ entities@^4.2.0, entities@^4.3.0, entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -env-paths@^2.2.0, env-paths@^2.2.1: +env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@7.13.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== - envinfo@7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -10360,11 +9780,6 @@ es6-error@^4.0.1, es6-error@^4.1.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-promise@^4.2.8: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - esbuild-node-externals@^1.14.0: version "1.14.0" resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.14.0.tgz#fc2950c67a068dc2b538fd1381ad7d8e20a6f54d" @@ -10373,14 +9788,6 @@ esbuild-node-externals@^1.14.0: find-up "^5.0.0" tslib "^2.4.1" -esbuild-node-externals@^1.15.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.16.0.tgz#803a3b1720c9ea65a11304cab23b8cc951c3c4aa" - integrity sha512-g16pp/yDFqBJ9/9D+UIWPj5uC8MPslMK62HmAXW+ZomZWJifOFTuJgado86UUiMeBrk03z2uvdS6cIGi0OTRcg== - dependencies: - find-up "^5.0.0" - tslib "^2.4.1" - esbuild@^0.18.10, esbuild@^0.18.17: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" @@ -10514,19 +9921,12 @@ eslint-plugin-jest@28.9.0: dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" -eslint-plugin-jest@^27.9.0: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - eslint-plugin-local-rules@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/eslint-plugin-local-rules/-/eslint-plugin-local-rules-3.0.2.tgz#84c02ea1d604ecb00970779ad27f00738ff361ae" integrity sha512-IWME7GIYHXogTkFsToLdBCQVJ0U4kbSuVyDT+nKoR4UgtnVrrVeNWuAZkdEu1nxkvi9nsPccGehEEF6dgA28IQ== -eslint-plugin-svelte@2.46.1, eslint-plugin-svelte@^2.34.0: +eslint-plugin-svelte@2.46.1: version "2.46.1" resolved "https://registry.yarnpkg.com/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz#22691c8685420cd4eabf0cbaa31a0cfb8395595b" integrity sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw== @@ -10543,7 +9943,7 @@ eslint-plugin-svelte@2.46.1, eslint-plugin-svelte@^2.34.0: semver "^7.6.2" svelte-eslint-parser "^0.43.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -10622,50 +10022,6 @@ eslint@9.16.0: natural-compare "^1.4.0" optionator "^0.9.3" -eslint@^8.52.0: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - eslint@^8.56.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" @@ -10892,11 +10248,6 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -exponential-backoff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" - integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== - express-useragent@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/express-useragent/-/express-useragent-1.0.15.tgz#cefda5fa4904345d51d3368b117a8dd4124985d9" @@ -11413,13 +10764,6 @@ from2@^2.1.1: inherits "^2.0.1" readable-stream "^2.0.0" -front-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" - integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== - dependencies: - js-yaml "^3.13.1" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -11434,15 +10778,6 @@ fs-extra@^11.1.0, fs-extra@^11.1.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -11472,11 +10807,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -11785,13 +11115,6 @@ git-url-parse@13.1.0: dependencies: git-up "^7.0.0" -git-url-parse@14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" - integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== - dependencies: - git-up "^7.0.0" - gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" @@ -11811,7 +11134,7 @@ glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@6.0.2, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -11842,7 +11165,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.0.0, glob@^10.2.2, glob@^10.3.10: +glob@^10.0.0, glob@^10.2.2: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -11987,18 +11310,6 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: dependencies: minimist "^1.2.5" -google-auth-library@9.11.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.11.0.tgz#bd6da364bcde4e0cc4ed70a0e0df5112b6a671dd" - integrity sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw== - 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" - google-auth-library@^8.0.1: version "8.9.0" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" @@ -12051,14 +11362,6 @@ google-p12-pem@^4.0.0: dependencies: node-forge "^1.3.1" -google-spreadsheet@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/google-spreadsheet/-/google-spreadsheet-4.1.4.tgz#c52f3f65f05ba7d84b23d988e7b7100c369a0287" - integrity sha512-v6Bi7LIB/2E3+/XKmk11Qih2U0KpENSZuLSHOi8XoRDna/Tx8WYCZeEUTF60eucaELGLWC8GSepb0Cbkr3aXfg== - dependencies: - axios "^1.7.7" - lodash "^4.17.21" - "google-spreadsheet@npm:@budibase/google-spreadsheet@4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@budibase/google-spreadsheet/-/google-spreadsheet-4.1.5.tgz#c89ffcbfcb1a3538e910d9275f73efc1d7deb85f" @@ -12318,13 +11621,6 @@ hosted-git-info@^6.0.0: dependencies: lru-cache "^7.5.1" -hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - hpagent@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" @@ -12497,11 +11793,6 @@ husky@^8.0.3: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -husky@^9.1.4: - version "9.1.7" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" - integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== - ical-generator@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-4.1.0.tgz#2a336c951864c5583a2aa715d16f2edcdfd2d90b" @@ -12559,13 +11850,6 @@ ignore-walk@^6.0.0: dependencies: minimatch "^7.4.2" -ignore-walk@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" - integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== - dependencies: - minimatch "^9.0.0" - ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -12588,7 +11872,7 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -12672,11 +11956,6 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.8, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ini@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" - integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== - init-package-json@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-5.0.0.tgz#030cf0ea9c84cfc1b0dc2e898b45d171393e4b40" @@ -12690,19 +11969,6 @@ init-package-json@5.0.0: validate-npm-package-license "^3.0.4" validate-npm-package-name "^5.0.0" -init-package-json@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" - integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== - dependencies: - "@npmcli/package-json" "^5.0.0" - npm-package-arg "^11.0.0" - promzard "^1.0.0" - read "^3.0.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^5.0.0" - inquirer@8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" @@ -12813,14 +12079,6 @@ ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -13296,11 +12554,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - isobject@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" @@ -13922,11 +13175,6 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.14.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -14044,11 +13292,6 @@ json-parse-even-better-errors@^3.0.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== -json-parse-even-better-errors@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" - integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -14069,11 +13312,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -14152,16 +13390,6 @@ jstransform@~11.0.0: object-assign "^2.0.0" source-map "^0.4.2" -just-diff-apply@^5.2.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" - integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== - -just-diff@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" - integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== - jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -14232,14 +13460,6 @@ kill-port@^1.6.1: get-them-args "1.3.2" shell-exec "1.0.2" -kill-port@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kill-port/-/kill-port-2.0.1.tgz#e5e18e2706b13d54320938be42cb7d40609b15cf" - integrity sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ== - dependencies: - get-them-args "1.3.2" - shell-exec "1.0.2" - kind-of@6.0.3, kind-of@^3.0.2, kind-of@^3.1.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -14578,93 +13798,6 @@ lerna@7.4.2: yargs "16.2.0" yargs-parser "20.2.4" -lerna@^8.1.9: - version "8.1.9" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.9.tgz#1233c3cfacca3b85b23c292235e246d79de3de32" - integrity sha512-ZRFlRUBB2obm+GkbTR7EbgTMuAdni6iwtTQTMy7LIrQ4UInG44LyfRepljtgUxh4HA0ltzsvWfPkd5J1DKGCeQ== - dependencies: - "@lerna/create" "8.1.9" - "@npmcli/arborist" "7.5.4" - "@npmcli/package-json" "5.2.0" - "@npmcli/run-script" "8.1.0" - "@nx/devkit" ">=17.1.2 < 21" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - aproba "2.0.0" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.3" - color-support "1.1.3" - columnify "1.6.0" - console-control-strings "^1.1.0" - conventional-changelog-angular "7.0.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "9.0.0" - dedent "1.5.3" - envinfo "7.13.0" - execa "5.0.0" - fs-extra "^11.2.0" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "14.0.0" - glob-parent "6.0.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - import-local "3.1.0" - ini "^1.3.8" - init-package-json "6.0.3" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - jest-diff ">=29.4.3 < 30" - js-yaml "4.1.0" - libnpmaccess "8.0.6" - libnpmpublish "9.0.9" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "11.0.2" - npm-packlist "8.0.2" - npm-registry-fetch "^17.1.0" - nx ">=17.1.2 < 21" - p-map "4.0.0" - p-map-series "2.1.0" - p-pipe "3.1.0" - p-queue "6.6.2" - p-reduce "2.1.0" - p-waterfall "2.1.1" - pacote "^18.0.6" - pify "5.0.0" - read-cmd-shim "4.0.0" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.8" - set-blocking "^2.0.0" - signal-exit "3.0.7" - slash "3.0.0" - ssri "^10.0.6" - string-width "^4.2.3" - strip-ansi "^6.0.1" - strong-log-transformer "2.1.0" - tar "6.2.1" - temp-dir "1.0.0" - typescript ">=3 < 6" - upath "2.0.1" - uuid "^10.0.0" - validate-npm-package-license "3.0.4" - validate-npm-package-name "5.0.1" - wide-align "1.1.5" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - level-codec@9.0.2, level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -14804,14 +13937,6 @@ libnpmaccess@7.0.2: npm-package-arg "^10.1.0" npm-registry-fetch "^14.0.3" -libnpmaccess@8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" - integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== - dependencies: - npm-package-arg "^11.0.2" - npm-registry-fetch "^17.0.1" - libnpmpublish@7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.3.0.tgz#2ceb2b36866d75a6cd7b4aa748808169f4d17e37" @@ -14826,20 +13951,6 @@ libnpmpublish@7.3.0: sigstore "^1.4.0" ssri "^10.0.1" -libnpmpublish@9.0.9: - version "9.0.9" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-9.0.9.tgz#e737378c09f09738377d2a276734be35cffb85e2" - integrity sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg== - dependencies: - ci-info "^4.0.0" - normalize-package-data "^6.0.1" - npm-package-arg "^11.0.2" - npm-registry-fetch "^17.0.1" - proc-log "^4.2.0" - semver "^7.3.7" - sigstore "^2.2.0" - ssri "^10.0.6" - lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -14857,16 +13968,16 @@ limiter@1.1.5: resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== -lines-and-columns@2.0.3, lines-and-columns@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" - integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== - lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + load-json-file@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" @@ -15069,7 +14180,7 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -log-symbols@^4.0.0, log-symbols@^4.1.0: +log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -15126,11 +14237,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^10.0.1, lru-cache@^10.2.2: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - lru-cache@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" @@ -15233,15 +14339,6 @@ magic-string@^0.30.11, magic-string@^0.30.3, magic-string@^0.30.4: dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" -mailslurp-client@^15.20.2: - version "15.20.2" - resolved "https://registry.yarnpkg.com/mailslurp-client/-/mailslurp-client-15.20.2.tgz#ff2297b40666466b07e3f314153f7e4141599cc6" - integrity sha512-7abeZ/Yw639U9r7G2F5vokvpN0mp+Ds9FAPPbcPjnMLQRiOI0HWY71lXEb2YdeVrHtsj/L4rhcg+/EbVagfGQA== - dependencies: - cross-fetch "^3.1.5" - es6-promise "^4.2.8" - url "^0.11.0" - make-dir@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -15319,24 +14416,6 @@ make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.0: socks-proxy-agent "^7.0.0" ssri "^10.0.0" -make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" - integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== - dependencies: - "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - proc-log "^4.2.0" - promise-retry "^2.0.1" - ssri "^10.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -15524,13 +14603,6 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -15580,13 +14652,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-collect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" - integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== - dependencies: - minipass "^7.0.3" - minipass-fetch@^2.0.3: version "2.1.2" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" @@ -15655,7 +14720,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== @@ -15848,7 +14913,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mute-stream@^1.0.0, mute-stream@~1.0.0: +mute-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== @@ -15993,7 +15058,7 @@ node-domexception@1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@2.6.7, node-fetch@2.6.9, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@2.6.7, node-fetch@2.6.9, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -16025,22 +15090,6 @@ node-gyp-build@~4.1.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== -node-gyp@^10.0.0: - version "10.3.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" - integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^10.3.10" - graceful-fs "^4.2.6" - make-fetch-happen "^13.0.0" - nopt "^7.0.0" - proc-log "^4.1.0" - semver "^7.3.5" - tar "^6.2.1" - which "^4.0.0" - node-gyp@^9.0.0: version "9.3.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" @@ -16145,13 +15194,6 @@ nopt@^6.0.0: dependencies: abbrev "^1.0.0" -nopt@^7.0.0, nopt@^7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" - integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== - dependencies: - abbrev "^2.0.0" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -16189,15 +15231,6 @@ normalize-package-data@^5.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" - integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== - dependencies: - hosted-git-info "^7.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -16243,13 +15276,6 @@ npm-install-checks@^6.0.0: dependencies: semver "^7.1.1" -npm-install-checks@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" @@ -16260,16 +15286,6 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz#6097436adb4ef09e2628b59a7882576fe53ce485" integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== -npm-package-arg@11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" - integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - npm-package-arg@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" @@ -16289,16 +15305,6 @@ npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: semver "^7.3.5" validate-npm-package-name "^5.0.0" -npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: - version "11.0.3" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" - integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - npm-packlist@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" @@ -16309,13 +15315,6 @@ npm-packlist@5.1.1: npm-bundled "^1.1.2" npm-normalize-package-bin "^1.0.1" -npm-packlist@8.0.2, npm-packlist@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" - integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== - dependencies: - ignore-walk "^6.0.4" - npm-packlist@^7.0.0: version "7.0.4" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" @@ -16333,16 +15332,6 @@ npm-pick-manifest@^8.0.0: npm-package-arg "^10.0.0" semver "^7.3.5" -npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" - integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: version "14.0.5" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" @@ -16356,20 +15345,6 @@ npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0 npm-package-arg "^10.0.0" proc-log "^3.0.0" -npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1, npm-registry-fetch@^17.1.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" - integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== - dependencies: - "@npmcli/redact" "^2.0.0" - jsonparse "^1.3.1" - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^4.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -16480,56 +15455,6 @@ nx@16.10.0, "nx@>=16.5.1 < 17": "@nx/nx-win32-arm64-msvc" "16.10.0" "@nx/nx-win32-x64-msvc" "16.10.0" -"nx@>=17.1.2 < 21": - version "20.2.2" - resolved "https://registry.yarnpkg.com/nx/-/nx-20.2.2.tgz#ade48dc648570f747b8f75c60cd8767548188af0" - integrity sha512-wHgC/NQ82Q3LOeUZXPI2j/JhpZwb7JjRc0uDn3kQU+lN/ulySCJHTHCf4CIglW4NjZeN1WZZ7YMeddtFWETGGA== - dependencies: - "@napi-rs/wasm-runtime" "0.2.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "3.0.2" - "@zkochan/js-yaml" "0.0.7" - axios "^1.7.4" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.4.5" - dotenv-expand "~11.0.6" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - front-matter "^4.0.2" - ignore "^5.0.4" - jest-diff "^29.4.1" - jsonc-parser "3.2.0" - lines-and-columns "2.0.3" - minimatch "9.0.3" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - ora "5.3.0" - semver "^7.5.3" - string-width "^4.2.3" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - yaml "^2.6.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "20.2.2" - "@nx/nx-darwin-x64" "20.2.2" - "@nx/nx-freebsd-x64" "20.2.2" - "@nx/nx-linux-arm-gnueabihf" "20.2.2" - "@nx/nx-linux-arm64-gnu" "20.2.2" - "@nx/nx-linux-arm64-musl" "20.2.2" - "@nx/nx-linux-x64-gnu" "20.2.2" - "@nx/nx-linux-x64-musl" "20.2.2" - "@nx/nx-win32-arm64-msvc" "20.2.2" - "@nx/nx-win32-x64-msvc" "20.2.2" - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -16787,20 +15712,6 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -ora@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -17019,29 +15930,6 @@ pacote@^15.2.0: ssri "^10.0.0" tar "^6.1.11" -pacote@^18.0.0, pacote@^18.0.6: - version "18.0.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" - integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== - dependencies: - "@npmcli/git" "^5.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/package-json" "^5.1.0" - "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^8.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^17.0.0" - proc-log "^4.0.0" - promise-retry "^2.0.1" - sigstore "^2.2.0" - ssri "^10.0.0" - tar "^6.1.11" - pako@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -17072,15 +15960,6 @@ parse-bmfont-xml@^1.1.6: xml-parse-from-string "^1.0.0" xml2js "^0.5.0" -parse-conflict-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" - integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== - dependencies: - json-parse-even-better-errors "^3.0.0" - just-diff "^6.0.0" - just-diff-apply "^5.2.0" - parse-headers@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" @@ -17551,20 +16430,6 @@ pkg-types@^1.1.1: mlly "^1.7.1" pathe "^1.1.2" -playwright-core@1.49.1: - version "1.49.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015" - integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg== - -playwright@1.49.1: - version "1.49.1" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c" - integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA== - dependencies: - playwright-core "1.49.1" - optionalDependencies: - fsevents "2.3.2" - please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -17610,7 +16475,7 @@ postcss-scss@^4.0.9: resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.1.0: +postcss-selector-parser@^6.1.0: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -18084,11 +16949,6 @@ proc-log@^3.0.0: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== -proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" - integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -18109,21 +16969,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -proggy@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" - integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== - -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" - integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -18251,7 +17096,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== -punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -18292,13 +17137,6 @@ qs@^6.10.3, qs@^6.11.0, qs@^6.4.0: dependencies: side-channel "^1.0.6" -qs@^6.12.3: - version "6.13.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" - integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== - dependencies: - side-channel "^1.0.6" - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -18407,12 +17245,12 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -read-cmd-shim@4.0.0, read-cmd-shim@^4.0.0: +read-cmd-shim@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: +read-package-json-fast@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== @@ -18473,13 +17311,6 @@ read@^2.0.0: dependencies: mute-stream "~1.0.0" -read@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" - integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== - dependencies: - mute-stream "^1.0.0" - readable-stream@1.1.14, readable-stream@^1.0.27-1: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -19341,18 +18172,6 @@ sigstore@^1.3.0, sigstore@^1.4.0: make-fetch-happen "^11.0.1" tuf-js "^1.1.3" -sigstore@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" - integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - "@sigstore/sign" "^2.3.2" - "@sigstore/tuf" "^2.3.4" - "@sigstore/verify" "^1.2.1" - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -19491,15 +18310,6 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks-proxy-agent@^8.0.3: - version "8.0.5" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" - integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== - dependencies: - agent-base "^7.1.2" - debug "^4.3.4" - socks "^2.8.3" - socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" @@ -19508,14 +18318,6 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -socks@^2.8.3: - version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" - integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -19734,13 +18536,6 @@ ssri@^10.0.0, ssri@^10.0.1: dependencies: minipass "^4.0.0" -ssri@^10.0.6: - version "10.0.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" @@ -20376,7 +19171,7 @@ tar@6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -tar@6.2.1, tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: +tar@6.2.1, tar@^6.1.11, tar@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== @@ -20444,7 +19239,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -testcontainers@10.16.0, testcontainers@^10.7.2: +testcontainers@10.16.0: version "10.16.0" resolved "https://registry.yarnpkg.com/testcontainers/-/testcontainers-10.16.0.tgz#8a7e69ada5cd2c6cce1c6db72b3a3e8e412fcaf6" integrity sha512-oxPLuOtrRWS11A+Yn0+zXB7GkmNarflWqmy6CQJk8KJ75LZs2/zlUXDpizTbPpCGtk4kE2EQYwFZjrE967F8Wg== @@ -20697,11 +19492,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -treeverse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" - integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -20821,15 +19611,6 @@ tuf-js@^1.1.3: debug "^4.3.4" make-fetch-happen "^11.1.0" -tuf-js@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" - integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== - dependencies: - "@tufjs/models" "2.0.1" - debug "^4.3.4" - make-fetch-happen "^13.0.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -21064,11 +19845,6 @@ undici-types@~6.19.2, undici-types@~6.19.8: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - undici@^4.14.1: version "4.16.0" resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" @@ -21250,14 +20026,6 @@ url@0.10.3: punycode "1.3.2" querystring "0.2.0" -url@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" - integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg== - dependencies: - punycode "^1.4.1" - qs "^6.12.3" - utf-8-validate@^5.0.2: version "5.0.10" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" @@ -21313,11 +20081,6 @@ uuid@8.3.2, uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -21362,11 +20125,6 @@ validate-npm-package-name@5.0.0, validate-npm-package-name@^5.0.0: dependencies: builtins "^5.0.0" -validate-npm-package-name@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" @@ -21502,11 +20260,6 @@ w3c-xmlserializer@^4.0.0: dependencies: xml-name-validator "^4.0.0" -walk-up-path@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" - integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== - walkdir@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" @@ -21679,13 +20432,6 @@ which@^3.0.0: dependencies: isexe "^2.0.0" -which@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - why-is-node-running@^2.2.2: version "2.3.0" resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" @@ -21694,7 +20440,7 @@ why-is-node-running@^2.2.2: siginfo "^2.0.0" stackback "0.0.2" -wide-align@1.1.5, wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -21783,7 +20529,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@5.0.1, write-file-atomic@^5.0.0: +write-file-atomic@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== @@ -21964,11 +20710,6 @@ yaml@^2.1.1, yaml@^2.2.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== -yaml@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" - integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== - yamljs@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" @@ -22013,19 +20754,6 @@ yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.7.2, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yargs@^13.2.4: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -22042,6 +20770,19 @@ yargs@^13.2.4: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 633ce95dd0c44813ede0b85ff7626c5a2cbc9ad5 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 09:50:43 +0100 Subject: [PATCH 10/52] Fix IDE errors in frontend-core --- packages/frontend-core/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend-core/tsconfig.json b/packages/frontend-core/tsconfig.json index 3900034413..5d7552f42b 100644 --- a/packages/frontend-core/tsconfig.json +++ b/packages/frontend-core/tsconfig.json @@ -1,6 +1,8 @@ { + "extends": "../../tsconfig.build.json", "compilerOptions": { "target": "ESNext", + "module": "preserve", "moduleResolution": "bundler", "skipLibCheck": true, "paths": { From f417f7f6705c6335aa8504bb4836283c90f1483a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 09:59:17 +0100 Subject: [PATCH 11/52] Allowjs --- packages/frontend-core/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend-core/tsconfig.json b/packages/frontend-core/tsconfig.json index 5d7552f42b..6ea7b8937e 100644 --- a/packages/frontend-core/tsconfig.json +++ b/packages/frontend-core/tsconfig.json @@ -4,7 +4,9 @@ "target": "ESNext", "module": "preserve", "moduleResolution": "bundler", + "outDir": "./dist", "skipLibCheck": true, + "allowJs": true, "paths": { "@budibase/types": ["../types/src"], "@budibase/shared-core": ["../shared-core/src"], From 37a8ae2d9838f40517a661c1356734a4c30c71ff Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 10:01:35 +0100 Subject: [PATCH 12/52] Fix paths --- packages/frontend-core/tsconfig.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/frontend-core/tsconfig.json b/packages/frontend-core/tsconfig.json index 6ea7b8937e..8ffb3f19be 100644 --- a/packages/frontend-core/tsconfig.json +++ b/packages/frontend-core/tsconfig.json @@ -6,12 +6,7 @@ "moduleResolution": "bundler", "outDir": "./dist", "skipLibCheck": true, - "allowJs": true, - "paths": { - "@budibase/types": ["../types/src"], - "@budibase/shared-core": ["../shared-core/src"], - "@budibase/bbui": ["../bbui/src"] - } + "allowJs": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] From 8265fc8ab58e3b67ed834de938beaba095951eba Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 10:08:20 +0100 Subject: [PATCH 13/52] Add frontend-core check:types --- packages/frontend-core/package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 8377b13ea2..b1f311183a 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -5,6 +5,9 @@ "author": "Budibase", "license": "MPL-2.0", "svelte": "./src/index.ts", + "scripts": { + "check:types": "yarn svelte-check" + }, "dependencies": { "@budibase/bbui": "*", "@budibase/shared-core": "*", @@ -13,5 +16,8 @@ "lodash": "4.17.21", "shortid": "2.2.15", "socket.io-client": "^4.7.5" + }, + "devDependencies": { + "svelte-check": "^4.1.0" } } From 90b663912585f11f02a2394c1e4b7f28c1b09cde Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 09:33:55 +0100 Subject: [PATCH 14/52] Extract action interface --- .../grid/stores/datasources/index.ts | 19 +++++++++++++++++++ .../grid/stores/datasources/nonPlus.ts | 11 ++--------- .../grid/stores/datasources/table.ts | 12 ++---------- .../grid/stores/datasources/viewV2.ts | 11 ++--------- 4 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 packages/frontend-core/src/components/grid/stores/datasources/index.ts diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts new file mode 100644 index 0000000000..1d1a2103b1 --- /dev/null +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -0,0 +1,19 @@ +import { + Row, + SaveRowRequest, + SaveTableRequest, + UIDatasource, + UpdateViewRequest, +} from "@budibase/types" + +export interface DatasourceActions< + TSaveDefinitionRequest = UpdateViewRequest | SaveTableRequest +> { + saveDefinition: (newDefinition: TSaveDefinitionRequest) => Promise + addRow: (row: SaveRowRequest) => Promise + updateRow: (row: SaveRowRequest) => Promise + deleteRows: (rows: (string | Row)[]) => Promise + getRow: (id: string) => Promise + isDatasourceValid: (datasource: UIDatasource) => boolean + canUseColumn: (name: string) => boolean +} diff --git a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts index dcc4d47076..2ea5a05a0e 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts @@ -1,18 +1,11 @@ import { SortOrder, UIDatasource } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." +import { DatasourceActions } from "." interface NonPlusActions { nonPlus: { - actions: { - saveDefinition: () => Promise - addRow: () => Promise - updateRow: () => Promise - deleteRows: () => Promise - getRow: () => Promise - isDatasourceValid: (datasource: UIDatasource) => boolean - canUseColumn: (name: string) => boolean - } + actions: DatasourceActions } } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/table.ts b/packages/frontend-core/src/components/grid/stores/datasources/table.ts index e905c89e44..9f1a490306 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/table.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/table.ts @@ -1,27 +1,19 @@ import { Row, SaveRowRequest, - SaveRowResponse, SaveTableRequest, SortOrder, UIDatasource, } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." +import { DatasourceActions } from "." const SuppressErrors = true interface TableActions { table: { - actions: { - saveDefinition: (newDefinition: SaveTableRequest) => Promise - addRow: (row: SaveRowRequest) => Promise - updateRow: (row: SaveRowRequest) => Promise - deleteRows: (rows: (string | Row)[]) => Promise - getRow: (id: string) => Promise - isDatasourceValid: (datasource: UIDatasource) => boolean - canUseColumn: (name: string) => boolean - } + actions: DatasourceActions } } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts index 677a85312f..70a83b4594 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts @@ -7,20 +7,13 @@ import { UpdateViewRequest, } from "@budibase/types" import { Store as StoreContext } from ".." +import { DatasourceActions } from "." const SuppressErrors = true interface ViewActions { viewV2: { - actions: { - saveDefinition: (newDefinition: UpdateViewRequest) => Promise - addRow: (row: SaveRowRequest) => Promise - updateRow: (row: SaveRowRequest) => Promise - deleteRows: (rows: (string | Row)[]) => Promise - getRow: (id: string) => Promise - isDatasourceValid: (datasource: UIDatasource) => boolean - canUseColumn: (name: string) => boolean - } + actions: DatasourceActions } } From 10979c43f7b15abf36379efc25a9ad4d052d05c8 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 09:40:23 +0100 Subject: [PATCH 15/52] Initial typing --- .../stores/{datasource.js => datasource.ts} | 67 ++++++++++++++----- .../src/components/grid/stores/index.ts | 8 ++- .../types/src/ui/stores/grid/datasource.ts | 7 ++ 3 files changed, 65 insertions(+), 17 deletions(-) rename packages/frontend-core/src/components/grid/stores/{datasource.js => datasource.ts} (80%) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.js b/packages/frontend-core/src/components/grid/stores/datasource.ts similarity index 80% rename from packages/frontend-core/src/components/grid/stores/datasource.js rename to packages/frontend-core/src/components/grid/stores/datasource.ts index 6aa607f7ed..8fda936d04 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.js +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -1,10 +1,47 @@ -import { derived, get } from "svelte/store" +import { derived, get, Readable, Writable } from "svelte/store" import { getDatasourceDefinition, getDatasourceSchema } from "../../../fetch" import { enrichSchemaWithRelColumns, memo } from "../../../utils" import { cloneDeep } from "lodash" -import { ViewV2Type } from "@budibase/types" +import { + FieldSchema, + SaveTableRequest, + UIDatasource, + UpdateViewRequest, + ViewV2Type, +} from "@budibase/types" +import { Store as StoreContext } from "." +import { DatasourceActions } from "./datasources" -export const createStores = () => { +interface DatasourceStore { + definition: Writable + schemaMutations: Writable> + subSchemaMutations: Writable> +} + +interface DerivedDatasourceStore { + schema: Readable> + enrichedSchema: Readable> + hasBudibaseIdentifiers: Readable +} + +interface ActionDatasourceStore { + datasource: DatasourceStore["definition"] & { + actions: DatasourceActions & { + refreshDefinition: () => Promise + changePrimaryDisplay: any + addSchemaMutation: any + addSubSchemaMutation: any + saveSchemaMutations: any + resetSchemaMutations: any + } + } +} + +export type Store = DatasourceStore & + DerivedDatasourceStore & + ActionDatasourceStore + +export const createStores = (): DatasourceStore => { const definition = memo(null) const schemaMutations = memo({}) const subSchemaMutations = memo({}) @@ -16,7 +53,7 @@ export const createStores = () => { } } -export const deriveStores = context => { +export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { const { API, definition, @@ -27,7 +64,7 @@ export const deriveStores = context => { } = context const schema = derived(definition, $definition => { - let schema = getDatasourceSchema({ + let schema: Record = getDatasourceSchema({ API, datasource: get(datasource), definition: $definition, @@ -40,7 +77,7 @@ export const deriveStores = context => { // Certain datasources like queries use primitives. Object.keys(schema || {}).forEach(key => { if (typeof schema[key] !== "object") { - schema[key] = { type: schema[key] } + schema[key] = { type: schema[key] } as any // TODO } }) @@ -68,9 +105,8 @@ export const deriveStores = context => { if ($subSchemaMutations[field]) { enrichedSchema[field].columns ??= {} - for (const [fieldName, mutation] of Object.entries( - $subSchemaMutations[field] - )) { + for (const fieldName of Object.keys($subSchemaMutations[field])) { + const mutation = $subSchemaMutations[field][fieldName] enrichedSchema[field].columns[fieldName] = { ...enrichedSchema[field].columns[fieldName], ...mutation, @@ -104,7 +140,7 @@ export const deriveStores = context => { } } -export const createActions = context => { +export const createActions = (context: StoreContext): ActionDatasourceStore => { const { API, datasource, @@ -147,7 +183,9 @@ export const createActions = context => { } // Saves the datasource definition - const saveDefinition = async newDefinition => { + const saveDefinition = async ( + newDefinition: UpdateViewRequest | SaveTableRequest + ) => { // Update local state const originalDefinition = get(definition) definition.set(newDefinition) @@ -155,7 +193,7 @@ export const createActions = context => { // Update server if (get(config).canSaveSchema) { try { - await getAPI()?.actions.saveDefinition(newDefinition) + await getAPI()?.actions.saveDefinition(newDefinition as any) // Broadcast change so external state can be updated, as this change // will not be received by the builder websocket because we caused it @@ -242,9 +280,8 @@ export const createActions = context => { } if ($subSchemaMutations[column]) { newSchema[column].columns ??= {} - for (const [fieldName, mutation] of Object.entries( - $subSchemaMutations[column] - )) { + for (const fieldName of Object.keys($subSchemaMutations[column])) { + const mutation = $subSchemaMutations[column][fieldName] newSchema[column].columns[fieldName] = { ...newSchema[column].columns[fieldName], ...mutation, diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index 1ef5da03b6..d7d922f793 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -59,7 +59,8 @@ export type Store = BaseStore & Columns.Store & Table.Store & ViewV2.Store & - NonPlus.Store & { + NonPlus.Store & + Datasource.Store & { // TODO while typing the rest of stores datasource: Writable & { actions: any } definition: Writable @@ -75,6 +76,9 @@ export type Store = BaseStore & rows: Writable & { actions: any } subscribe: any config: Writable + dispatch: (event: string, data: any) => any + notifications: Writable + schemaOverrides: Writable } export const attachStores = (context: Store): Store => { @@ -106,5 +110,5 @@ export const attachStores = (context: Store): Store => { } } - return context + return context as Store } diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index d7367352d5..b1ed806b35 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,5 +1,12 @@ +import { SortOrder } from "@budibase/types" + export interface UIDatasource { type: string id: string tableId: string + sort?: { + field: string + order?: SortOrder + } + queryUI: any // TODO } From f114f1529bffd42e3b80af1c31d203953b1249e8 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 10:01:33 +0100 Subject: [PATCH 16/52] Intial relatedColumns utils conversion --- packages/frontend-core/src/utils/{index.js => index.ts} | 0 .../src/utils/{relatedColumns.js => relatedColumns.ts} | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) rename packages/frontend-core/src/utils/{index.js => index.ts} (100%) rename packages/frontend-core/src/utils/{relatedColumns.js => relatedColumns.ts} (94%) diff --git a/packages/frontend-core/src/utils/index.js b/packages/frontend-core/src/utils/index.ts similarity index 100% rename from packages/frontend-core/src/utils/index.js rename to packages/frontend-core/src/utils/index.ts diff --git a/packages/frontend-core/src/utils/relatedColumns.js b/packages/frontend-core/src/utils/relatedColumns.ts similarity index 94% rename from packages/frontend-core/src/utils/relatedColumns.js rename to packages/frontend-core/src/utils/relatedColumns.ts index 6e7968f70c..60be13bec9 100644 --- a/packages/frontend-core/src/utils/relatedColumns.js +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -1,4 +1,4 @@ -import { FieldType, RelationshipType } from "@budibase/types" +import { FieldType, RelationshipType, UIFieldSchema } from "@budibase/types" import { Helpers } from "@budibase/bbui" const columnTypeManyTypeOverrides = { @@ -36,7 +36,9 @@ const columnTypeManyParser = { [FieldType.ARRAY]: value => Array.from(new Set(value)), } -export function enrichSchemaWithRelColumns(schema) { +export function enrichSchemaWithRelColumns( + schema: Record +) { if (!schema) { return } From c6d1b2be5b63ba43dcbdd98b08fe770f6e37b5c2 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 10:03:08 +0100 Subject: [PATCH 17/52] Use types --- .../frontend-core/src/components/grid/stores/datasource.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 8fda936d04..c97ee305ca 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -6,6 +6,7 @@ import { FieldSchema, SaveTableRequest, UIDatasource, + UIFieldSchema, UpdateViewRequest, ViewV2Type, } from "@budibase/types" @@ -20,7 +21,7 @@ interface DatasourceStore { interface DerivedDatasourceStore { schema: Readable> - enrichedSchema: Readable> + enrichedSchema: Readable> hasBudibaseIdentifiers: Readable } @@ -95,7 +96,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { const schemaWithRelatedColumns = enrichSchemaWithRelColumns($schema) - const enrichedSchema = {} + const enrichedSchema: Record = {} Object.keys(schemaWithRelatedColumns).forEach(field => { enrichedSchema[field] = { ...schemaWithRelatedColumns[field], From 795da9f9765023964f9a40c0d63e7b14aa1d8b3b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 10:03:16 +0100 Subject: [PATCH 18/52] Exports --- packages/types/src/ui/stores/grid/index.ts | 1 + packages/types/src/ui/stores/grid/table.ts | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 packages/types/src/ui/stores/grid/table.ts diff --git a/packages/types/src/ui/stores/grid/index.ts b/packages/types/src/ui/stores/grid/index.ts index f6c3472aaa..a4d8770576 100644 --- a/packages/types/src/ui/stores/grid/index.ts +++ b/packages/types/src/ui/stores/grid/index.ts @@ -1,2 +1,3 @@ export * from "./columns" export * from "./datasource" +export * from "./table" diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts new file mode 100644 index 0000000000..09bbb7672d --- /dev/null +++ b/packages/types/src/ui/stores/grid/table.ts @@ -0,0 +1,3 @@ +import { BasicViewFieldMetadata, FieldSchema } from "@budibase/types" + +export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata From 32bba9b1ab36d8e414c0b2af6fefdb5b166fb624 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 19:34:58 +0100 Subject: [PATCH 19/52] More typings --- .../src/components/grid/stores/datasource.ts | 2 +- .../frontend-core/src/utils/relatedColumns.ts | 38 +++++++++++++------ packages/types/src/ui/stores/grid/table.ts | 12 +++++- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index c97ee305ca..0bda8b0d64 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -65,7 +65,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { } = context const schema = derived(definition, $definition => { - let schema: Record = getDatasourceSchema({ + let schema: Record = getDatasourceSchema({ API, datasource: get(datasource), definition: $definition, diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index 60be13bec9..6d29ef9ce4 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -1,5 +1,11 @@ -import { FieldType, RelationshipType, UIFieldSchema } from "@budibase/types" import { Helpers } from "@budibase/bbui" +import { + FieldType, + isRelationshipField, + RelationshipType, + Row, + UIFieldSchema, +} from "@budibase/types" const columnTypeManyTypeOverrides = { [FieldType.DATETIME]: FieldType.STRING, @@ -8,8 +14,8 @@ const columnTypeManyTypeOverrides = { } const columnTypeManyParser = { - [FieldType.DATETIME]: (value, field) => { - function parseDate(value) { + [FieldType.DATETIME]: (value: any[], field: any) => { + function parseDate(value: any) { const { timeOnly, dateOnly, ignoreTimezones } = field || {} const enableTime = !dateOnly const parsedValue = Helpers.parseDate(value, { @@ -26,14 +32,14 @@ const columnTypeManyParser = { return value.map(v => parseDate(v)) }, - [FieldType.BOOLEAN]: value => value.map(v => !!v), - [FieldType.BB_REFERENCE_SINGLE]: value => [ + [FieldType.BOOLEAN]: (value: any[]) => value.map(v => !!v), + [FieldType.BB_REFERENCE_SINGLE]: (value: any[]) => [ ...new Map(value.map(i => [i._id, i])).values(), ], - [FieldType.BB_REFERENCE]: value => [ + [FieldType.BB_REFERENCE]: (value: any[]) => [ ...new Map(value.map(i => [i._id, i])).values(), ], - [FieldType.ARRAY]: value => Array.from(new Set(value)), + [FieldType.ARRAY]: (value: any[]) => Array.from(new Set(value)), } export function enrichSchemaWithRelColumns( @@ -46,7 +52,11 @@ export function enrichSchemaWithRelColumns( const field = schema[fieldName] result[fieldName] = field - if (field.visible !== false && field.columns) { + if ( + field.visible !== false && + isRelationshipField(field) && + field.columns + ) { const fromSingle = field?.relationshipType === RelationshipType.ONE_TO_MANY @@ -72,8 +82,13 @@ export function enrichSchemaWithRelColumns( return result } -export function getRelatedTableValues(row, field, fromField) { +export function getRelatedTableValues( + row: Row, + field: UIFieldSchema, + fromField: UIFieldSchema +) { const fromSingle = + isRelationshipField(fromField) && fromField?.relationshipType === RelationshipType.ONE_TO_MANY let result = "" @@ -85,7 +100,8 @@ export function getRelatedTableValues(row, field, fromField) { const value = row[field.related.field] ?.flatMap(r => r[field.related.subField]) ?.filter(i => i !== undefined && i !== null) - result = parser(value || [], field) + const parsed = parser(value || [], field) + result = parsed if ( [ FieldType.STRING, @@ -97,7 +113,7 @@ export function getRelatedTableValues(row, field, fromField) { FieldType.BARCODEQR, ].includes(field.type) ) { - result = result?.join(", ") + result = parsed?.join(", ") } } diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 09bbb7672d..f1040a1369 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -1,3 +1,11 @@ -import { BasicViewFieldMetadata, FieldSchema } from "@budibase/types" +import { + BasicViewFieldMetadata, + FieldSchema, + RelationSchemaField, +} from "@budibase/types" -export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata +export type UIFieldSchema = FieldSchema & + BasicViewFieldMetadata & { + related?: { field: string; subField: string } + columns?: Record + } From 26d1243e689b5c2a3c194efd83dd33d2af12a9a4 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 23 Dec 2024 19:44:40 +0100 Subject: [PATCH 20/52] More typings --- .../src/components/grid/stores/datasource.ts | 25 ++++++++++++------- .../frontend-core/src/utils/relatedColumns.ts | 9 ++++++- .../types/src/ui/stores/grid/datasource.ts | 5 ++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 0bda8b0d64..c969e05694 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -4,8 +4,11 @@ import { enrichSchemaWithRelColumns, memo } from "../../../utils" import { cloneDeep } from "lodash" import { FieldSchema, + Row, + SaveRowRequest, SaveTableRequest, UIDatasource, + UIFieldMutation, UIFieldSchema, UpdateViewRequest, ViewV2Type, @@ -211,7 +214,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Updates the datasources primary display column - const changePrimaryDisplay = async column => { + const changePrimaryDisplay = async (column: string) => { let newDefinition = cloneDeep(get(definition)) // Update primary display @@ -227,7 +230,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Adds a schema mutation for a single field - const addSchemaMutation = (field, mutation) => { + const addSchemaMutation = (field: string, mutation: UIFieldMutation) => { if (!field || !mutation) { return } @@ -243,7 +246,11 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Adds a nested schema mutation for a single field - const addSubSchemaMutation = (field, fromField, mutation) => { + const addSubSchemaMutation = ( + field: string, + fromField: string, + mutation: UIFieldMutation + ) => { if (!field || !fromField || !mutation) { return } @@ -305,32 +312,32 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Adds a row to the datasource - const addRow = async row => { + const addRow = async (row: SaveRowRequest) => { return await getAPI()?.actions.addRow(row) } // Updates an existing row in the datasource - const updateRow = async row => { + const updateRow = async (row: SaveRowRequest) => { return await getAPI()?.actions.updateRow(row) } // Deletes rows from the datasource - const deleteRows = async rows => { + const deleteRows = async (rows: Row[]) => { return await getAPI()?.actions.deleteRows(rows) } // Gets a single row from a datasource - const getRow = async id => { + const getRow = async (id: string) => { return await getAPI()?.actions.getRow(id) } // Checks if a certain datasource config is valid - const isDatasourceValid = datasource => { + const isDatasourceValid = (datasource: UIDatasource) => { return getAPI()?.actions.isDatasourceValid(datasource) } // Checks if this datasource can use a specific column by name - const canUseColumn = name => { + const canUseColumn = (name: string) => { return getAPI()?.actions.canUseColumn(name) } diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index 6d29ef9ce4..5b63e25625 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -14,7 +14,14 @@ const columnTypeManyTypeOverrides = { } const columnTypeManyParser = { - [FieldType.DATETIME]: (value: any[], field: any) => { + [FieldType.DATETIME]: ( + value: any[], + field: { + timeOnly?: boolean + dateOnly?: boolean + ignoreTimezones?: boolean + } + ) => { function parseDate(value: any) { const { timeOnly, dateOnly, ignoreTimezones } = field || {} const enableTime = !dateOnly diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index b1ed806b35..ea6e8d1368 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -10,3 +10,8 @@ export interface UIDatasource { } queryUI: any // TODO } + +export interface UIFieldMutation { + visible: boolean + readonly?: boolean +} From be1eef29765ba79443283e35b55c3876a4ea14f6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 00:42:57 +0100 Subject: [PATCH 21/52] More typings --- .../frontend-core/src/utils/relatedColumns.ts | 67 +++++++++---------- packages/types/src/ui/stores/grid/table.ts | 7 +- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index 5b63e25625..37859e7ca1 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -19,17 +19,12 @@ const columnTypeManyParser = { field: { timeOnly?: boolean dateOnly?: boolean - ignoreTimezones?: boolean } ) => { function parseDate(value: any) { - const { timeOnly, dateOnly, ignoreTimezones } = field || {} + const { timeOnly, dateOnly } = field || {} const enableTime = !dateOnly - const parsedValue = Helpers.parseDate(value, { - timeOnly, - enableTime, - ignoreTimezones, - }) + const parsedValue = Helpers.parseDate(value, { enableTime }) const parsed = Helpers.getDateDisplayValue(parsedValue, { enableTime, timeOnly, @@ -51,40 +46,44 @@ const columnTypeManyParser = { export function enrichSchemaWithRelColumns( schema: Record -) { +): Record { if (!schema) { return } - const result = Object.keys(schema).reduce((result, fieldName) => { - const field = schema[fieldName] - result[fieldName] = field + const result = Object.keys(schema).reduce>( + (result, fieldName) => { + const field = schema[fieldName] + result[fieldName] = field - if ( - field.visible !== false && - isRelationshipField(field) && - field.columns - ) { - const fromSingle = - field?.relationshipType === RelationshipType.ONE_TO_MANY + if ( + field.visible !== false && + isRelationshipField(field) && + field.columns + ) { + const fromSingle = + field?.relationshipType === RelationshipType.ONE_TO_MANY - for (const relColumn of Object.keys(field.columns)) { - const relField = field.columns[relColumn] - if (!relField.visible) { - continue - } - const name = `${field.name}.${relColumn}` - result[name] = { - ...relField, - name, - related: { field: fieldName, subField: relColumn }, - cellRenderType: - (!fromSingle && columnTypeManyTypeOverrides[relField.type]) || - relField.type, + for (const relColumn of Object.keys(field.columns)) { + const relField = field.columns[relColumn] + if (!relField.visible) { + continue + } + const name = `${field.name}.${relColumn}` + result[name] = { + ...relField, + type: null, // TODO + name, + related: { field: fieldName, subField: relColumn }, + cellRenderType: + (!fromSingle && columnTypeManyTypeOverrides[relField.type]) || + relField.type, + } } } - } - return result - }, {}) + return result + }, + {} + ) return result } diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index f1040a1369..d58bc93f8b 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -7,5 +7,10 @@ import { export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata & { related?: { field: string; subField: string } - columns?: Record + columns?: Record + cellRenderType?: string } + +interface UIRelationSchemaField extends RelationSchemaField { + type: string +} From 853ba4e20cfce22576b2d93a2293a3c02a5e1515 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 00:50:20 +0100 Subject: [PATCH 22/52] More and more types --- .../src/components/grid/stores/datasource.ts | 2 +- .../src/components/grid/stores/datasources/index.ts | 10 +++++----- packages/frontend-core/src/utils/relatedColumns.ts | 12 ++++++------ packages/types/src/ui/stores/grid/table.ts | 5 +++-- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index c969e05694..2d013fd23a 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -203,7 +203,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { // will not be received by the builder websocket because we caused it // ourselves dispatch("updatedatasource", newDefinition) - } catch (error) { + } catch (error: any) { const msg = error?.message || error || "Unknown error" get(notifications).error(`Error saving schema: ${msg}`) diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index 1d1a2103b1..a1ade22317 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -10,10 +10,10 @@ export interface DatasourceActions< TSaveDefinitionRequest = UpdateViewRequest | SaveTableRequest > { saveDefinition: (newDefinition: TSaveDefinitionRequest) => Promise - addRow: (row: SaveRowRequest) => Promise - updateRow: (row: SaveRowRequest) => Promise + addRow: (row: SaveRowRequest) => Promise + updateRow: (row: SaveRowRequest) => Promise deleteRows: (rows: (string | Row)[]) => Promise - getRow: (id: string) => Promise - isDatasourceValid: (datasource: UIDatasource) => boolean - canUseColumn: (name: string) => boolean + getRow: (id: string) => Promise + isDatasourceValid: (datasource: UIDatasource) => boolean | void + canUseColumn: (name: string) => boolean | void } diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index 37859e7ca1..ed4ccf438d 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -7,7 +7,7 @@ import { UIFieldSchema, } from "@budibase/types" -const columnTypeManyTypeOverrides = { +const columnTypeManyTypeOverrides: Partial> = { [FieldType.DATETIME]: FieldType.STRING, [FieldType.BOOLEAN]: FieldType.STRING, [FieldType.SIGNATURE_SINGLE]: FieldType.ATTACHMENTS, @@ -46,7 +46,7 @@ const columnTypeManyParser = { export function enrichSchemaWithRelColumns( schema: Record -): Record { +): Record | undefined { if (!schema) { return } @@ -71,7 +71,7 @@ export function enrichSchemaWithRelColumns( const name = `${field.name}.${relColumn}` result[name] = { ...relField, - type: null, // TODO + type: relField.type as any, // TODO name, related: { field: fieldName, subField: relColumn }, cellRenderType: @@ -102,10 +102,10 @@ export function getRelatedTableValues( if (fromSingle) { result = row[field.related.field]?.[0]?.[field.related.subField] } else { - const parser = columnTypeManyParser[field.type] || (value => value) + const parser = columnTypeManyParser[field.type] || ((value: any) => value) const value = row[field.related.field] - ?.flatMap(r => r[field.related.subField]) - ?.filter(i => i !== undefined && i !== null) + ?.flatMap((r: Row) => r[field.related.subField]) + ?.filter((i: any) => i !== undefined && i !== null) const parsed = parser(value || [], field) result = parsed if ( diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index d58bc93f8b..8975ef4cfc 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -1,16 +1,17 @@ import { BasicViewFieldMetadata, FieldSchema, + FieldType, RelationSchemaField, } from "@budibase/types" export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata & { related?: { field: string; subField: string } - columns?: Record + columns?: Record cellRenderType?: string } interface UIRelationSchemaField extends RelationSchemaField { - type: string + type: FieldType } From e3a811d1a68c1dbe27e56b2be1e1dceef8f8610e Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 01:24:52 +0100 Subject: [PATCH 23/52] More types --- .../src/components/grid/stores/datasource.ts | 14 +++++++------- packages/frontend-core/src/utils/relatedColumns.ts | 8 +++++--- packages/types/src/ui/stores/grid/table.ts | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 2d013fd23a..472f598299 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -18,13 +18,13 @@ import { DatasourceActions } from "./datasources" interface DatasourceStore { definition: Writable - schemaMutations: Writable> - subSchemaMutations: Writable> + schemaMutations: Writable> + subSchemaMutations: Writable> } interface DerivedDatasourceStore { - schema: Readable> - enrichedSchema: Readable> + schema: Readable | null> + enrichedSchema: Readable | null> hasBudibaseIdentifiers: Readable } @@ -100,9 +100,9 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { const schemaWithRelatedColumns = enrichSchemaWithRelColumns($schema) const enrichedSchema: Record = {} - Object.keys(schemaWithRelatedColumns).forEach(field => { + Object.keys(schemaWithRelatedColumns || {}).forEach(field => { enrichedSchema[field] = { - ...schemaWithRelatedColumns[field], + ...schemaWithRelatedColumns?.[field], ...$schemaOverrides?.[field], ...$schemaMutations[field], } @@ -197,7 +197,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { // Update server if (get(config).canSaveSchema) { try { - await getAPI()?.actions.saveDefinition(newDefinition as any) + await getAPI()?.actions.saveDefinition(newDefinition) // Broadcast change so external state can be updated, as this change // will not be received by the builder websocket because we caused it diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index ed4ccf438d..07a9efe5d4 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -102,12 +102,14 @@ export function getRelatedTableValues( if (fromSingle) { result = row[field.related.field]?.[0]?.[field.related.subField] } else { - const parser = columnTypeManyParser[field.type] || ((value: any) => value) + const parser = + columnTypeManyParser[field.type as keyof typeof columnTypeManyParser] || + ((value: any) => value) const value = row[field.related.field] ?.flatMap((r: Row) => r[field.related.subField]) ?.filter((i: any) => i !== undefined && i !== null) - const parsed = parser(value || [], field) - result = parsed + const parsed = parser(value || [], field as any) + result = parsed as any if ( [ FieldType.STRING, diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 8975ef4cfc..6160a05640 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -7,7 +7,7 @@ import { export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata & { - related?: { field: string; subField: string } + related: { field: string; subField: string } columns?: Record cellRenderType?: string } From 577df882ae5fd50dce9de5b6bcba319f5cf6bde6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 10:07:57 +0100 Subject: [PATCH 24/52] More typings --- .../src/components/grid/stores/datasource.ts | 10 +++++----- .../src/components/grid/stores/datasources/index.ts | 2 +- .../src/components/grid/stores/datasources/nonPlus.ts | 2 +- .../src/components/grid/stores/datasources/table.ts | 2 +- .../src/components/grid/stores/datasources/viewV2.ts | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 472f598299..6b4fb8dc52 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -19,7 +19,7 @@ import { DatasourceActions } from "./datasources" interface DatasourceStore { definition: Writable schemaMutations: Writable> - subSchemaMutations: Writable> + subSchemaMutations: Writable>> } interface DerivedDatasourceStore { @@ -197,7 +197,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { // Update server if (get(config).canSaveSchema) { try { - await getAPI()?.actions.saveDefinition(newDefinition) + await getAPI()?.actions.saveDefinition(newDefinition as never) // Broadcast change so external state can be updated, as this change // will not be received by the builder websocket because we caused it @@ -277,15 +277,15 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { const $definition = get(definition) const $schemaMutations = get(schemaMutations) const $subSchemaMutations = get(subSchemaMutations) - const $schema = get(schema) - let newSchema = {} + const $schema = get(schema) || {} + let newSchema: Record = {} // Build new updated datasource schema Object.keys($schema).forEach(column => { newSchema[column] = { ...$schema[column], ...$schemaMutations[column], - } + } as UIFieldSchema // TODO if ($subSchemaMutations[column]) { newSchema[column].columns ??= {} for (const fieldName of Object.keys($subSchemaMutations[column])) { diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index a1ade22317..4c3ffc7a74 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -12,7 +12,7 @@ export interface DatasourceActions< saveDefinition: (newDefinition: TSaveDefinitionRequest) => Promise addRow: (row: SaveRowRequest) => Promise updateRow: (row: SaveRowRequest) => Promise - deleteRows: (rows: (string | Row)[]) => Promise + deleteRows: (rows: Row[]) => Promise getRow: (id: string) => Promise isDatasourceValid: (datasource: UIDatasource) => boolean | void canUseColumn: (name: string) => boolean | void diff --git a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts index 2ea5a05a0e..65fc6d8696 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts @@ -5,7 +5,7 @@ import { DatasourceActions } from "." interface NonPlusActions { nonPlus: { - actions: DatasourceActions + actions: DatasourceActions } } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/table.ts b/packages/frontend-core/src/components/grid/stores/datasources/table.ts index 9f1a490306..5f3d27159e 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/table.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/table.ts @@ -34,7 +34,7 @@ export const createActions = (context: StoreContext): TableActions => { return await API.saveRow(row, SuppressErrors) } - const deleteRows = async (rows: (string | Row)[]) => { + const deleteRows = async (rows: Row[]) => { await API.deleteRows(get(datasource).tableId, rows) } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts index 70a83b4594..edafd94d6f 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts @@ -39,7 +39,7 @@ export const createActions = (context: StoreContext): ViewActions => { } } - const deleteRows = async (rows: (string | Row)[]) => { + const deleteRows = async (rows: Row[]) => { await API.deleteRows(get(datasource).id, rows) } From c3ef77b7677207dd875060e60ed927100a8988ab Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 24 Dec 2024 09:21:56 +0000 Subject: [PATCH 25/52] some type fixes --- .../builder/src/stores/builder/automations.ts | 24 ++++++++++++------- packages/types/src/ui/stores/automations.ts | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index 031a261498..e3565019c4 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -91,7 +91,13 @@ const automationActions = (store: AutomationStore) => ({ * @param {Object} destPath the destinationPart * @param {Object} automation the automaton to be mutated */ - moveBlock: async (sourcePath: any, destPath: any, automation: Automation) => { + moveBlock: async ( + sourcePath: BranchPath[], + destPath: BranchPath[], + automation: Automation + ) => { + console.log(sourcePath) + console.log(destPath) // The last part of the source node address, containing the id. const pathSource = sourcePath.at(-1) @@ -99,13 +105,13 @@ const automationActions = (store: AutomationStore) => ({ const pathEnd = destPath.at(-1) // Check if dragging a step into its own drag zone - const isOwnDragzone = pathSource.id === pathEnd.id + const isOwnDragzone = pathSource?.id === pathEnd?.id // Check if dragging the first branch step into the branch node drag zone const isFirstBranchStep = - pathEnd.branchStepId && - pathEnd.branchIdx === pathSource.branchIdx && - pathSource.stepIdx === 0 + pathEnd?.branchStepId && + pathEnd.branchIdx === pathSource?.branchIdx && + pathSource?.stepIdx === 0 // If dragging into an area that will not affect the tree structure // Ignore the drag and drop. @@ -128,13 +134,15 @@ const automationActions = (store: AutomationStore) => ({ let finalPath // If dropping in a branch-step dropzone you need to find // the updated parent step route then add the branch details again - if (pathEnd.branchStepId) { + if (pathEnd?.branchStepId) { const branchStepRef = newRefs[pathEnd.branchStepId] finalPath = branchStepRef.pathTo finalPath.push(pathEnd) } else { // Place the target 1 after the drop - finalPath = newRefs[pathEnd.id].pathTo + if (pathEnd?.id) { + finalPath = newRefs[pathEnd.id].pathTo + } finalPath.at(-1).stepIdx += 1 } @@ -742,7 +750,7 @@ const automationActions = (store: AutomationStore) => ({ data: Record ) => { // Create new modified block - let newBlock: any = { + let newBlock: AutomationStep & { inputs: any } = { ...block, inputs: { ...block.inputs, diff --git a/packages/types/src/ui/stores/automations.ts b/packages/types/src/ui/stores/automations.ts index 60275a0f4d..7e85ceee38 100644 --- a/packages/types/src/ui/stores/automations.ts +++ b/packages/types/src/ui/stores/automations.ts @@ -2,6 +2,7 @@ export interface BranchPath { stepIdx: number branchIdx: number branchStepId: string + id: string } export interface BlockDefinitions { From b1147aa140af3d4d0d314da1955afed8661f3da5 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 24 Dec 2024 09:34:53 +0000 Subject: [PATCH 26/52] logs --- packages/builder/src/stores/builder/automations.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/builder/src/stores/builder/automations.ts b/packages/builder/src/stores/builder/automations.ts index e3565019c4..a70ef76821 100644 --- a/packages/builder/src/stores/builder/automations.ts +++ b/packages/builder/src/stores/builder/automations.ts @@ -96,8 +96,6 @@ const automationActions = (store: AutomationStore) => ({ destPath: BranchPath[], automation: Automation ) => { - console.log(sourcePath) - console.log(destPath) // The last part of the source node address, containing the id. const pathSource = sourcePath.at(-1) From 17590cb5e672e62b2aa408cd0a409e72446600a1 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 10:57:07 +0100 Subject: [PATCH 27/52] Type some of the anys --- .../src/components/grid/stores/datasource.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 6b4fb8dc52..721b964626 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -32,11 +32,15 @@ interface ActionDatasourceStore { datasource: DatasourceStore["definition"] & { actions: DatasourceActions & { refreshDefinition: () => Promise - changePrimaryDisplay: any - addSchemaMutation: any - addSubSchemaMutation: any - saveSchemaMutations: any - resetSchemaMutations: any + changePrimaryDisplay: (column: string) => Promise + addSchemaMutation: (field: string, mutation: UIFieldMutation) => void + addSubSchemaMutation: ( + field: string, + fromField: string, + mutation: UIFieldMutation + ) => void + saveSchemaMutations: () => Promise + resetSchemaMutations: () => void } } } From e6cccaee6d708274f05de684457879b01911d4b6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 11:10:55 +0100 Subject: [PATCH 28/52] Remove some todos --- packages/frontend-core/src/components/grid/stores/datasource.ts | 2 +- packages/types/src/ui/stores/grid/table.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 721b964626..17ce098555 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -85,7 +85,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { // Certain datasources like queries use primitives. Object.keys(schema || {}).forEach(key => { if (typeof schema[key] !== "object") { - schema[key] = { type: schema[key] } as any // TODO + schema[key] = { name: key, type: schema[key] } } }) diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 6160a05640..8975ef4cfc 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -7,7 +7,7 @@ import { export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata & { - related: { field: string; subField: string } + related?: { field: string; subField: string } columns?: Record cellRenderType?: string } From f1f2b90cfb7ea30e055f7599ffd92ebbff473793 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 11:14:23 +0100 Subject: [PATCH 29/52] Fix some unwanted anys --- .../src/components/grid/stores/datasource.ts | 12 +++++++----- .../src/components/grid/stores/index.ts | 3 --- packages/types/src/ui/stores/grid/datasource.ts | 4 +++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 17ce098555..c1757dd59e 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -131,7 +131,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { ([$datasource, $definition]) => { let type = $datasource?.type if (type === "provider") { - type = $datasource.value?.datasource?.type + type = ($datasource as any).value?.datasource?.type } // Handle calculation views if (type === "viewV2" && $definition?.type === ViewV2Type.CALCULATION) { @@ -196,7 +196,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { ) => { // Update local state const originalDefinition = get(definition) - definition.set(newDefinition) + definition.set(newDefinition as any) // Update server if (get(config).canSaveSchema) { @@ -229,8 +229,10 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { newDefinition.schema[column].constraints = {} } newDefinition.schema[column].constraints.presence = { allowEmpty: false } - delete newDefinition.schema[column].default - return await saveDefinition(newDefinition) + if ("default" in newDefinition.schema[column]) { + delete newDefinition.schema[column].default + } + return await saveDefinition(newDefinition as any) } // Adds a schema mutation for a single field @@ -306,7 +308,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { await saveDefinition({ ...$definition, schema: newSchema, - }) + } as any) resetSchemaMutations() } diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index d7d922f793..f2b6c973b9 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -62,9 +62,6 @@ export type Store = BaseStore & NonPlus.Store & Datasource.Store & { // TODO while typing the rest of stores - datasource: Writable & { actions: any } - definition: Writable - enrichedSchema: any fetch: Writable filter: Writable inlineFilters: Writable diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index ea6e8d1368..ec115d28a0 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,14 +1,16 @@ -import { SortOrder } from "@budibase/types" +import { SortOrder, UIFieldSchema } from "@budibase/types" export interface UIDatasource { type: string id: string tableId: string + primaryDisplay?: string sort?: { field: string order?: SortOrder } queryUI: any // TODO + schema: Record } export interface UIFieldMutation { From 812d19b9b03d822de8193deab33fd9584a29668b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 11:25:05 +0100 Subject: [PATCH 30/52] More types --- packages/types/src/ui/stores/grid/datasource.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index ec115d28a0..818b4f00da 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,15 +1,16 @@ -import { SortOrder, UIFieldSchema } from "@budibase/types" +import { SortOrder, UIFieldSchema, UISearchFilter } from "@budibase/types" export interface UIDatasource { type: string + name: string id: string tableId: string primaryDisplay?: string sort?: { field: string - order?: SortOrder + order: SortOrder } - queryUI: any // TODO + queryUI: UISearchFilter schema: Record } From a31829051825ea8b436f5aedeff3a5c8d4ad1971 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 11:52:05 +0100 Subject: [PATCH 31/52] Improve types --- .../components/grid/stores/datasources/index.ts | 16 ++++++++++++++-- .../grid/stores/datasources/nonPlus.ts | 10 +++++----- .../components/grid/stores/datasources/table.ts | 7 ++++--- .../components/grid/stores/datasources/viewV2.ts | 12 ++++++------ packages/types/src/ui/stores/grid/datasource.ts | 16 +++++++++++++++- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index 4c3ffc7a74..8127a9fecf 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -3,10 +3,13 @@ import { SaveRowRequest, SaveTableRequest, UIDatasource, + UITable, + UIView, UpdateViewRequest, } from "@budibase/types" -export interface DatasourceActions< +interface DatasourceActions< + TDatasource = UITable | UIView, TSaveDefinitionRequest = UpdateViewRequest | SaveTableRequest > { saveDefinition: (newDefinition: TSaveDefinitionRequest) => Promise @@ -14,6 +17,15 @@ export interface DatasourceActions< updateRow: (row: SaveRowRequest) => Promise deleteRows: (rows: Row[]) => Promise getRow: (id: string) => Promise - isDatasourceValid: (datasource: UIDatasource) => boolean | void + isDatasourceValid: (datasource: TDatasource) => boolean | void canUseColumn: (name: string) => boolean | void } + +export interface DatasourceTableActions + extends DatasourceActions {} + +export interface DatasourceViewActions + extends DatasourceActions {} + +export interface DatasourceNonPlusActions + extends DatasourceActions {} diff --git a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts index 65fc6d8696..46b224730b 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts @@ -1,11 +1,11 @@ -import { SortOrder, UIDatasource } from "@budibase/types" +import { SortOrder, UIDatasource, UITable, UIView } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." -import { DatasourceActions } from "." +import { DatasourceNonPlusActions } from "." interface NonPlusActions { nonPlus: { - actions: DatasourceActions + actions: DatasourceNonPlusActions } } @@ -34,8 +34,8 @@ export const createActions = (context: StoreContext): NonPlusActions => { // There are many different types and shapes of datasource, so we only // check that we aren't null return ( - !table.actions.isDatasourceValid(datasource) && - !viewV2.actions.isDatasourceValid(datasource) && + !table.actions.isDatasourceValid(datasource as UITable) && + !viewV2.actions.isDatasourceValid(datasource as UIView) && datasource?.type != null ) } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/table.ts b/packages/frontend-core/src/components/grid/stores/datasources/table.ts index 5f3d27159e..5c8b3e1a1a 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/table.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/table.ts @@ -4,16 +4,17 @@ import { SaveTableRequest, SortOrder, UIDatasource, + UITable, } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." -import { DatasourceActions } from "." +import { DatasourceTableActions } from "." const SuppressErrors = true interface TableActions { table: { - actions: DatasourceActions + actions: DatasourceTableActions } } @@ -97,7 +98,7 @@ export const initialise = (context: StoreContext) => { // Clear previous subscriptions unsubscribers?.forEach(unsubscribe => unsubscribe()) unsubscribers = [] - if (!table.actions.isDatasourceValid($datasource)) { + if (!table.actions.isDatasourceValid($datasource as UITable)) { return } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts index edafd94d6f..f70059e016 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts @@ -3,17 +3,17 @@ import { Row, SaveRowRequest, SortOrder, - UIDatasource, + UIView, UpdateViewRequest, } from "@budibase/types" import { Store as StoreContext } from ".." -import { DatasourceActions } from "." +import { DatasourceViewActions } from "." const SuppressErrors = true interface ViewActions { viewV2: { - actions: DatasourceActions + actions: DatasourceViewActions } } @@ -56,7 +56,7 @@ export const createActions = (context: StoreContext): ViewActions => { return res?.rows?.[0] } - const isDatasourceValid = (datasource: UIDatasource) => { + const isDatasourceValid = (datasource: UIView) => { return ( datasource?.type === "viewV2" && !!datasource?.id && !!datasource?.tableId ) @@ -108,7 +108,7 @@ export const initialise = (context: StoreContext) => { // Clear previous subscriptions unsubscribers?.forEach(unsubscribe => unsubscribe()) unsubscribers = [] - if (!viewV2.actions.isDatasourceValid($datasource)) { + if (!viewV2.actions.isDatasourceValid($datasource as UIView)) { return } @@ -147,7 +147,7 @@ export const initialise = (context: StoreContext) => { unsubscribers.push( sort.subscribe(async $sort => { // Ensure we're updating the correct view - const $view = get(definition) + const $view = get(definition) as UIView if ($view?.id !== $datasource.id) { return } diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index 818b4f00da..5d27183806 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,6 +1,8 @@ import { SortOrder, UIFieldSchema, UISearchFilter } from "@budibase/types" -export interface UIDatasource { +export type UIDatasource = UITable | UIView + +export interface UITable { type: string name: string id: string @@ -14,6 +16,18 @@ export interface UIDatasource { schema: Record } +export interface UIView { + type: string + version: 2 + id: string + tableId: string + sort?: { + field: string + order: SortOrder + } + queryUI: UISearchFilter +} + export interface UIFieldMutation { visible: boolean readonly?: boolean From 6c17d3e257995518f6dc5f739075c5d2a736d08d Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 11:56:39 +0100 Subject: [PATCH 32/52] Split types --- .../src/components/grid/stores/datasource.ts | 4 +-- .../grid/stores/datasources/index.ts | 13 ++++++--- .../types/src/ui/stores/grid/datasource.ts | 28 +------------------ packages/types/src/ui/stores/grid/index.ts | 1 + packages/types/src/ui/stores/grid/table.ts | 16 +++++++++++ packages/types/src/ui/stores/grid/view.ts | 16 +++++++++++ 6 files changed, 45 insertions(+), 33 deletions(-) create mode 100644 packages/types/src/ui/stores/grid/view.ts diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index c1757dd59e..4c8933611e 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -30,7 +30,7 @@ interface DerivedDatasourceStore { interface ActionDatasourceStore { datasource: DatasourceStore["definition"] & { - actions: DatasourceActions & { + actions: DatasourceActions & { refreshDefinition: () => Promise changePrimaryDisplay: (column: string) => Promise addSchemaMutation: (field: string, mutation: UIFieldMutation) => void @@ -339,7 +339,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { // Checks if a certain datasource config is valid const isDatasourceValid = (datasource: UIDatasource) => { - return getAPI()?.actions.isDatasourceValid(datasource) + return getAPI()?.actions.isDatasourceValid(datasource as any) } // Checks if this datasource can use a specific column by name diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index 8127a9fecf..4f570bd3eb 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -8,7 +8,7 @@ import { UpdateViewRequest, } from "@budibase/types" -interface DatasourceActions< +interface DatasourceBaseActions< TDatasource = UITable | UIView, TSaveDefinitionRequest = UpdateViewRequest | SaveTableRequest > { @@ -22,10 +22,15 @@ interface DatasourceActions< } export interface DatasourceTableActions - extends DatasourceActions {} + extends DatasourceBaseActions {} export interface DatasourceViewActions - extends DatasourceActions {} + extends DatasourceBaseActions {} export interface DatasourceNonPlusActions - extends DatasourceActions {} + extends DatasourceBaseActions {} + +export type DatasourceActions = + | DatasourceTableActions + | DatasourceViewActions + | DatasourceNonPlusActions diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index 5d27183806..32ac7d5fe1 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,33 +1,7 @@ -import { SortOrder, UIFieldSchema, UISearchFilter } from "@budibase/types" +import { UITable, UIView } from "@budibase/types" export type UIDatasource = UITable | UIView -export interface UITable { - type: string - name: string - id: string - tableId: string - primaryDisplay?: string - sort?: { - field: string - order: SortOrder - } - queryUI: UISearchFilter - schema: Record -} - -export interface UIView { - type: string - version: 2 - id: string - tableId: string - sort?: { - field: string - order: SortOrder - } - queryUI: UISearchFilter -} - export interface UIFieldMutation { visible: boolean readonly?: boolean diff --git a/packages/types/src/ui/stores/grid/index.ts b/packages/types/src/ui/stores/grid/index.ts index a4d8770576..bcd7e3267d 100644 --- a/packages/types/src/ui/stores/grid/index.ts +++ b/packages/types/src/ui/stores/grid/index.ts @@ -1,3 +1,4 @@ export * from "./columns" export * from "./datasource" export * from "./table" +export * from "./view" diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 8975ef4cfc..4c19cbf882 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -3,8 +3,24 @@ import { FieldSchema, FieldType, RelationSchemaField, + SortOrder, + UISearchFilter, } from "@budibase/types" +export interface UITable { + type: string + name: string + id: string + tableId: string + primaryDisplay?: string + sort?: { + field: string + order: SortOrder + } + queryUI: UISearchFilter + schema: Record +} + export type UIFieldSchema = FieldSchema & BasicViewFieldMetadata & { related?: { field: string; subField: string } diff --git a/packages/types/src/ui/stores/grid/view.ts b/packages/types/src/ui/stores/grid/view.ts new file mode 100644 index 0000000000..af214e7d82 --- /dev/null +++ b/packages/types/src/ui/stores/grid/view.ts @@ -0,0 +1,16 @@ +import { SortOrder, UISearchFilter } from "@budibase/types" +import { UIFieldSchema } from "./table" + +export interface UIView { + type: string + version: 2 + id: string + tableId: string + primaryDisplay?: string + schema: Record + sort?: { + field: string + order: SortOrder + } + queryUI: UISearchFilter +} From 5add8336037ac8d33c7b59760c6e8e5f16d61316 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 12:00:56 +0100 Subject: [PATCH 33/52] Remove todo --- .../frontend-core/src/components/grid/stores/datasource.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 4c8933611e..6a3bced620 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -3,7 +3,6 @@ import { getDatasourceDefinition, getDatasourceSchema } from "../../../fetch" import { enrichSchemaWithRelColumns, memo } from "../../../utils" import { cloneDeep } from "lodash" import { - FieldSchema, Row, SaveRowRequest, SaveTableRequest, @@ -23,7 +22,7 @@ interface DatasourceStore { } interface DerivedDatasourceStore { - schema: Readable | null> + schema: Readable | null> enrichedSchema: Readable | null> hasBudibaseIdentifiers: Readable } @@ -291,7 +290,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { newSchema[column] = { ...$schema[column], ...$schemaMutations[column], - } as UIFieldSchema // TODO + } if ($subSchemaMutations[column]) { newSchema[column].columns ??= {} for (const fieldName of Object.keys($subSchemaMutations[column])) { From d117ac8febe1ca1da119fd68bb4cc4264882c8a7 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 12:03:56 +0100 Subject: [PATCH 34/52] Fix types --- packages/frontend-core/src/utils/relatedColumns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend-core/src/utils/relatedColumns.ts b/packages/frontend-core/src/utils/relatedColumns.ts index 07a9efe5d4..e7bd3662d3 100644 --- a/packages/frontend-core/src/utils/relatedColumns.ts +++ b/packages/frontend-core/src/utils/relatedColumns.ts @@ -90,7 +90,7 @@ export function enrichSchemaWithRelColumns( export function getRelatedTableValues( row: Row, - field: UIFieldSchema, + field: UIFieldSchema & { related: { field: string; subField: string } }, fromField: UIFieldSchema ) { const fromSingle = From 7c05c5473de6242177b9e90237fe3b9f2ed2bc06 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 12:18:49 +0100 Subject: [PATCH 35/52] Fix UIFieldMutation --- packages/types/src/ui/stores/grid/datasource.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index 32ac7d5fe1..c8a6a6fc83 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -3,6 +3,7 @@ import { UITable, UIView } from "@budibase/types" export type UIDatasource = UITable | UIView export interface UIFieldMutation { - visible: boolean + visible?: boolean readonly?: boolean + width?: number } From 78dd802d3abc8d7b65eeb3c8f91eafb93fff3f91 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 12:23:38 +0100 Subject: [PATCH 36/52] Improve some typings --- .../src/components/grid/stores/datasources/index.ts | 4 +--- .../src/components/grid/stores/datasources/viewV2.ts | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index 4f570bd3eb..a03d85e74f 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -31,6 +31,4 @@ export interface DatasourceNonPlusActions extends DatasourceBaseActions {} export type DatasourceActions = - | DatasourceTableActions - | DatasourceViewActions - | DatasourceNonPlusActions + | DatasourceTableActions & DatasourceViewActions & DatasourceNonPlusActions diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts index f70059e016..e83d866455 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts @@ -168,7 +168,7 @@ export const initialise = (context: StoreContext) => { field: $sort.column, order: $sort.order || SortOrder.ASCENDING, }, - }) + } as never as UpdateViewRequest) } // Also update the fetch to ensure the new sort is respected. @@ -198,7 +198,7 @@ export const initialise = (context: StoreContext) => { await datasource.actions.saveDefinition({ ...$view, queryUI: $filter, - }) + } as never as UpdateViewRequest) // Refresh data since view definition changed await rows.actions.refreshData() From fc51b4e132a8807481c4fcbfbca04f0f646bff05 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:01:26 +0100 Subject: [PATCH 37/52] Fix "type" conflicts --- .../src/components/grid/stores/datasource.ts | 9 +++++++-- .../components/grid/stores/datasources/index.ts | 11 ++++------- .../components/grid/stores/datasources/nonPlus.ts | 6 +++--- .../components/grid/stores/datasources/table.ts | 3 +-- .../components/grid/stores/datasources/viewV2.ts | 7 ++++--- packages/types/src/ui/stores/grid/datasource.ts | 4 +++- packages/types/src/ui/stores/grid/table.ts | 1 - packages/types/src/ui/stores/grid/view.ts | 14 ++------------ 8 files changed, 24 insertions(+), 31 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 6a3bced620..b60e488db2 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -133,7 +133,11 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { type = ($datasource as any).value?.datasource?.type } // Handle calculation views - if (type === "viewV2" && $definition?.type === ViewV2Type.CALCULATION) { + if ( + type === "viewV2" && + "type" in $definition && + $definition?.type === ViewV2Type.CALCULATION + ) { return false } return ["table", "viewV2", "link"].includes(type) @@ -167,6 +171,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { const getAPI = () => { const $datasource = get(datasource) const type = $datasource?.type + console.error({ type }) if (!type) { return null } @@ -338,7 +343,7 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { // Checks if a certain datasource config is valid const isDatasourceValid = (datasource: UIDatasource) => { - return getAPI()?.actions.isDatasourceValid(datasource as any) + return getAPI()?.actions.isDatasourceValid(datasource) } // Checks if this datasource can use a specific column by name diff --git a/packages/frontend-core/src/components/grid/stores/datasources/index.ts b/packages/frontend-core/src/components/grid/stores/datasources/index.ts index a03d85e74f..c58aef37e9 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/index.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/index.ts @@ -3,13 +3,10 @@ import { SaveRowRequest, SaveTableRequest, UIDatasource, - UITable, - UIView, UpdateViewRequest, } from "@budibase/types" interface DatasourceBaseActions< - TDatasource = UITable | UIView, TSaveDefinitionRequest = UpdateViewRequest | SaveTableRequest > { saveDefinition: (newDefinition: TSaveDefinitionRequest) => Promise @@ -17,18 +14,18 @@ interface DatasourceBaseActions< updateRow: (row: SaveRowRequest) => Promise deleteRows: (rows: Row[]) => Promise getRow: (id: string) => Promise - isDatasourceValid: (datasource: TDatasource) => boolean | void + isDatasourceValid: (datasource: UIDatasource) => boolean | void canUseColumn: (name: string) => boolean | void } export interface DatasourceTableActions - extends DatasourceBaseActions {} + extends DatasourceBaseActions {} export interface DatasourceViewActions - extends DatasourceBaseActions {} + extends DatasourceBaseActions {} export interface DatasourceNonPlusActions - extends DatasourceBaseActions {} + extends DatasourceBaseActions {} export type DatasourceActions = | DatasourceTableActions & DatasourceViewActions & DatasourceNonPlusActions diff --git a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts index 46b224730b..17e5e8b8d9 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/nonPlus.ts @@ -1,4 +1,4 @@ -import { SortOrder, UIDatasource, UITable, UIView } from "@budibase/types" +import { SortOrder, UIDatasource } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." import { DatasourceNonPlusActions } from "." @@ -34,8 +34,8 @@ export const createActions = (context: StoreContext): NonPlusActions => { // There are many different types and shapes of datasource, so we only // check that we aren't null return ( - !table.actions.isDatasourceValid(datasource as UITable) && - !viewV2.actions.isDatasourceValid(datasource as UIView) && + !table.actions.isDatasourceValid(datasource) && + !viewV2.actions.isDatasourceValid(datasource) && datasource?.type != null ) } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/table.ts b/packages/frontend-core/src/components/grid/stores/datasources/table.ts index 5c8b3e1a1a..894a65ba4c 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/table.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/table.ts @@ -4,7 +4,6 @@ import { SaveTableRequest, SortOrder, UIDatasource, - UITable, } from "@budibase/types" import { get } from "svelte/store" import { Store as StoreContext } from ".." @@ -98,7 +97,7 @@ export const initialise = (context: StoreContext) => { // Clear previous subscriptions unsubscribers?.forEach(unsubscribe => unsubscribe()) unsubscribers = [] - if (!table.actions.isDatasourceValid($datasource as UITable)) { + if (!table.actions.isDatasourceValid($datasource)) { return } diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts index e83d866455..d9cac5397d 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.ts @@ -3,6 +3,7 @@ import { Row, SaveRowRequest, SortOrder, + UIDatasource, UIView, UpdateViewRequest, } from "@budibase/types" @@ -56,7 +57,7 @@ export const createActions = (context: StoreContext): ViewActions => { return res?.rows?.[0] } - const isDatasourceValid = (datasource: UIView) => { + const isDatasourceValid = (datasource: UIDatasource) => { return ( datasource?.type === "viewV2" && !!datasource?.id && !!datasource?.tableId ) @@ -108,7 +109,7 @@ export const initialise = (context: StoreContext) => { // Clear previous subscriptions unsubscribers?.forEach(unsubscribe => unsubscribe()) unsubscribers = [] - if (!viewV2.actions.isDatasourceValid($datasource as UIView)) { + if (!viewV2.actions.isDatasourceValid($datasource)) { return } @@ -168,7 +169,7 @@ export const initialise = (context: StoreContext) => { field: $sort.column, order: $sort.order || SortOrder.ASCENDING, }, - } as never as UpdateViewRequest) + }) } // Also update the fetch to ensure the new sort is respected. diff --git a/packages/types/src/ui/stores/grid/datasource.ts b/packages/types/src/ui/stores/grid/datasource.ts index c8a6a6fc83..1d9b6740a4 100644 --- a/packages/types/src/ui/stores/grid/datasource.ts +++ b/packages/types/src/ui/stores/grid/datasource.ts @@ -1,6 +1,8 @@ import { UITable, UIView } from "@budibase/types" -export type UIDatasource = UITable | UIView +export type UIDatasource = (UITable | UIView) & { + type: string +} export interface UIFieldMutation { visible?: boolean diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 4c19cbf882..6fae1e908a 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -8,7 +8,6 @@ import { } from "@budibase/types" export interface UITable { - type: string name: string id: string tableId: string diff --git a/packages/types/src/ui/stores/grid/view.ts b/packages/types/src/ui/stores/grid/view.ts index af214e7d82..f81cc34aaf 100644 --- a/packages/types/src/ui/stores/grid/view.ts +++ b/packages/types/src/ui/stores/grid/view.ts @@ -1,16 +1,6 @@ -import { SortOrder, UISearchFilter } from "@budibase/types" +import { ViewV2 } from "@budibase/types" import { UIFieldSchema } from "./table" -export interface UIView { - type: string - version: 2 - id: string - tableId: string - primaryDisplay?: string +export interface UIView extends ViewV2 { schema: Record - sort?: { - field: string - order: SortOrder - } - queryUI: UISearchFilter } From 69312c31afb7e429dc0afb736c51a570426ef47a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:03:39 +0100 Subject: [PATCH 38/52] Updates --- .../src/components/grid/stores/datasource.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index b60e488db2..ab083f413d 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -5,11 +5,9 @@ import { cloneDeep } from "lodash" import { Row, SaveRowRequest, - SaveTableRequest, UIDatasource, UIFieldMutation, UIFieldSchema, - UpdateViewRequest, ViewV2Type, } from "@budibase/types" import { Store as StoreContext } from "." @@ -195,12 +193,10 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Saves the datasource definition - const saveDefinition = async ( - newDefinition: UpdateViewRequest | SaveTableRequest - ) => { + const saveDefinition = async (newDefinition: UIDatasource) => { // Update local state const originalDefinition = get(definition) - definition.set(newDefinition as any) + definition.set(newDefinition) // Update server if (get(config).canSaveSchema) { From 06feba95ad98d574e3fef76b74fbf5e9e85b4d07 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:14:52 +0100 Subject: [PATCH 39/52] Remove console.log --- packages/frontend-core/src/components/grid/stores/datasource.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index ab083f413d..62c79e8e78 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -169,7 +169,6 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { const getAPI = () => { const $datasource = get(datasource) const type = $datasource?.type - console.error({ type }) if (!type) { return null } From 68eb809d28e58f093f1d20792f2b7d6c569d0a57 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:25:34 +0100 Subject: [PATCH 40/52] Fix "type" conflicts --- .../src/components/grid/stores/datasource.ts | 8 ++++++-- packages/types/src/ui/stores/grid/table.ts | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index 62c79e8e78..ce9f2837bb 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -5,9 +5,11 @@ import { cloneDeep } from "lodash" import { Row, SaveRowRequest, + SaveTableRequest, UIDatasource, UIFieldMutation, UIFieldSchema, + UpdateViewRequest, ViewV2Type, } from "@budibase/types" import { Store as StoreContext } from "." @@ -192,10 +194,12 @@ export const createActions = (context: StoreContext): ActionDatasourceStore => { } // Saves the datasource definition - const saveDefinition = async (newDefinition: UIDatasource) => { + const saveDefinition = async ( + newDefinition: SaveTableRequest | UpdateViewRequest + ) => { // Update local state const originalDefinition = get(definition) - definition.set(newDefinition) + definition.set(newDefinition as UIDatasource) // Update server if (get(config).canSaveSchema) { diff --git a/packages/types/src/ui/stores/grid/table.ts b/packages/types/src/ui/stores/grid/table.ts index 6fae1e908a..a5a13d5fa2 100644 --- a/packages/types/src/ui/stores/grid/table.ts +++ b/packages/types/src/ui/stores/grid/table.ts @@ -4,12 +4,14 @@ import { FieldType, RelationSchemaField, SortOrder, + Table, UISearchFilter, } from "@budibase/types" -export interface UITable { +export interface UITable extends Omit { name: string id: string + type: string tableId: string primaryDisplay?: string sort?: { From f5ebc6b2497bbbbddf5d592209f78e1060fde9e6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:41:17 +0100 Subject: [PATCH 41/52] Type validation --- .../src/components/grid/stores/index.ts | 5 +++- .../stores/{validation.js => validation.ts} | 29 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) rename packages/frontend-core/src/components/grid/stores/{validation.js => validation.ts} (69%) diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index f2b6c973b9..90e89cbf4c 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -60,7 +60,8 @@ export type Store = BaseStore & Table.Store & ViewV2.Store & NonPlus.Store & - Datasource.Store & { + Datasource.Store & + Validation.Store & { // TODO while typing the rest of stores fetch: Writable filter: Writable @@ -76,6 +77,8 @@ export type Store = BaseStore & dispatch: (event: string, data: any) => any notifications: Writable schemaOverrides: Writable + focusedCellId: Writable + previousFocusedRowId: Writable } export const attachStores = (context: Store): Store => { diff --git a/packages/frontend-core/src/components/grid/stores/validation.js b/packages/frontend-core/src/components/grid/stores/validation.ts similarity index 69% rename from packages/frontend-core/src/components/grid/stores/validation.js rename to packages/frontend-core/src/components/grid/stores/validation.ts index 93e67e1d31..32bb1cf978 100644 --- a/packages/frontend-core/src/components/grid/stores/validation.js +++ b/packages/frontend-core/src/components/grid/stores/validation.ts @@ -1,10 +1,21 @@ -import { writable, get, derived } from "svelte/store" +import { writable, get, derived, Writable, Readable } from "svelte/store" +import { Store as StoreContext } from "." import { parseCellID } from "../lib/utils" +interface ValidationStore { + validation: Writable> +} + +interface DerivedValidationStore { + validationRowLookupMap: Readable> +} + +export type Store = ValidationStore & DerivedValidationStore + // Normally we would break out actions into the explicit "createActions" // function, but for validation all these actions are pure so can go into // "createStores" instead to make dependency ordering simpler -export const createStores = () => { +export const createStores = (): ValidationStore => { const validation = writable({}) return { @@ -12,12 +23,12 @@ export const createStores = () => { } } -export const deriveStores = context => { +export const deriveStores = (context: StoreContext): DerivedValidationStore => { const { validation } = context // Derive which rows have errors so that we can use that info later const validationRowLookupMap = derived(validation, $validation => { - let map = {} + const map: Record = {} Object.entries($validation).forEach(([key, error]) => { // Extract row ID from all errored cell IDs if (error) { @@ -36,10 +47,10 @@ export const deriveStores = context => { } } -export const createActions = context => { +export const createActions = (context: StoreContext) => { const { validation, focusedCellId, validationRowLookupMap } = context - const setError = (cellId, error) => { + const setError = (cellId: string | undefined, error: string) => { if (!cellId) { return } @@ -49,11 +60,11 @@ export const createActions = context => { })) } - const rowHasErrors = rowId => { + const rowHasErrors = (rowId: string) => { return get(validationRowLookupMap)[rowId]?.length > 0 } - const focusFirstRowError = rowId => { + const focusFirstRowError = (rowId: string) => { const errorCells = get(validationRowLookupMap)[rowId] const cellId = errorCells?.[0] if (cellId) { @@ -73,7 +84,7 @@ export const createActions = context => { } } -export const initialise = context => { +export const initialise = (context: StoreContext) => { const { validation, previousFocusedRowId, validationRowLookupMap } = context // Remove validation errors when changing rows From ad21b2e1fd10bd9c1ae8e5beeb22e5496a24b0c9 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:54:16 +0100 Subject: [PATCH 42/52] Type user store --- .../src/components/grid/stores/index.ts | 3 +- .../grid/stores/{users.js => users.ts} | 37 +++++++++++++++---- packages/types/src/ui/stores/grid/index.ts | 1 + packages/types/src/ui/stores/grid/user.ts | 6 +++ 4 files changed, 38 insertions(+), 9 deletions(-) rename packages/frontend-core/src/components/grid/stores/{users.js => users.ts} (61%) create mode 100644 packages/types/src/ui/stores/grid/user.ts diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index 90e89cbf4c..8ecbc0e19c 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -61,7 +61,8 @@ export type Store = BaseStore & ViewV2.Store & NonPlus.Store & Datasource.Store & - Validation.Store & { + Validation.Store & + Users.Store & { // TODO while typing the rest of stores fetch: Writable filter: Writable diff --git a/packages/frontend-core/src/components/grid/stores/users.js b/packages/frontend-core/src/components/grid/stores/users.ts similarity index 61% rename from packages/frontend-core/src/components/grid/stores/users.js rename to packages/frontend-core/src/components/grid/stores/users.ts index 64c1e27835..f8824f8329 100644 --- a/packages/frontend-core/src/components/grid/stores/users.js +++ b/packages/frontend-core/src/components/grid/stores/users.ts @@ -1,8 +1,29 @@ -import { writable, get, derived } from "svelte/store" +import { writable, get, derived, Writable, Readable } from "svelte/store" import { helpers } from "@budibase/shared-core" +import { Store as StoreContext } from "." +import { UIUser } from "@budibase/types" -export const createStores = () => { - const users = writable([]) +interface UsersStore { + users: Writable +} + +interface DerivedUsersStore { + userCellMap: Readable> +} + +interface ActionUserStore { + users: UsersStore["users"] & { + actions: { + updateUser: (user: UIUser) => void + removeUser: (sessionId: string) => void + } + } +} + +export type Store = UsersStore & DerivedUsersStore + +export const createStores = (): UsersStore => { + const users = writable([]) const enrichedUsers = derived(users, $users => { return $users.map(user => ({ @@ -20,7 +41,7 @@ export const createStores = () => { } } -export const deriveStores = context => { +export const deriveStores = (context: StoreContext): DerivedUsersStore => { const { users, focusedCellId } = context // Generate a lookup map of cell ID to the user that has it selected, to make @@ -28,7 +49,7 @@ export const deriveStores = context => { const userCellMap = derived( [users, focusedCellId], ([$users, $focusedCellId]) => { - let map = {} + let map: Record = {} $users.forEach(user => { const cellId = user.gridMetadata?.focusedCellId if (cellId && cellId !== $focusedCellId) { @@ -44,10 +65,10 @@ export const deriveStores = context => { } } -export const createActions = context => { +export const createActions = (context: StoreContext): ActionUserStore => { const { users } = context - const updateUser = user => { + const updateUser = (user: UIUser) => { const $users = get(users) if (!$users.some(x => x.sessionId === user.sessionId)) { users.set([...$users, user]) @@ -60,7 +81,7 @@ export const createActions = context => { } } - const removeUser = sessionId => { + const removeUser = (sessionId: string) => { users.update(state => { return state.filter(x => x.sessionId !== sessionId) }) diff --git a/packages/types/src/ui/stores/grid/index.ts b/packages/types/src/ui/stores/grid/index.ts index bcd7e3267d..b6a152ed73 100644 --- a/packages/types/src/ui/stores/grid/index.ts +++ b/packages/types/src/ui/stores/grid/index.ts @@ -2,3 +2,4 @@ export * from "./columns" export * from "./datasource" export * from "./table" export * from "./view" +export * from "./user" diff --git a/packages/types/src/ui/stores/grid/user.ts b/packages/types/src/ui/stores/grid/user.ts new file mode 100644 index 0000000000..b6eb529805 --- /dev/null +++ b/packages/types/src/ui/stores/grid/user.ts @@ -0,0 +1,6 @@ +import { User } from "@budibase/types" + +export interface UIUser extends User { + sessionId: string + gridMetadata?: { focusedCellId?: string } +} From 9d5e7b14a7ac5abfd76ead22bd470c2e4348e248 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 14:07:14 +0100 Subject: [PATCH 43/52] Type menu store --- .../src/components/grid/stores/index.ts | 8 +++++- .../grid/stores/{menu.js => menu.ts} | 26 +++++++++++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) rename packages/frontend-core/src/components/grid/stores/{menu.js => menu.ts} (77%) diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index 8ecbc0e19c..d0413cb80a 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -62,7 +62,8 @@ export type Store = BaseStore & NonPlus.Store & Datasource.Store & Validation.Store & - Users.Store & { + Users.Store & + Menu.Store & { // TODO while typing the rest of stores fetch: Writable filter: Writable @@ -80,6 +81,11 @@ export type Store = BaseStore & schemaOverrides: Writable focusedCellId: Writable previousFocusedRowId: Writable + gridID: string + selectedRows: Writable + selectedRowCount: Writable + selectedCellMap: Writable + selectedCellCount: Writable } export const attachStores = (context: Store): Store => { diff --git a/packages/frontend-core/src/components/grid/stores/menu.js b/packages/frontend-core/src/components/grid/stores/menu.ts similarity index 77% rename from packages/frontend-core/src/components/grid/stores/menu.js rename to packages/frontend-core/src/components/grid/stores/menu.ts index 22bf26fff5..27e41c412b 100644 --- a/packages/frontend-core/src/components/grid/stores/menu.js +++ b/packages/frontend-core/src/components/grid/stores/menu.ts @@ -1,8 +1,24 @@ -import { writable, get } from "svelte/store" +import { writable, get, Writable } from "svelte/store" + +import { Store as StoreContext } from "." import { parseCellID } from "../lib/utils" +interface MenuStoreData { + left: number + top: number + visible: boolean + multiRowMode: boolean + multiCellMode: boolean +} + +interface MenuStore { + menu: Writable +} + +export type Store = MenuStore + export const createStores = () => { - const menu = writable({ + const menu = writable({ left: 0, top: 0, visible: false, @@ -14,7 +30,7 @@ export const createStores = () => { } } -export const createActions = context => { +export const createActions = (context: StoreContext) => { const { menu, focusedCellId, @@ -25,7 +41,7 @@ export const createActions = context => { selectedCellCount, } = context - const open = (cellId, e) => { + const open = (cellId: string, e: MouseEvent) => { e.preventDefault() e.stopPropagation() @@ -37,7 +53,7 @@ export const createActions = context => { } // Compute bounds of cell relative to outer data node - const targetBounds = e.target.getBoundingClientRect() + const targetBounds = (e.target as HTMLElement).getBoundingClientRect() const dataBounds = dataNode.getBoundingClientRect() // Check if there are multiple rows selected, and if this is one of them From 67f511da7285bde76cf8ecf74e6f48bcdcc7b8c4 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 27 Dec 2024 18:25:29 +0100 Subject: [PATCH 44/52] Fix css warnings --- packages/bbui/src/Form/Core/DatePicker/NumberInput.svelte | 1 + packages/bbui/src/Form/Core/Slider.svelte | 1 + packages/bbui/src/Tabs/Tabs.svelte | 2 -- packages/bbui/src/Tooltip/AbsTooltip.svelte | 1 + packages/frontend-core/src/components/grid/cells/AICell.svelte | 1 + .../src/components/grid/cells/LongFormCell.svelte | 1 + .../frontend-core/src/components/grid/cells/TextCell.svelte | 3 +++ 7 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/bbui/src/Form/Core/DatePicker/NumberInput.svelte b/packages/bbui/src/Form/Core/DatePicker/NumberInput.svelte index 6c06ce4e79..84b55c403f 100644 --- a/packages/bbui/src/Form/Core/DatePicker/NumberInput.svelte +++ b/packages/bbui/src/Form/Core/DatePicker/NumberInput.svelte @@ -51,6 +51,7 @@ } input.hide-arrows { -moz-appearance: textfield; + appearance: textfield; } input[type="time"]::-webkit-calendar-picker-indicator { display: none; diff --git a/packages/bbui/src/Form/Core/Slider.svelte b/packages/bbui/src/Form/Core/Slider.svelte index 1a601d0185..0fcadd8bad 100644 --- a/packages/bbui/src/Form/Core/Slider.svelte +++ b/packages/bbui/src/Form/Core/Slider.svelte @@ -39,6 +39,7 @@ padding: 0; margin: 0; -webkit-appearance: none; + appearance: none; background: transparent; } input::-webkit-slider-thumb { diff --git a/packages/bbui/src/Tabs/Tabs.svelte b/packages/bbui/src/Tabs/Tabs.svelte index c94b396398..3955145ad1 100644 --- a/packages/bbui/src/Tabs/Tabs.svelte +++ b/packages/bbui/src/Tabs/Tabs.svelte @@ -124,8 +124,6 @@ .spectrum-Tabs-selectionIndicator.emphasized { background-color: var(--spectrum-global-color-blue-400); } - .spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator { - } .noHorizPadding { padding: 0; } diff --git a/packages/bbui/src/Tooltip/AbsTooltip.svelte b/packages/bbui/src/Tooltip/AbsTooltip.svelte index 4d2399aaf8..b85f4e1c03 100644 --- a/packages/bbui/src/Tooltip/AbsTooltip.svelte +++ b/packages/bbui/src/Tooltip/AbsTooltip.svelte @@ -134,6 +134,7 @@ .spectrum-Tooltip-label { display: -webkit-box; -webkit-line-clamp: 3; + line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: 12px; diff --git a/packages/frontend-core/src/components/grid/cells/AICell.svelte b/packages/frontend-core/src/components/grid/cells/AICell.svelte index 38e81cefd3..b56e67b752 100644 --- a/packages/frontend-core/src/components/grid/cells/AICell.svelte +++ b/packages/frontend-core/src/components/grid/cells/AICell.svelte @@ -73,6 +73,7 @@ .value { display: -webkit-box; -webkit-line-clamp: var(--content-lines); + line-clamp: var(--content-lines); -webkit-box-orient: vertical; overflow: hidden; line-height: 20px; diff --git a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte index 7829e5da7d..80da91e091 100644 --- a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte @@ -93,6 +93,7 @@ .value { display: -webkit-box; -webkit-line-clamp: var(--content-lines); + line-clamp: var(--content-lines); -webkit-box-orient: vertical; overflow: hidden; line-height: 20px; diff --git a/packages/frontend-core/src/components/grid/cells/TextCell.svelte b/packages/frontend-core/src/components/grid/cells/TextCell.svelte index 9275bca3c6..b9a63eb401 100644 --- a/packages/frontend-core/src/components/grid/cells/TextCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/TextCell.svelte @@ -74,12 +74,14 @@ .value { display: -webkit-box; -webkit-line-clamp: var(--content-lines); + line-clamp: var(--content-lines); -webkit-box-orient: vertical; overflow: hidden; line-height: 20px; } .number .value { -webkit-line-clamp: 1; + line-clamp: 1; } input { flex: 1 1 auto; @@ -110,5 +112,6 @@ } input[type="number"] { -moz-appearance: textfield; + appearance: textfield; } From 6aedc253924ef8e863e3da41ec707bb7574f6c43 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Sun, 29 Dec 2024 12:50:17 +0100 Subject: [PATCH 45/52] Fix wrong "in" of undefined --- .../frontend-core/src/components/grid/stores/datasource.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/datasource.ts b/packages/frontend-core/src/components/grid/stores/datasource.ts index ce9f2837bb..7aee6e8515 100644 --- a/packages/frontend-core/src/components/grid/stores/datasource.ts +++ b/packages/frontend-core/src/components/grid/stores/datasource.ts @@ -133,11 +133,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => { type = ($datasource as any).value?.datasource?.type } // Handle calculation views - if ( - type === "viewV2" && - "type" in $definition && - $definition?.type === ViewV2Type.CALCULATION - ) { + if (type === "viewV2" && $definition?.type === ViewV2Type.CALCULATION) { return false } return ["table", "viewV2", "link"].includes(type) From 342503700a563cd12364c477d84d88f78e050803 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 30 Dec 2024 09:06:12 +0000 Subject: [PATCH 46/52] convert more stores to ts --- .../src/stores/builder/{app.js => app.ts} | 73 ++++++++++++++++--- 1 file changed, 62 insertions(+), 11 deletions(-) rename packages/builder/src/stores/builder/{app.js => app.ts} (55%) diff --git a/packages/builder/src/stores/builder/app.js b/packages/builder/src/stores/builder/app.ts similarity index 55% rename from packages/builder/src/stores/builder/app.js rename to packages/builder/src/stores/builder/app.ts index 3b9e4e0b3c..f98e79eff1 100644 --- a/packages/builder/src/stores/builder/app.js +++ b/packages/builder/src/stores/builder/app.ts @@ -1,7 +1,54 @@ import { API } from "api" import { BudiStore } from "../BudiStore" +import { + App, + AppFeatures, + AppIcon, + AutomationSettings, + Plugin, +} from "@budibase/types" -export const INITIAL_APP_META_STATE = { +interface ClientFeatures { + spectrumThemes: boolean + intelligentLoading: boolean + deviceAwareness: boolean + state: boolean + rowSelection: boolean + customThemes: boolean + devicePreview: boolean + messagePassing: boolean + continueIfAction: boolean + showNotificationAction: boolean + sidePanel: boolean +} + +interface TypeSupportPresets { + [key: string]: any +} + +interface AppMetaState { + appId: string + name: string + url: string + libraries: string[] + clientFeatures: ClientFeatures + typeSupportPresets: TypeSupportPresets + features: AppFeatures + clientLibPath: string + hasLock: boolean + appInstance: { _id: string } | null + initialised: boolean + hasAppPackage: boolean + usedPlugins: Plugin[] | null + automations: AutomationSettings + routes: { [key: string]: any } + version?: string + revertableVersion?: string + upgradableVersion?: string + icon?: AppIcon +} + +export const INITIAL_APP_META_STATE: AppMetaState = { appId: "", name: "", url: "", @@ -34,23 +81,27 @@ export const INITIAL_APP_META_STATE = { routes: {}, } -export class AppMetaStore extends BudiStore { +export class AppMetaStore extends BudiStore { constructor() { super(INITIAL_APP_META_STATE) } - reset() { + reset(): void { this.store.set({ ...INITIAL_APP_META_STATE }) } - syncAppPackage(pkg) { + syncAppPackage(pkg: { + application: App + clientLibPath: string + hasLock: boolean + }): void { const { application: app, clientLibPath, hasLock } = pkg this.update(state => ({ ...state, name: app.name, appId: app.appId, - url: app.url, + url: app.url || "", hasLock, clientLibPath, libraries: app.componentLibraries, @@ -58,8 +109,8 @@ export class AppMetaStore extends BudiStore { appInstance: app.instance, revertableVersion: app.revertableVersion, upgradableVersion: app.upgradableVersion, - usedPlugins: app.usedPlugins, - icon: app.icon || {}, + usedPlugins: app.usedPlugins || null, + icon: app.icon, features: { ...INITIAL_APP_META_STATE.features, ...app.features, @@ -70,7 +121,7 @@ export class AppMetaStore extends BudiStore { })) } - syncClientFeatures(features) { + syncClientFeatures(features: Partial): void { this.update(state => ({ ...state, clientFeatures: { @@ -80,14 +131,14 @@ export class AppMetaStore extends BudiStore { })) } - syncClientTypeSupportPresets(typeSupportPresets) { + syncClientTypeSupportPresets(typeSupportPresets: TypeSupportPresets): void { this.update(state => ({ ...state, typeSupportPresets, })) } - async syncAppRoutes() { + async syncAppRoutes(): Promise { const resp = await API.fetchAppRoutes() this.update(state => ({ ...state, @@ -96,7 +147,7 @@ export class AppMetaStore extends BudiStore { } // Returned from socket - syncMetadata(metadata) { + syncMetadata(metadata: { name: string; url: string; icon?: AppIcon }): void { const { name, url, icon } = metadata this.update(state => ({ ...state, From 6e6c25e15e988dc9d574158aeaf5e3e1dba45676 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 30 Dec 2024 09:08:51 +0000 Subject: [PATCH 47/52] migrate builder.js to ts --- .../stores/builder/{builder.js => builder.ts} | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) rename packages/builder/src/stores/builder/{builder.js => builder.ts} (67%) diff --git a/packages/builder/src/stores/builder/builder.js b/packages/builder/src/stores/builder/builder.ts similarity index 67% rename from packages/builder/src/stores/builder/builder.js rename to packages/builder/src/stores/builder/builder.ts index 9b5a847680..472abe7c66 100644 --- a/packages/builder/src/stores/builder/builder.js +++ b/packages/builder/src/stores/builder/builder.ts @@ -3,8 +3,25 @@ import { createBuilderWebsocket } from "./websocket.js" import { BuilderSocketEvent } from "@budibase/shared-core" import { BudiStore } from "../BudiStore.js" import { TOUR_KEYS } from "components/portal/onboarding/tours.js" +import { App } from "@budibase/types" -export const INITIAL_BUILDER_STATE = { +interface BuilderState { + previousTopNavPath: Record + highlightedSetting: { + key: string + type: "info" | string + } | null + propertyFocus: string | null + builderSidePanel: boolean + onboarding: boolean + tourNodes: Record | null + tourKey: string | null + tourStepKey: string | null + hoveredComponentId: string | null + websocket?: ReturnType +} + +export const INITIAL_BUILDER_STATE: BuilderState = { previousTopNavPath: {}, highlightedSetting: null, propertyFocus: null, @@ -16,7 +33,9 @@ export const INITIAL_BUILDER_STATE = { hoveredComponentId: null, } -export class BuilderStore extends BudiStore { +export class BuilderStore extends BudiStore { + websocket?: ReturnType + constructor() { super({ ...INITIAL_BUILDER_STATE }) @@ -32,11 +51,9 @@ export class BuilderStore extends BudiStore { this.registerTourNode = this.registerTourNode.bind(this) this.destroyTourNode = this.destroyTourNode.bind(this) this.startBuilderOnboarding = this.startBuilderOnboarding.bind(this) - - this.websocket } - init(app) { + init(app: App): void { if (!app?.appId) { console.error("BuilderStore: No appId supplied for websocket") return @@ -46,45 +63,46 @@ export class BuilderStore extends BudiStore { } } - refresh() { - this.store.set(this.store.get()) + refresh(): void { + const currentState = get(this.store) + this.store.set(currentState) } - reset() { + reset(): void { this.store.set({ ...INITIAL_BUILDER_STATE }) this.websocket?.disconnect() - this.websocket = null + this.websocket = undefined } - highlightSetting(key, type) { + highlightSetting(key?: string, type?: string): void { this.update(state => ({ ...state, highlightedSetting: key ? { key, type: type || "info" } : null, })) } - propertyFocus(key) { + propertyFocus(key: string | null): void { this.update(state => ({ ...state, propertyFocus: key, })) } - showBuilderSidePanel() { + showBuilderSidePanel(): void { this.update(state => ({ ...state, builderSidePanel: true, })) } - hideBuilderSidePanel() { + hideBuilderSidePanel(): void { this.update(state => ({ ...state, builderSidePanel: false, })) } - setPreviousTopNavPath(route, url) { + setPreviousTopNavPath(route: string, url: string): void { this.update(state => ({ ...state, previousTopNavPath: { @@ -94,13 +112,13 @@ export class BuilderStore extends BudiStore { })) } - selectResource(id) { - this.websocket.emit(BuilderSocketEvent.SelectResource, { + selectResource(id: string): void { + this.websocket?.emit(BuilderSocketEvent.SelectResource, { resourceId: id, }) } - registerTourNode(tourStepKey, node) { + registerTourNode(tourStepKey: string, node: HTMLElement): void { this.update(state => { const update = { ...state, @@ -113,7 +131,7 @@ export class BuilderStore extends BudiStore { }) } - destroyTourNode(tourStepKey) { + destroyTourNode(tourStepKey: string): void { const store = get(this.store) if (store.tourNodes?.[tourStepKey]) { const nodes = { ...store.tourNodes } @@ -125,7 +143,7 @@ export class BuilderStore extends BudiStore { } } - startBuilderOnboarding() { + startBuilderOnboarding(): void { this.update(state => ({ ...state, onboarding: true, @@ -133,19 +151,19 @@ export class BuilderStore extends BudiStore { })) } - endBuilderOnboarding() { + endBuilderOnboarding(): void { this.update(state => ({ ...state, onboarding: false, })) } - setTour(tourKey) { + setTour(tourKey?: string | null): void { this.update(state => ({ ...state, tourStepKey: null, tourNodes: null, - tourKey: tourKey, + tourKey: tourKey || null, })) } } From a94adced72589e1f66249b6afb9d0416613bd674 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 30 Dec 2024 09:27:22 +0000 Subject: [PATCH 48/52] contextmenu and deployment --- .../builder/src/stores/builder/contextMenu.js | 28 ----------- .../builder/src/stores/builder/contextMenu.ts | 46 +++++++++++++++++++ .../{deployments.js => deployments.ts} | 7 +-- 3 files changed, 50 insertions(+), 31 deletions(-) delete mode 100644 packages/builder/src/stores/builder/contextMenu.js create mode 100644 packages/builder/src/stores/builder/contextMenu.ts rename packages/builder/src/stores/builder/{deployments.js => deployments.ts} (62%) diff --git a/packages/builder/src/stores/builder/contextMenu.js b/packages/builder/src/stores/builder/contextMenu.js deleted file mode 100644 index 2b8808570e..0000000000 --- a/packages/builder/src/stores/builder/contextMenu.js +++ /dev/null @@ -1,28 +0,0 @@ -import { writable } from "svelte/store" - -export const INITIAL_CONTEXT_MENU_STATE = { - id: null, - items: [], - position: { x: 0, y: 0 }, - visible: false, -} - -export function createViewsStore() { - const store = writable({ ...INITIAL_CONTEXT_MENU_STATE }) - - const open = (id, items, position) => { - store.set({ id, items, position, visible: true }) - } - - const close = () => { - store.set({ ...INITIAL_CONTEXT_MENU_STATE }) - } - - return { - subscribe: store.subscribe, - open, - close, - } -} - -export const contextMenuStore = createViewsStore() diff --git a/packages/builder/src/stores/builder/contextMenu.ts b/packages/builder/src/stores/builder/contextMenu.ts new file mode 100644 index 0000000000..dc205c7fea --- /dev/null +++ b/packages/builder/src/stores/builder/contextMenu.ts @@ -0,0 +1,46 @@ +import { writable } from "svelte/store" + +interface Position { + x: number + y: number +} + +interface MenuItem { + label: string + icon?: string + action: () => void +} + +interface ContextMenuState { + id: string | null + items: MenuItem[] + position: Position + visible: boolean +} + +export const INITIAL_CONTEXT_MENU_STATE: ContextMenuState = { + id: null, + items: [], + position: { x: 0, y: 0 }, + visible: false, +} + +export function createViewsStore() { + const store = writable({ ...INITIAL_CONTEXT_MENU_STATE }) + + const open = (id: string, items: MenuItem[], position: Position): void => { + store.set({ id, items, position, visible: true }) + } + + const close = (): void => { + store.set({ ...INITIAL_CONTEXT_MENU_STATE }) + } + + return { + subscribe: store.subscribe, + open, + close, + } +} + +export const contextMenuStore = createViewsStore() diff --git a/packages/builder/src/stores/builder/deployments.js b/packages/builder/src/stores/builder/deployments.ts similarity index 62% rename from packages/builder/src/stores/builder/deployments.js rename to packages/builder/src/stores/builder/deployments.ts index dafdb1dabc..130e52bc91 100644 --- a/packages/builder/src/stores/builder/deployments.js +++ b/packages/builder/src/stores/builder/deployments.ts @@ -1,11 +1,12 @@ -import { writable } from "svelte/store" +import { writable, type Writable } from "svelte/store" import { API } from "api" import { notifications } from "@budibase/bbui" +import { DeploymentProgressResponse } from "@budibase/types" export const createDeploymentStore = () => { - let store = writable([]) + let store: Writable = writable([]) - const load = async () => { + const load = async (): Promise => { try { store.set(await API.getAppDeployments()) } catch (err) { From 5c3922219fa132aefd004bc7dd214559237e80d0 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 24 Dec 2024 13:41:17 +0100 Subject: [PATCH 49/52] Type validation --- .../src/components/grid/stores/index.ts | 5 +++- .../stores/{validation.js => validation.ts} | 29 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) rename packages/frontend-core/src/components/grid/stores/{validation.js => validation.ts} (69%) diff --git a/packages/frontend-core/src/components/grid/stores/index.ts b/packages/frontend-core/src/components/grid/stores/index.ts index f2b6c973b9..90e89cbf4c 100644 --- a/packages/frontend-core/src/components/grid/stores/index.ts +++ b/packages/frontend-core/src/components/grid/stores/index.ts @@ -60,7 +60,8 @@ export type Store = BaseStore & Table.Store & ViewV2.Store & NonPlus.Store & - Datasource.Store & { + Datasource.Store & + Validation.Store & { // TODO while typing the rest of stores fetch: Writable filter: Writable @@ -76,6 +77,8 @@ export type Store = BaseStore & dispatch: (event: string, data: any) => any notifications: Writable schemaOverrides: Writable + focusedCellId: Writable + previousFocusedRowId: Writable } export const attachStores = (context: Store): Store => { diff --git a/packages/frontend-core/src/components/grid/stores/validation.js b/packages/frontend-core/src/components/grid/stores/validation.ts similarity index 69% rename from packages/frontend-core/src/components/grid/stores/validation.js rename to packages/frontend-core/src/components/grid/stores/validation.ts index 93e67e1d31..32bb1cf978 100644 --- a/packages/frontend-core/src/components/grid/stores/validation.js +++ b/packages/frontend-core/src/components/grid/stores/validation.ts @@ -1,10 +1,21 @@ -import { writable, get, derived } from "svelte/store" +import { writable, get, derived, Writable, Readable } from "svelte/store" +import { Store as StoreContext } from "." import { parseCellID } from "../lib/utils" +interface ValidationStore { + validation: Writable> +} + +interface DerivedValidationStore { + validationRowLookupMap: Readable> +} + +export type Store = ValidationStore & DerivedValidationStore + // Normally we would break out actions into the explicit "createActions" // function, but for validation all these actions are pure so can go into // "createStores" instead to make dependency ordering simpler -export const createStores = () => { +export const createStores = (): ValidationStore => { const validation = writable({}) return { @@ -12,12 +23,12 @@ export const createStores = () => { } } -export const deriveStores = context => { +export const deriveStores = (context: StoreContext): DerivedValidationStore => { const { validation } = context // Derive which rows have errors so that we can use that info later const validationRowLookupMap = derived(validation, $validation => { - let map = {} + const map: Record = {} Object.entries($validation).forEach(([key, error]) => { // Extract row ID from all errored cell IDs if (error) { @@ -36,10 +47,10 @@ export const deriveStores = context => { } } -export const createActions = context => { +export const createActions = (context: StoreContext) => { const { validation, focusedCellId, validationRowLookupMap } = context - const setError = (cellId, error) => { + const setError = (cellId: string | undefined, error: string) => { if (!cellId) { return } @@ -49,11 +60,11 @@ export const createActions = context => { })) } - const rowHasErrors = rowId => { + const rowHasErrors = (rowId: string) => { return get(validationRowLookupMap)[rowId]?.length > 0 } - const focusFirstRowError = rowId => { + const focusFirstRowError = (rowId: string) => { const errorCells = get(validationRowLookupMap)[rowId] const cellId = errorCells?.[0] if (cellId) { @@ -73,7 +84,7 @@ export const createActions = context => { } } -export const initialise = context => { +export const initialise = (context: StoreContext) => { const { validation, previousFocusedRowId, validationRowLookupMap } = context // Remove validation errors when changing rows From c30c68c289e324d3c111ba60753b07db8013e388 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 30 Dec 2024 12:16:02 +0000 Subject: [PATCH 50/52] socket expects undefined instead of null --- packages/builder/src/stores/builder/builder.ts | 5 +++-- packages/builder/src/stores/builder/tests/builder.test.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/stores/builder/builder.ts b/packages/builder/src/stores/builder/builder.ts index 472abe7c66..00f6c5fce7 100644 --- a/packages/builder/src/stores/builder/builder.ts +++ b/packages/builder/src/stores/builder/builder.ts @@ -1,5 +1,6 @@ import { get } from "svelte/store" import { createBuilderWebsocket } from "./websocket.js" +import { Socket } from "socket.io-client" import { BuilderSocketEvent } from "@budibase/shared-core" import { BudiStore } from "../BudiStore.js" import { TOUR_KEYS } from "components/portal/onboarding/tours.js" @@ -18,7 +19,7 @@ interface BuilderState { tourKey: string | null tourStepKey: string | null hoveredComponentId: string | null - websocket?: ReturnType + websocket?: Socket } export const INITIAL_BUILDER_STATE: BuilderState = { @@ -34,7 +35,7 @@ export const INITIAL_BUILDER_STATE: BuilderState = { } export class BuilderStore extends BudiStore { - websocket?: ReturnType + websocket?: Socket constructor() { super({ ...INITIAL_BUILDER_STATE }) diff --git a/packages/builder/src/stores/builder/tests/builder.test.js b/packages/builder/src/stores/builder/tests/builder.test.js index e6f52689aa..f3c42dae72 100644 --- a/packages/builder/src/stores/builder/tests/builder.test.js +++ b/packages/builder/src/stores/builder/tests/builder.test.js @@ -65,7 +65,7 @@ describe("Builder store", () => { ctx.test.builderStore.reset() expect(disconnected).toBe(true) expect(ctx.test.store).toStrictEqual(INITIAL_BUILDER_STATE) - expect(ctx.test.builderStore.websocket).toBeNull() + expect(ctx.test.builderStore.websocket).toBeUndefined() }) it("Attempt to emit a resource select event to the websocket on select", ctx => { From 430431203b0f469c28a7bf198d9827a9345502f6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 30 Dec 2024 14:25:23 +0100 Subject: [PATCH 51/52] Typed enriched users --- .../src/components/grid/stores/users.ts | 17 +++++++++-------- packages/types/src/ui/stores/grid/user.ts | 5 +++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/users.ts b/packages/frontend-core/src/components/grid/stores/users.ts index f8824f8329..dcac940088 100644 --- a/packages/frontend-core/src/components/grid/stores/users.ts +++ b/packages/frontend-core/src/components/grid/stores/users.ts @@ -1,7 +1,7 @@ import { writable, get, derived, Writable, Readable } from "svelte/store" import { helpers } from "@budibase/shared-core" import { Store as StoreContext } from "." -import { UIUser } from "@budibase/types" +import { UIEnrichedUser, UIUser } from "@budibase/types" interface UsersStore { users: Writable @@ -12,21 +12,22 @@ interface DerivedUsersStore { } interface ActionUserStore { - users: UsersStore["users"] & { - actions: { - updateUser: (user: UIUser) => void - removeUser: (sessionId: string) => void + users: UsersStore["users"] & + Readable & { + actions: { + updateUser: (user: UIUser) => void + removeUser: (sessionId: string) => void + } } - } } -export type Store = UsersStore & DerivedUsersStore +export type Store = DerivedUsersStore & ActionUserStore export const createStores = (): UsersStore => { const users = writable([]) const enrichedUsers = derived(users, $users => { - return $users.map(user => ({ + return $users.map(user => ({ ...user, color: helpers.getUserColor(user), label: helpers.getUserLabel(user), diff --git a/packages/types/src/ui/stores/grid/user.ts b/packages/types/src/ui/stores/grid/user.ts index b6eb529805..225c232d3d 100644 --- a/packages/types/src/ui/stores/grid/user.ts +++ b/packages/types/src/ui/stores/grid/user.ts @@ -4,3 +4,8 @@ export interface UIUser extends User { sessionId: string gridMetadata?: { focusedCellId?: string } } + +export interface UIEnrichedUser extends UIUser { + color: string + label: string +} From cca22fe8644a8106cfbb579d8fa51fb8e1037eda Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 30 Dec 2024 14:49:36 +0100 Subject: [PATCH 52/52] Move type --- packages/frontend-core/src/components/grid/stores/users.ts | 7 ++++++- packages/types/src/ui/stores/grid/user.ts | 5 ----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/frontend-core/src/components/grid/stores/users.ts b/packages/frontend-core/src/components/grid/stores/users.ts index dcac940088..b3dffbcb1b 100644 --- a/packages/frontend-core/src/components/grid/stores/users.ts +++ b/packages/frontend-core/src/components/grid/stores/users.ts @@ -1,7 +1,12 @@ import { writable, get, derived, Writable, Readable } from "svelte/store" import { helpers } from "@budibase/shared-core" import { Store as StoreContext } from "." -import { UIEnrichedUser, UIUser } from "@budibase/types" +import { UIUser } from "@budibase/types" + +interface UIEnrichedUser extends UIUser { + color: string + label: string +} interface UsersStore { users: Writable diff --git a/packages/types/src/ui/stores/grid/user.ts b/packages/types/src/ui/stores/grid/user.ts index 225c232d3d..b6eb529805 100644 --- a/packages/types/src/ui/stores/grid/user.ts +++ b/packages/types/src/ui/stores/grid/user.ts @@ -4,8 +4,3 @@ export interface UIUser extends User { sessionId: string gridMetadata?: { focusedCellId?: string } } - -export interface UIEnrichedUser extends UIUser { - color: string - label: string -}