Some minor updates after running qa-core tests, found some issues that likely exists before context update.
This commit is contained in:
parent
31c198888a
commit
0d13a77409
|
@ -26,7 +26,7 @@ export * from "./tenancy"
|
||||||
* Generates a new app ID.
|
* Generates a new app ID.
|
||||||
* @returns {string} The new app ID which the app doc can be stored under.
|
* @returns {string} The new app ID which the app doc can be stored under.
|
||||||
*/
|
*/
|
||||||
export const generateAppID = (tenantId = null) => {
|
export const generateAppID = (tenantId?: string | null) => {
|
||||||
let id = APP_PREFIX
|
let id = APP_PREFIX
|
||||||
if (tenantId) {
|
if (tenantId) {
|
||||||
id += `${tenantId}${SEPARATOR}`
|
id += `${tenantId}${SEPARATOR}`
|
||||||
|
@ -251,7 +251,7 @@ export function generateRoleID(id: any) {
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving a role, this is a utility function for the getDocParams function.
|
* Gets parameters for retrieving a role, this is a utility function for the getDocParams function.
|
||||||
*/
|
*/
|
||||||
export function getRoleParams(roleId = null, otherProps = {}) {
|
export function getRoleParams(roleId?: string | null, otherProps = {}) {
|
||||||
return getDocParams(DocumentType.ROLE, roleId, otherProps)
|
return getDocParams(DocumentType.ROLE, roleId, otherProps)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,17 +14,16 @@ import {
|
||||||
DocumentType,
|
DocumentType,
|
||||||
AppStatus,
|
AppStatus,
|
||||||
} from "../../db/utils"
|
} from "../../db/utils"
|
||||||
const {
|
import {
|
||||||
BUILTIN_ROLE_IDS,
|
db as dbCore,
|
||||||
AccessController,
|
roles,
|
||||||
} = require("@budibase/backend-core/roles")
|
cache,
|
||||||
const { CacheKeys, bustCache } = require("@budibase/backend-core/cache")
|
tenancy,
|
||||||
const {
|
context,
|
||||||
getAllApps,
|
errors,
|
||||||
isDevAppID,
|
events,
|
||||||
getProdAppID,
|
migrations,
|
||||||
Replication,
|
} from "@budibase/backend-core"
|
||||||
} = require("@budibase/backend-core/db")
|
|
||||||
import { USERS_TABLE_SCHEMA } from "../../constants"
|
import { USERS_TABLE_SCHEMA } from "../../constants"
|
||||||
import { removeAppFromUserRoles } from "../../utilities/workerRequests"
|
import { removeAppFromUserRoles } from "../../utilities/workerRequests"
|
||||||
import { clientLibraryPath, stringToReadStream } from "../../utilities"
|
import { clientLibraryPath, stringToReadStream } from "../../utilities"
|
||||||
|
@ -34,15 +33,11 @@ import {
|
||||||
backupClientLibrary,
|
backupClientLibrary,
|
||||||
revertClientLibrary,
|
revertClientLibrary,
|
||||||
} from "../../utilities/fileSystem/clientLibrary"
|
} from "../../utilities/fileSystem/clientLibrary"
|
||||||
const { getTenantId, isMultiTenant } = require("@budibase/backend-core/tenancy")
|
|
||||||
import { syncGlobalUsers } from "./user"
|
import { syncGlobalUsers } from "./user"
|
||||||
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
||||||
import { cleanupAutomations } from "../../automations/utils"
|
import { cleanupAutomations } from "../../automations/utils"
|
||||||
import { context } from "@budibase/backend-core"
|
|
||||||
import { checkAppMetadata } from "../../automations/logging"
|
import { checkAppMetadata } from "../../automations/logging"
|
||||||
import { getUniqueRows } from "../../utilities/usageQuota/rows"
|
import { getUniqueRows } from "../../utilities/usageQuota/rows"
|
||||||
import { quotas, groups } from "@budibase/pro"
|
import { quotas, groups } from "@budibase/pro"
|
||||||
import { errors, events, migrations } from "@budibase/backend-core"
|
|
||||||
import { App, Layout, Screen, MigrationType } from "@budibase/types"
|
import { App, Layout, Screen, MigrationType } from "@budibase/types"
|
||||||
import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
|
import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
|
||||||
import { enrichPluginURLs } from "../../utilities/plugins"
|
import { enrichPluginURLs } from "../../utilities/plugins"
|
||||||
|
@ -75,7 +70,7 @@ async function getScreens() {
|
||||||
|
|
||||||
function getUserRoleId(ctx: any) {
|
function getUserRoleId(ctx: any) {
|
||||||
return !ctx.user.role || !ctx.user.role._id
|
return !ctx.user.role || !ctx.user.role._id
|
||||||
? BUILTIN_ROLE_IDS.PUBLIC
|
? roles.BUILTIN_ROLE_IDS.PUBLIC
|
||||||
: ctx.user.role._id
|
: ctx.user.role._id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +118,7 @@ const checkAppName = (
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createInstance(template: any) {
|
async function createInstance(template: any) {
|
||||||
const tenantId = isMultiTenant() ? getTenantId() : null
|
const tenantId = tenancy.isMultiTenant() ? tenancy.getTenantId() : null
|
||||||
const baseAppId = generateAppID(tenantId)
|
const baseAppId = generateAppID(tenantId)
|
||||||
const appId = generateDevAppID(baseAppId)
|
const appId = generateDevAppID(baseAppId)
|
||||||
await context.updateAppId(appId)
|
await context.updateAppId(appId)
|
||||||
|
@ -162,7 +157,7 @@ async function createInstance(template: any) {
|
||||||
export const fetch = async (ctx: any) => {
|
export const fetch = async (ctx: any) => {
|
||||||
const dev = ctx.query && ctx.query.status === AppStatus.DEV
|
const dev = ctx.query && ctx.query.status === AppStatus.DEV
|
||||||
const all = ctx.query && ctx.query.status === AppStatus.ALL
|
const all = ctx.query && ctx.query.status === AppStatus.ALL
|
||||||
const apps = await getAllApps({ dev, all })
|
const apps = (await dbCore.getAllApps({ dev, all })) as App[]
|
||||||
|
|
||||||
const appIds = apps
|
const appIds = apps
|
||||||
.filter((app: any) => app.status === "development")
|
.filter((app: any) => app.status === "development")
|
||||||
|
@ -187,7 +182,7 @@ export const fetch = async (ctx: any) => {
|
||||||
export const fetchAppDefinition = async (ctx: any) => {
|
export const fetchAppDefinition = async (ctx: any) => {
|
||||||
const layouts = await getLayouts()
|
const layouts = await getLayouts()
|
||||||
const userRoleId = getUserRoleId(ctx)
|
const userRoleId = getUserRoleId(ctx)
|
||||||
const accessController = new AccessController()
|
const accessController = new roles.AccessController()
|
||||||
const screens = await accessController.checkScreensAccess(
|
const screens = await accessController.checkScreensAccess(
|
||||||
await getScreens(),
|
await getScreens(),
|
||||||
userRoleId
|
userRoleId
|
||||||
|
@ -211,7 +206,7 @@ export const fetchAppPackage = async (ctx: any) => {
|
||||||
// Only filter screens if the user is not a builder
|
// Only filter screens if the user is not a builder
|
||||||
if (!(ctx.user.builder && ctx.user.builder.global)) {
|
if (!(ctx.user.builder && ctx.user.builder.global)) {
|
||||||
const userRoleId = getUserRoleId(ctx)
|
const userRoleId = getUserRoleId(ctx)
|
||||||
const accessController = new AccessController()
|
const accessController = new roles.AccessController()
|
||||||
screens = await accessController.checkScreensAccess(screens, userRoleId)
|
screens = await accessController.checkScreensAccess(screens, userRoleId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +219,7 @@ export const fetchAppPackage = async (ctx: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const performAppCreate = async (ctx: any) => {
|
const performAppCreate = async (ctx: any) => {
|
||||||
const apps = await getAllApps({ dev: true })
|
const apps = await dbCore.getAllApps({ dev: true })
|
||||||
const name = ctx.request.body.name
|
const name = ctx.request.body.name
|
||||||
checkAppName(ctx, apps, name)
|
checkAppName(ctx, apps, name)
|
||||||
const url = getAppUrl(ctx)
|
const url = getAppUrl(ctx)
|
||||||
|
@ -254,7 +249,7 @@ const performAppCreate = async (ctx: any) => {
|
||||||
url: url,
|
url: url,
|
||||||
template: templateKey,
|
template: templateKey,
|
||||||
instance,
|
instance,
|
||||||
tenantId: getTenantId(),
|
tenantId: tenancy.getTenantId(),
|
||||||
updatedAt: new Date().toISOString(),
|
updatedAt: new Date().toISOString(),
|
||||||
createdAt: new Date().toISOString(),
|
createdAt: new Date().toISOString(),
|
||||||
status: AppStatus.DEV,
|
status: AppStatus.DEV,
|
||||||
|
@ -313,7 +308,7 @@ const performAppCreate = async (ctx: any) => {
|
||||||
await createApp(appId)
|
await createApp(appId)
|
||||||
}
|
}
|
||||||
|
|
||||||
await appCache.invalidateAppMetadata(appId, newApplication)
|
await cache.app.invalidateAppMetadata(appId, newApplication)
|
||||||
return newApplication
|
return newApplication
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +338,7 @@ const creationEvents = async (request: any, app: App) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const appPostCreate = async (ctx: any, app: App) => {
|
const appPostCreate = async (ctx: any, app: App) => {
|
||||||
const tenantId = getTenantId()
|
const tenantId = tenancy.getTenantId()
|
||||||
await migrations.backPopulateMigrations({
|
await migrations.backPopulateMigrations({
|
||||||
type: MigrationType.APP,
|
type: MigrationType.APP,
|
||||||
tenantId,
|
tenantId,
|
||||||
|
@ -356,7 +351,9 @@ const appPostCreate = async (ctx: any, app: App) => {
|
||||||
const rowCount = rows ? rows.length : 0
|
const rowCount = rows ? rows.length : 0
|
||||||
if (rowCount) {
|
if (rowCount) {
|
||||||
try {
|
try {
|
||||||
await quotas.addRows(rowCount)
|
await context.doInAppContext(app.appId, () => {
|
||||||
|
return quotas.addRows(rowCount)
|
||||||
|
})
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
if (err.code && err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {
|
if (err.code && err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {
|
||||||
// this import resulted in row usage exceeding the quota
|
// this import resulted in row usage exceeding the quota
|
||||||
|
@ -374,7 +371,7 @@ const appPostCreate = async (ctx: any, app: App) => {
|
||||||
export const create = async (ctx: any) => {
|
export const create = async (ctx: any) => {
|
||||||
const newApplication = await quotas.addApp(() => performAppCreate(ctx))
|
const newApplication = await quotas.addApp(() => performAppCreate(ctx))
|
||||||
await appPostCreate(ctx, newApplication)
|
await appPostCreate(ctx, newApplication)
|
||||||
await bustCache(CacheKeys.CHECKLIST)
|
await cache.bustCache(cache.CacheKeys.CHECKLIST)
|
||||||
ctx.body = newApplication
|
ctx.body = newApplication
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
}
|
}
|
||||||
|
@ -382,7 +379,7 @@ export const create = async (ctx: any) => {
|
||||||
// This endpoint currently operates as a PATCH rather than a PUT
|
// This endpoint currently operates as a PATCH rather than a PUT
|
||||||
// Thus name and url fields are handled only if present
|
// Thus name and url fields are handled only if present
|
||||||
export const update = async (ctx: any) => {
|
export const update = async (ctx: any) => {
|
||||||
const apps = await getAllApps({ dev: true })
|
const apps = await dbCore.getAllApps({ dev: true })
|
||||||
// validation
|
// validation
|
||||||
const name = ctx.request.body.name
|
const name = ctx.request.body.name
|
||||||
if (name) {
|
if (name) {
|
||||||
|
@ -455,7 +452,7 @@ const destroyApp = async (ctx: any) => {
|
||||||
let isUnpublish = ctx.query && ctx.query.unpublish
|
let isUnpublish = ctx.query && ctx.query.unpublish
|
||||||
|
|
||||||
if (isUnpublish) {
|
if (isUnpublish) {
|
||||||
appId = getProdAppID(appId)
|
appId = dbCore.getProdAppID(appId)
|
||||||
}
|
}
|
||||||
|
|
||||||
const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
|
const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
|
||||||
|
@ -481,7 +478,7 @@ const destroyApp = async (ctx: any) => {
|
||||||
else {
|
else {
|
||||||
await removeAppFromUserRoles(ctx, appId)
|
await removeAppFromUserRoles(ctx, appId)
|
||||||
}
|
}
|
||||||
await appCache.invalidateAppMetadata(appId)
|
await cache.app.invalidateAppMetadata(appId)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,12 +514,12 @@ export const sync = async (ctx: any, next: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const appId = ctx.params.appId
|
const appId = ctx.params.appId
|
||||||
if (!isDevAppID(appId)) {
|
if (!dbCore.isDevAppID(appId)) {
|
||||||
ctx.throw(400, "This action cannot be performed for production apps")
|
ctx.throw(400, "This action cannot be performed for production apps")
|
||||||
}
|
}
|
||||||
|
|
||||||
// replicate prod to dev
|
// replicate prod to dev
|
||||||
const prodAppId = getProdAppID(appId)
|
const prodAppId = dbCore.getProdAppID(appId)
|
||||||
|
|
||||||
// specific case, want to make sure setup is skipped
|
// specific case, want to make sure setup is skipped
|
||||||
const prodDb = context.getProdAppDB({ skip_setup: true })
|
const prodDb = context.getProdAppDB({ skip_setup: true })
|
||||||
|
@ -536,7 +533,7 @@ export const sync = async (ctx: any, next: any) => {
|
||||||
return next()
|
return next()
|
||||||
}
|
}
|
||||||
|
|
||||||
const replication = new Replication({
|
const replication = new dbCore.Replication({
|
||||||
source: prodAppId,
|
source: prodAppId,
|
||||||
target: appId,
|
target: appId,
|
||||||
})
|
})
|
||||||
|
@ -577,7 +574,7 @@ export const updateAppPackage = async (appPackage: any, appId: any) => {
|
||||||
|
|
||||||
await db.put(newAppPackage)
|
await db.put(newAppPackage)
|
||||||
// remove any cached metadata, so that it will be updated
|
// remove any cached metadata, so that it will be updated
|
||||||
await appCache.invalidateAppMetadata(appId)
|
await cache.app.invalidateAppMetadata(appId)
|
||||||
return newAppPackage
|
return newAppPackage
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
const { getAllApps } = require("@budibase/backend-core/db")
|
import { db as dbCore, context } from "@budibase/backend-core"
|
||||||
const { doInAppContext } = require("@budibase/backend-core/context")
|
|
||||||
import { search as stringSearch, addRev } from "./utils"
|
import { search as stringSearch, addRev } from "./utils"
|
||||||
import * as controller from "../application"
|
import * as controller from "../application"
|
||||||
import { Application } from "../../../definitions/common"
|
import { Application } from "../../../definitions/common"
|
||||||
|
@ -15,15 +14,22 @@ function fixAppID(app: Application, params: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setResponseApp(ctx: any) {
|
async function setResponseApp(ctx: any) {
|
||||||
if (ctx.body && ctx.body.appId && (!ctx.params || !ctx.params.appId)) {
|
const appId = ctx.body?.appId
|
||||||
ctx.params = { appId: ctx.body.appId }
|
if (appId && (!ctx.params || !ctx.params.appId)) {
|
||||||
|
ctx.params = { appId }
|
||||||
|
}
|
||||||
|
if (appId) {
|
||||||
|
await context.doInContext(appId, () => {
|
||||||
|
return controller.fetchAppPackage(ctx)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return controller.fetchAppPackage(ctx)
|
||||||
}
|
}
|
||||||
await controller.fetchAppPackage(ctx)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function search(ctx: any, next: any) {
|
export async function search(ctx: any, next: any) {
|
||||||
const { name } = ctx.request.body
|
const { name } = ctx.request.body
|
||||||
const apps = await getAllApps({ all: true })
|
const apps = await dbCore.getAllApps({ all: true })
|
||||||
ctx.body = stringSearch(apps, name)
|
ctx.body = stringSearch(apps, name)
|
||||||
await next()
|
await next()
|
||||||
}
|
}
|
||||||
|
@ -41,7 +47,7 @@ export async function create(ctx: any, next: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function read(ctx: any, next: any) {
|
export async function read(ctx: any, next: any) {
|
||||||
await doInAppContext(ctx.params.appId, async () => {
|
await context.doInAppContext(ctx.params.appId, async () => {
|
||||||
await setResponseApp(ctx)
|
await setResponseApp(ctx)
|
||||||
await next()
|
await next()
|
||||||
})
|
})
|
||||||
|
@ -49,7 +55,7 @@ export async function read(ctx: any, next: any) {
|
||||||
|
|
||||||
export async function update(ctx: any, next: any) {
|
export async function update(ctx: any, next: any) {
|
||||||
ctx.request.body = await addRev(fixAppID(ctx.request.body, ctx.params))
|
ctx.request.body = await addRev(fixAppID(ctx.request.body, ctx.params))
|
||||||
await doInAppContext(ctx.params.appId, async () => {
|
await context.doInAppContext(ctx.params.appId, async () => {
|
||||||
await controller.update(ctx)
|
await controller.update(ctx)
|
||||||
await setResponseApp(ctx)
|
await setResponseApp(ctx)
|
||||||
await next()
|
await next()
|
||||||
|
@ -57,7 +63,7 @@ export async function update(ctx: any, next: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function destroy(ctx: any, next: any) {
|
export async function destroy(ctx: any, next: any) {
|
||||||
await doInAppContext(ctx.params.appId, async () => {
|
await context.doInAppContext(ctx.params.appId, async () => {
|
||||||
// get the app before deleting it
|
// get the app before deleting it
|
||||||
await setResponseApp(ctx)
|
await setResponseApp(ctx)
|
||||||
const body = ctx.body
|
const body = ctx.body
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Document } from "../document"
|
import { User, Document } from "../"
|
||||||
|
|
||||||
export type AppMetadataErrors = { [key: string]: string[] }
|
export type AppMetadataErrors = { [key: string]: string[] }
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ export interface App extends Document {
|
||||||
theme?: string
|
theme?: string
|
||||||
customTheme?: AppCustomTheme
|
customTheme?: AppCustomTheme
|
||||||
revertableVersion?: string
|
revertableVersion?: string
|
||||||
|
lockedBy?: User
|
||||||
navigation?: AppNavigation
|
navigation?: AppNavigation
|
||||||
automationErrors?: AppMetadataErrors
|
automationErrors?: AppMetadataErrors
|
||||||
icon?: AppIcon
|
icon?: AppIcon
|
||||||
|
|
|
@ -70,7 +70,7 @@ describe("Internal API - Application creation, update, publish and delete", () =
|
||||||
await config.applications.publish(<string>app.url)
|
await config.applications.publish(<string>app.url)
|
||||||
|
|
||||||
// check published app renders
|
// check published app renders
|
||||||
config.applications.api.appId = db.getProdAppID(app.appId)
|
config.applications.api.appId = db.getProdAppID(app.appId!)
|
||||||
await config.applications.canRender()
|
await config.applications.canRender()
|
||||||
|
|
||||||
// unpublish app
|
// unpublish app
|
||||||
|
|
|
@ -390,7 +390,7 @@
|
||||||
jest-util "^28.1.3"
|
jest-util "^28.1.3"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
"@jest/core@^28.0.2", "@jest/core@^28.1.3":
|
"@jest/core@^28.1.1", "@jest/core@^28.1.3":
|
||||||
version "28.1.3"
|
version "28.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7"
|
resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7"
|
||||||
integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==
|
integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==
|
||||||
|
@ -573,7 +573,7 @@
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
write-file-atomic "^4.0.1"
|
write-file-atomic "^4.0.1"
|
||||||
|
|
||||||
"@jest/types@^28.1.3":
|
"@jest/types@^28.1.1", "@jest/types@^28.1.3":
|
||||||
version "28.1.3"
|
version "28.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b"
|
resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b"
|
||||||
integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
|
integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
|
||||||
|
@ -2299,7 +2299,7 @@ jest-circus@^28.1.3:
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
stack-utils "^2.0.3"
|
stack-utils "^2.0.3"
|
||||||
|
|
||||||
jest-cli@^28.0.2:
|
jest-cli@^28.1.1:
|
||||||
version "28.1.3"
|
version "28.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2"
|
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2"
|
||||||
integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==
|
integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==
|
||||||
|
@ -2666,14 +2666,15 @@ jest-worker@^28.1.3:
|
||||||
merge-stream "^2.0.0"
|
merge-stream "^2.0.0"
|
||||||
supports-color "^8.0.0"
|
supports-color "^8.0.0"
|
||||||
|
|
||||||
jest@28.0.2:
|
jest@28.1.1:
|
||||||
version "28.0.2"
|
version "28.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.2.tgz#41385ca21d009708bb9fc65e08663110e08e2cc0"
|
resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e"
|
||||||
integrity sha512-COUtjybolW4koQvO7kCfq5kgbeeU5WbSJfVZprz4zbS8AL32+RAZZTUjBEyRRdpsXqss/pHIvSL7/P+LyMYHXg==
|
integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jest/core" "^28.0.2"
|
"@jest/core" "^28.1.1"
|
||||||
|
"@jest/types" "^28.1.1"
|
||||||
import-local "^3.0.2"
|
import-local "^3.0.2"
|
||||||
jest-cli "^28.0.2"
|
jest-cli "^28.1.1"
|
||||||
|
|
||||||
jmespath@0.15.0:
|
jmespath@0.15.0:
|
||||||
version "0.15.0"
|
version "0.15.0"
|
||||||
|
@ -4351,10 +4352,10 @@ ts-jest@28.0.8:
|
||||||
semver "7.x"
|
semver "7.x"
|
||||||
yargs-parser "^21.0.1"
|
yargs-parser "^21.0.1"
|
||||||
|
|
||||||
ts-node@10.9.1:
|
ts-node@10.8.1:
|
||||||
version "10.9.1"
|
version "10.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066"
|
||||||
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@cspotcode/source-map-support" "^0.8.0"
|
"@cspotcode/source-map-support" "^0.8.0"
|
||||||
"@tsconfig/node10" "^1.0.7"
|
"@tsconfig/node10" "^1.0.7"
|
||||||
|
@ -4370,10 +4371,10 @@ ts-node@10.9.1:
|
||||||
v8-compile-cache-lib "^3.0.1"
|
v8-compile-cache-lib "^3.0.1"
|
||||||
yn "3.1.1"
|
yn "3.1.1"
|
||||||
|
|
||||||
tsconfig-paths@4.1.0:
|
tsconfig-paths@4.0.0:
|
||||||
version "4.1.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz#f8ef7d467f08ae3a695335bf1ece088c5538d2c1"
|
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz#1082f5d99fd127b72397eef4809e4dd06d229b64"
|
||||||
integrity sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==
|
integrity sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
json5 "^2.2.1"
|
json5 "^2.2.1"
|
||||||
minimist "^1.2.6"
|
minimist "^1.2.6"
|
||||||
|
|
Loading…
Reference in New Issue