From 8e885075b63f090ee8bb5a48e0d7b8bd6c72e13d Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Tue, 10 May 2022 10:33:59 +0100 Subject: [PATCH] handlers -> publishers and analtics -> processors --- .../backend-core/src/analytics/Analytics.ts | 68 --- packages/backend-core/src/analytics/index.ts | 4 - packages/backend-core/src/events/events.ts | 20 +- packages/backend-core/src/events/index.ts | 8 +- .../src/events/processors/LoggingProcessor.ts | 15 + .../processors/PosthogProcessor.ts} | 15 +- .../src/events/processors/Processors.ts | 63 +++ .../src/events/processors/index.ts | 2 + .../src/events/processors/types.ts | 11 + .../{handlers => publishers}/account.ts | 8 +- .../events/{handlers => publishers}/app.ts | 34 +- .../events/{handlers => publishers}/auth.ts | 14 +- .../{handlers => publishers}/automation.ts | 14 +- .../{handlers => publishers}/datasource.ts | 8 +- .../events/{handlers => publishers}/email.ts | 6 +- .../events/{handlers => publishers}/index.ts | 0 .../events/{handlers => publishers}/layout.ts | 6 +- .../{handlers => publishers}/license.ts | 12 +- .../events/{handlers => publishers}/org.ts | 12 +- .../events/{handlers => publishers}/query.ts | 12 +- .../events/{handlers => publishers}/role.ts | 12 +- .../events/{handlers => publishers}/row.ts | 4 +- .../events/{handlers => publishers}/screen.ts | 6 +- .../events/{handlers => publishers}/serve.ts | 8 +- .../events/{handlers => publishers}/table.ts | 14 +- .../events/{handlers => publishers}/user.ts | 28 +- .../events/{handlers => publishers}/view.ts | 22 +- packages/backend-core/src/index.ts | 2 - .../server/src/api/controllers/application.ts | 2 +- packages/server/src/app.ts | 4 +- .../migrations/functions/backfill/app/app.ts | 2 + packages/server/yarn.lock | 506 +----------------- packages/types/src/documents/app/app.ts | 17 +- packages/types/src/documents/app/document.ts | 6 + packages/types/src/documents/app/index.ts | 1 + packages/worker/src/index.ts | 2 + packages/worker/yarn.lock | 18 +- 37 files changed, 281 insertions(+), 705 deletions(-) delete mode 100644 packages/backend-core/src/analytics/Analytics.ts delete mode 100644 packages/backend-core/src/analytics/index.ts create mode 100644 packages/backend-core/src/events/processors/LoggingProcessor.ts rename packages/backend-core/src/{analytics/PosthogClient.ts => events/processors/PosthogProcessor.ts} (66%) create mode 100644 packages/backend-core/src/events/processors/Processors.ts create mode 100644 packages/backend-core/src/events/processors/index.ts create mode 100644 packages/backend-core/src/events/processors/types.ts rename packages/backend-core/src/events/{handlers => publishers}/account.ts (57%) rename packages/backend-core/src/events/{handlers => publishers}/app.ts (59%) rename packages/backend-core/src/events/{handlers => publishers}/auth.ts (69%) rename packages/backend-core/src/events/{handlers => publishers}/automation.ts (74%) rename packages/backend-core/src/events/{handlers => publishers}/datasource.ts (68%) rename packages/backend-core/src/events/{handlers => publishers}/email.ts (66%) rename packages/backend-core/src/events/{handlers => publishers}/index.ts (100%) rename packages/backend-core/src/events/{handlers => publishers}/layout.ts (66%) rename packages/backend-core/src/events/{handlers => publishers}/license.ts (71%) rename packages/backend-core/src/events/{handlers => publishers}/org.ts (58%) rename packages/backend-core/src/events/{handlers => publishers}/query.ts (76%) rename packages/backend-core/src/events/{handlers => publishers}/role.ts (69%) rename packages/backend-core/src/events/{handlers => publishers}/row.ts (81%) rename packages/backend-core/src/events/{handlers => publishers}/screen.ts (66%) rename packages/backend-core/src/events/{handlers => publishers}/serve.ts (68%) rename packages/backend-core/src/events/{handlers => publishers}/table.ts (69%) rename packages/backend-core/src/events/{handlers => publishers}/user.ts (68%) rename packages/backend-core/src/events/{handlers => publishers}/view.ts (68%) create mode 100644 packages/types/src/documents/app/document.ts diff --git a/packages/backend-core/src/analytics/Analytics.ts b/packages/backend-core/src/analytics/Analytics.ts deleted file mode 100644 index e2468c964b..0000000000 --- a/packages/backend-core/src/analytics/Analytics.ts +++ /dev/null @@ -1,68 +0,0 @@ -import PosthogClient from "./PosthogClient" -import env from "../environment" -import { getTenantId } from "../context" -import { Account, Hosting, Event, IdentityType } from "@budibase/types" - -class Analytics { - isEnabled: boolean - posthog: PosthogClient | undefined - - constructor() { - // check enabled before init - this.isEnabled = !!env.ENABLE_ANALYTICS // TODO: use db flag instead - if (!this.isEnabled) return - this.posthog = new PosthogClient(env.POSTHOG_TOKEN) - } - - enabled() { - return this.isEnabled - } - - identify(type: IdentityType, id: string, hosting?: Hosting) { - if (!this.isEnabled) return - const tenantId = getTenantId() - if (!hosting) { - hosting = env.SELF_HOSTED ? Hosting.SELF : Hosting.CLOUD - } - const properties = { - type, - hosting, - tenantId, - } - this.posthog!.identify(id, properties) - } - - identifyUser(userId: string) { - this.identify(IdentityType.USER, userId) - } - - identifyTenant() { - let distinctId - if (env.SELF_HOSTED) { - distinctId = getTenantId() // TODO: Get installation ID - } else { - distinctId = getTenantId() - } - this.identify(IdentityType.TENANT, distinctId) - } - - identifyAccount(account: Account) { - const distinctId = account.accountId - const hosting = account.hosting - this.identify(IdentityType.ACCOUNT, distinctId, hosting) - } - - captureEvent(event: Event, properties: any) { - if (!this.isEnabled) return - // TODO: get the user id from context - const userId = "TESTING_USER_ID" - this.posthog!.capture(userId, event, properties) - } - - shutdown() { - if (!this.isEnabled) return - this.posthog!.shutdown() - } -} - -export default Analytics diff --git a/packages/backend-core/src/analytics/index.ts b/packages/backend-core/src/analytics/index.ts deleted file mode 100644 index 9be70a1af4..0000000000 --- a/packages/backend-core/src/analytics/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Analytics from "./Analytics" - -const analytics = new Analytics() -export default analytics diff --git a/packages/backend-core/src/events/events.ts b/packages/backend-core/src/events/events.ts index 4ae916db16..8234a13b13 100644 --- a/packages/backend-core/src/events/events.ts +++ b/packages/backend-core/src/events/events.ts @@ -1,17 +1,9 @@ -import { getTenantId } from "../context" -import analytics from "../analytics" import { Event } from "@budibase/types" +import { processors } from "./processors" -const logEvent = (messsage: string) => { - const tenantId = getTenantId() - const userId = getTenantId() // TODO - console.log(`[audit] [tenant=${tenantId}] [user=${userId}] ${messsage}`) -} - -export const processEvent = (event: Event, properties: any) => { - // logging - logEvent(event) - - // analytics - analytics.captureEvent(event, properties) +export const publishEvent = (event: Event, properties: any) => { + // in future this should use async events + // via a queue. For now we can use sync as + // this is non-blocking + processors.processEvent(event, properties) } diff --git a/packages/backend-core/src/events/index.ts b/packages/backend-core/src/events/index.ts index 92fa300a33..0fa559661a 100644 --- a/packages/backend-core/src/events/index.ts +++ b/packages/backend-core/src/events/index.ts @@ -1 +1,7 @@ -export * from "./handlers" +export * from "./publishers" + +import { processors } from "./processors" + +export const shutdown = () => { + processors.shutdown() +} diff --git a/packages/backend-core/src/events/processors/LoggingProcessor.ts b/packages/backend-core/src/events/processors/LoggingProcessor.ts new file mode 100644 index 0000000000..8c46f0649a --- /dev/null +++ b/packages/backend-core/src/events/processors/LoggingProcessor.ts @@ -0,0 +1,15 @@ +import { Event } from "@budibase/types" +import { getTenantId } from "../../context" +import { EventProcessor } from "./types" + +export default class LoggingProcessor implements EventProcessor { + processEvent(event: Event, properties: any): void { + const tenantId = getTenantId() + const userId = getTenantId() // TODO + console.log(`[audit] [tenant=${tenantId}] [user=${userId}] ${event}`) + } + + shutdown(): void { + // no-op + } +} diff --git a/packages/backend-core/src/analytics/PosthogClient.ts b/packages/backend-core/src/events/processors/PosthogProcessor.ts similarity index 66% rename from packages/backend-core/src/analytics/PosthogClient.ts rename to packages/backend-core/src/events/processors/PosthogProcessor.ts index f02ba3e7fb..e97ae6680c 100644 --- a/packages/backend-core/src/analytics/PosthogClient.ts +++ b/packages/backend-core/src/events/processors/PosthogProcessor.ts @@ -1,7 +1,9 @@ import PostHog from "posthog-node" import { Event } from "@budibase/types" +import { EventProcessor } from "./types" +import { getTenantId } from "../../context" -class PosthogClient { +export default class PosthogProcessor implements EventProcessor { posthog: PostHog constructor(token: string | undefined) { @@ -11,17 +13,16 @@ class PosthogClient { this.posthog = new PostHog(token) } - identify(distinctId: string, properties: any) { - this.posthog.identify({ distinctId, properties }) + processEvent(event: Event, properties: any): void { + const userId = getTenantId() // TODO + this.posthog.capture({ distinctId: userId, event, properties }) } - capture(userId: string, event: Event, properties: any) { - this.posthog.capture({ distinctId: userId, event, properties }) + identify(distinctId: string, properties: any) { + this.posthog.identify({ distinctId, properties }) } shutdown() { this.posthog.shutdown() } } - -export default PosthogClient diff --git a/packages/backend-core/src/events/processors/Processors.ts b/packages/backend-core/src/events/processors/Processors.ts new file mode 100644 index 0000000000..2b77fa90b2 --- /dev/null +++ b/packages/backend-core/src/events/processors/Processors.ts @@ -0,0 +1,63 @@ +import { Event } from "@budibase/types" +import { EventProcessor } from "./types" +import env from "../../environment" +import LoggingProcessor from "./LoggingProcessor" +import PosthogProcessor from "./PosthogProcessor" + +export default class Processor implements EventProcessor { + processors: EventProcessor[] = [] + + constructor() { + if (env.ENABLE_ANALYTICS && env.POSTHOG_TOKEN) { + this.processors.push(new PosthogProcessor(env.POSTHOG_TOKEN)) + } + this.processors.push(new LoggingProcessor()) + } + + processEvent(event: Event, properties: any): void { + for (const eventProcessor of this.processors) { + eventProcessor.processEvent(event, properties) + } + } + + shutdown() { + for (const eventProcessor of this.processors) { + eventProcessor.shutdown() + } + } + + // Identity todo + + // export const identify(type: IdentityType, id: string, hosting?: Hosting) { + // const tenantId = getTenantId() + // if (!hosting) { + // hosting = env.SELF_HOSTED ? Hosting.SELF : Hosting.CLOUD + // } + // const properties = { + // type, + // hosting, + // tenantId, + // } + // this.posthog!.identify(id, properties) + // } + + // identifyUser(userId: string) { + // this.identify(IdentityType.USER, userId) + // } + + // identifyTenant() { + // let distinctId + // if (env.SELF_HOSTED) { + // distinctId = getTenantId() // TODO: Get installation ID + // } else { + // distinctId = getTenantId() + // } + // this.identify(IdentityType.TENANT, distinctId) + // } + + // identifyAccount(account: Account) { + // const distinctId = account.accountId + // const hosting = account.hosting + // this.identify(IdentityType.ACCOUNT, distinctId, hosting) + // } +} diff --git a/packages/backend-core/src/events/processors/index.ts b/packages/backend-core/src/events/processors/index.ts new file mode 100644 index 0000000000..9269648ff2 --- /dev/null +++ b/packages/backend-core/src/events/processors/index.ts @@ -0,0 +1,2 @@ +import Processors from "./Processors" +export const processors = new Processors() diff --git a/packages/backend-core/src/events/processors/types.ts b/packages/backend-core/src/events/processors/types.ts new file mode 100644 index 0000000000..c5d32f6c75 --- /dev/null +++ b/packages/backend-core/src/events/processors/types.ts @@ -0,0 +1,11 @@ +import { Event } from "@budibase/types" + +export enum EventProcessorType { + POSTHOG = "posthog", + LOGGING = "logging", +} + +export interface EventProcessor { + processEvent(event: Event, properties: any): void + shutdown(): void +} diff --git a/packages/backend-core/src/events/handlers/account.ts b/packages/backend-core/src/events/publishers/account.ts similarity index 57% rename from packages/backend-core/src/events/handlers/account.ts rename to packages/backend-core/src/events/publishers/account.ts index 0d3c9ba0c0..34ca42db02 100644 --- a/packages/backend-core/src/events/handlers/account.ts +++ b/packages/backend-core/src/events/publishers/account.ts @@ -1,17 +1,17 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Account } from "@budibase/types" export function created(account: Account) { const properties = {} - processEvent(Event.ACCOUNT_CREATED, properties) + publishEvent(Event.ACCOUNT_CREATED, properties) } export function deleted(account: Account) { const properties = {} - processEvent(Event.ACCOUNT_DELETED, properties) + publishEvent(Event.ACCOUNT_DELETED, properties) } export function verified(account: Account) { const properties = {} - processEvent(Event.ACCOUNT_VERIFIED, properties) + publishEvent(Event.ACCOUNT_VERIFIED, properties) } diff --git a/packages/backend-core/src/events/handlers/app.ts b/packages/backend-core/src/events/publishers/app.ts similarity index 59% rename from packages/backend-core/src/events/handlers/app.ts rename to packages/backend-core/src/events/publishers/app.ts index 197c778679..2bce8f81c1 100644 --- a/packages/backend-core/src/events/handlers/app.ts +++ b/packages/backend-core/src/events/publishers/app.ts @@ -1,4 +1,5 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" +import { getAppDB } from "../../context" import { Event, App, @@ -15,59 +16,66 @@ import { AppExportedEvent, } from "@budibase/types" -export function created(app: App) { +const saveApp = async (app: App): Promise => { + const db = getAppDB() + const response = await db.save(app) + app._rev = response.rev + return app +} + +export const created = async (app: App) => { const properties: AppCreatedEvent = {} - processEvent(Event.APP_CREATED, properties) + await publishEvent(Event.APP_CREATED, properties) } export function updated(app: App) { const properties: AppUpdatedEvent = {} - processEvent(Event.APP_UPDATED, properties) + publishEvent(Event.APP_UPDATED, properties) } export function deleted(app: App) { const properties: AppDeletedEvent = {} - processEvent(Event.APP_DELETED, properties) + publishEvent(Event.APP_DELETED, properties) } export function published(app: App) { const properties: AppPublishedEvent = {} - processEvent(Event.APP_PUBLISHED, properties) + publishEvent(Event.APP_PUBLISHED, properties) } export function unpublished(app: App) { const properties: AppUnpublishedEvent = {} - processEvent(Event.APP_UNPUBLISHED, properties) + publishEvent(Event.APP_UNPUBLISHED, properties) } export function fileImported(app: App) { const properties: AppFileImportedEvent = {} - processEvent(Event.APP_FILE_IMPORTED, properties) + publishEvent(Event.APP_FILE_IMPORTED, properties) } export function templateImported(templateKey: string) { const properties: AppTemplateImportedEvent = { templateKey, } - processEvent(Event.APP_TEMPLATE_IMPORTED, properties) + publishEvent(Event.APP_TEMPLATE_IMPORTED, properties) } export function versionUpdated(app: App) { const properties: AppVersionUpdatedEvent = {} - processEvent(Event.APP_VERSION_UPDATED, properties) + publishEvent(Event.APP_VERSION_UPDATED, properties) } export function versionReverted(app: App) { const properties: AppVersionRevertedEvent = {} - processEvent(Event.APP_VERSION_REVERTED, properties) + publishEvent(Event.APP_VERSION_REVERTED, properties) } export function reverted(app: App) { const properties: AppRevertedEvent = {} - processEvent(Event.APP_REVERTED, properties) + publishEvent(Event.APP_REVERTED, properties) } export function exported(app: App) { const properties: AppExportedEvent = {} - processEvent(Event.APP_EXPORTED, properties) + publishEvent(Event.APP_EXPORTED, properties) } diff --git a/packages/backend-core/src/events/handlers/auth.ts b/packages/backend-core/src/events/publishers/auth.ts similarity index 69% rename from packages/backend-core/src/events/handlers/auth.ts rename to packages/backend-core/src/events/publishers/auth.ts index d925d1a340..61a73fbfc5 100644 --- a/packages/backend-core/src/events/handlers/auth.ts +++ b/packages/backend-core/src/events/publishers/auth.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, LoginEvent, @@ -15,38 +15,38 @@ export function login(source: LoginSource) { const properties: LoginEvent = { source, } - processEvent(Event.AUTH_LOGIN, properties) + publishEvent(Event.AUTH_LOGIN, properties) } export function logout() { const properties: LogoutEvent = {} - processEvent(Event.AUTH_LOGOUT, properties) + publishEvent(Event.AUTH_LOGOUT, properties) } export function SSOCreated(type: SSOType) { const properties: SSOCreatedEvent = { type, } - processEvent(Event.AUTH_SSO_CREATED, properties) + publishEvent(Event.AUTH_SSO_CREATED, properties) } export function SSOUpdated(type: SSOType) { const properties: SSOUpdatedEvent = { type, } - processEvent(Event.AUTH_SSO_UPDATED, properties) + publishEvent(Event.AUTH_SSO_UPDATED, properties) } export function SSOActivated(type: SSOType) { const properties: SSOActivatedEvent = { type, } - processEvent(Event.AUTH_SSO_ACTIVATED, properties) + publishEvent(Event.AUTH_SSO_ACTIVATED, properties) } export function SSODeactivated(type: SSOType) { const properties: SSODeactivatedEvent = { type, } - processEvent(Event.AUTH_SSO_DEACTIVATED, properties) + publishEvent(Event.AUTH_SSO_DEACTIVATED, properties) } diff --git a/packages/backend-core/src/events/handlers/automation.ts b/packages/backend-core/src/events/publishers/automation.ts similarity index 74% rename from packages/backend-core/src/events/handlers/automation.ts rename to packages/backend-core/src/events/publishers/automation.ts index fa9b71a8cf..dfdddc86db 100644 --- a/packages/backend-core/src/events/handlers/automation.ts +++ b/packages/backend-core/src/events/publishers/automation.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Automation, Event, @@ -14,17 +14,17 @@ import { export function created(automation: Automation) { const properties: AutomationCreatedEvent = {} - processEvent(Event.AUTOMATION_CREATED, properties) + publishEvent(Event.AUTOMATION_CREATED, properties) } export function deleted(automation: Automation) { const properties: AutomationDeletedEvent = {} - processEvent(Event.AUTOMATION_DELETED, properties) + publishEvent(Event.AUTOMATION_DELETED, properties) } export function tested(automation: Automation) { const properties: AutomationTestedEvent = {} - processEvent(Event.AUTOMATION_TESTED, properties) + publishEvent(Event.AUTOMATION_TESTED, properties) } // TODO @@ -35,12 +35,12 @@ export function tested(automation: Automation) { export function stepCreated(automation: Automation, step: AutomationStep) { const properties: AutomationStepCreatedEvent = {} - processEvent(Event.AUTOMATION_STEP_CREATED, properties) + publishEvent(Event.AUTOMATION_STEP_CREATED, properties) } export function stepDeleted(automation: Automation, step: AutomationStep) { const properties: AutomationStepDeletedEvent = {} - processEvent(Event.AUTOMATION_STEP_DELETED, properties) + publishEvent(Event.AUTOMATION_STEP_DELETED, properties) } export function triggerUpdated( @@ -48,5 +48,5 @@ export function triggerUpdated( trigger: AutomationTrigger ) { const properties: AutomationTriggerUpdatedEvent = {} - processEvent(Event.AUTOMATION_TRIGGER_UPDATED, properties) + publishEvent(Event.AUTOMATION_TRIGGER_UPDATED, properties) } diff --git a/packages/backend-core/src/events/handlers/datasource.ts b/packages/backend-core/src/events/publishers/datasource.ts similarity index 68% rename from packages/backend-core/src/events/handlers/datasource.ts rename to packages/backend-core/src/events/publishers/datasource.ts index 9ebe73928e..4ca4b1f9b7 100644 --- a/packages/backend-core/src/events/handlers/datasource.ts +++ b/packages/backend-core/src/events/publishers/datasource.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Datasource, @@ -9,15 +9,15 @@ import { export function created(datasource: Datasource) { const properties: DatasourceCreatedEvent = {} - processEvent(Event.DATASOURCE_CREATED, properties) + publishEvent(Event.DATASOURCE_CREATED, properties) } export function updated(datasource: Datasource) { const properties: DatasourceUpdatedEvent = {} - processEvent(Event.DATASOURCE_UPDATED, properties) + publishEvent(Event.DATASOURCE_UPDATED, properties) } export function deleted(datasource: Datasource) { const properties: DatasourceDeletedEvent = {} - processEvent(Event.DATASOURCE_DELETED, properties) + publishEvent(Event.DATASOURCE_DELETED, properties) } diff --git a/packages/backend-core/src/events/handlers/email.ts b/packages/backend-core/src/events/publishers/email.ts similarity index 66% rename from packages/backend-core/src/events/handlers/email.ts rename to packages/backend-core/src/events/publishers/email.ts index ff1783b682..72d14120e7 100644 --- a/packages/backend-core/src/events/handlers/email.ts +++ b/packages/backend-core/src/events/publishers/email.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, SMTPConfig, @@ -8,10 +8,10 @@ import { export function SMTPCreated(config: SMTPConfig) { const properties: SMTPCreatedEvent = {} - processEvent(Event.EMAIL_SMTP_CREATED, properties) + publishEvent(Event.EMAIL_SMTP_CREATED, properties) } export function SMTPUpdated(config: SMTPConfig) { const properties: SMTPUpdatedEvent = {} - processEvent(Event.EMAIL_SMTP_UPDATED, properties) + publishEvent(Event.EMAIL_SMTP_UPDATED, properties) } diff --git a/packages/backend-core/src/events/handlers/index.ts b/packages/backend-core/src/events/publishers/index.ts similarity index 100% rename from packages/backend-core/src/events/handlers/index.ts rename to packages/backend-core/src/events/publishers/index.ts diff --git a/packages/backend-core/src/events/handlers/layout.ts b/packages/backend-core/src/events/publishers/layout.ts similarity index 66% rename from packages/backend-core/src/events/handlers/layout.ts rename to packages/backend-core/src/events/publishers/layout.ts index 6d4ff9f4a0..ae0129ab35 100644 --- a/packages/backend-core/src/events/handlers/layout.ts +++ b/packages/backend-core/src/events/publishers/layout.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Layout, @@ -8,10 +8,10 @@ import { export function created(layout: Layout) { const properties: LayoutCreatedEvent = {} - processEvent(Event.LAYOUT_CREATED, properties) + publishEvent(Event.LAYOUT_CREATED, properties) } export function deleted(layout: Layout) { const properties: LayoutDeletedEvent = {} - processEvent(Event.LAYOUT_DELETED, properties) + publishEvent(Event.LAYOUT_DELETED, properties) } diff --git a/packages/backend-core/src/events/handlers/license.ts b/packages/backend-core/src/events/publishers/license.ts similarity index 71% rename from packages/backend-core/src/events/handlers/license.ts rename to packages/backend-core/src/events/publishers/license.ts index 91b97c00ae..22fc19cd10 100644 --- a/packages/backend-core/src/events/handlers/license.ts +++ b/packages/backend-core/src/events/publishers/license.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, License, @@ -12,25 +12,25 @@ import { // TODO export function updgraded(license: License) { const properties: LicenseUpgradedEvent = {} - processEvent(Event.LICENSE_UPGRADED, properties) + publishEvent(Event.LICENSE_UPGRADED, properties) } // TODO export function downgraded(license: License) { const properties: LicenseDowngradedEvent = {} - processEvent(Event.LICENSE_DOWNGRADED, properties) + publishEvent(Event.LICENSE_DOWNGRADED, properties) } // TODO export function updated(license: License) { const properties: LicenseUpdatedEvent = {} - processEvent(Event.LICENSE_UPDATED, properties) + publishEvent(Event.LICENSE_UPDATED, properties) } // TODO export function activated(license: License) { const properties: LicenseActivatedEvent = {} - processEvent(Event.LICENSE_ACTIVATED, properties) + publishEvent(Event.LICENSE_ACTIVATED, properties) } // TODO @@ -39,5 +39,5 @@ export function quotaExceeded(quotaName: string, value: number) { name: quotaName, value, } - processEvent(Event.LICENSE_QUOTA_EXCEEDED, properties) + publishEvent(Event.LICENSE_QUOTA_EXCEEDED, properties) } diff --git a/packages/backend-core/src/events/handlers/org.ts b/packages/backend-core/src/events/publishers/org.ts similarity index 58% rename from packages/backend-core/src/events/handlers/org.ts rename to packages/backend-core/src/events/publishers/org.ts index 5e1fc12b80..c1e5948f8a 100644 --- a/packages/backend-core/src/events/handlers/org.ts +++ b/packages/backend-core/src/events/publishers/org.ts @@ -1,30 +1,30 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, VersionCheckedEvent } from "@budibase/types" export function nameUpdated() { const properties = {} - processEvent(Event.ORG_NAME_UPDATED, properties) + publishEvent(Event.ORG_NAME_UPDATED, properties) } export function logoUpdated() { const properties = {} - processEvent(Event.ORG_LOGO_UPDATED, properties) + publishEvent(Event.ORG_LOGO_UPDATED, properties) } export function platformURLUpdated() { const properties = {} - processEvent(Event.ORG_PLATFORM_URL_UPDATED, properties) + publishEvent(Event.ORG_PLATFORM_URL_UPDATED, properties) } export function versionChecked(version: number) { const properties: VersionCheckedEvent = { version, } - processEvent(Event.UPDATE_VERSION_CHECKED, properties) + publishEvent(Event.UPDATE_VERSION_CHECKED, properties) } // TODO export function analyticsOptOut() { const properties = {} - processEvent(Event.ANALYTICS_OPT_OUT, properties) + publishEvent(Event.ANALYTICS_OPT_OUT, properties) } diff --git a/packages/backend-core/src/events/handlers/query.ts b/packages/backend-core/src/events/publishers/query.ts similarity index 76% rename from packages/backend-core/src/events/handlers/query.ts rename to packages/backend-core/src/events/publishers/query.ts index 059381ba31..94e83c2fa7 100644 --- a/packages/backend-core/src/events/handlers/query.ts +++ b/packages/backend-core/src/events/publishers/query.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Datasource, @@ -14,17 +14,17 @@ import { export const created = (datasource: Datasource, query: Query) => { const properties: QueryCreatedEvent = {} - processEvent(Event.QUERY_CREATED, properties) + publishEvent(Event.QUERY_CREATED, properties) } export const updated = (datasource: Datasource, query: Query) => { const properties: QueryUpdatedEvent = {} - processEvent(Event.QUERY_UPDATED, properties) + publishEvent(Event.QUERY_UPDATED, properties) } export const deleted = (datasource: Datasource, query: Query) => { const properties: QueryDeletedEvent = {} - processEvent(Event.QUERY_DELETED, properties) + publishEvent(Event.QUERY_DELETED, properties) } export const imported = ( @@ -33,7 +33,7 @@ export const imported = ( count: any ) => { const properties: QueryImportedEvent = {} - processEvent(Event.QUERY_IMPORT, properties) + publishEvent(Event.QUERY_IMPORT, properties) } // TODO @@ -44,5 +44,5 @@ export const imported = ( export const previewed = (datasource: Datasource) => { const properties: QueryPreviewedEvent = {} - processEvent(Event.QUERY_PREVIEWED, properties) + publishEvent(Event.QUERY_PREVIEWED, properties) } diff --git a/packages/backend-core/src/events/handlers/role.ts b/packages/backend-core/src/events/publishers/role.ts similarity index 69% rename from packages/backend-core/src/events/handlers/role.ts rename to packages/backend-core/src/events/publishers/role.ts index 58abd4bdca..a7f7e60a32 100644 --- a/packages/backend-core/src/events/handlers/role.ts +++ b/packages/backend-core/src/events/publishers/role.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Role, @@ -14,25 +14,25 @@ import { export function created(role: Role) { const properties: RoleCreatedEvent = {} - processEvent(Event.ROLE_CREATED, properties) + publishEvent(Event.ROLE_CREATED, properties) } export function updated(role: Role) { const properties: RoleUpdatedEvent = {} - processEvent(Event.ROLE_UPDATED, properties) + publishEvent(Event.ROLE_UPDATED, properties) } export function deleted(role: Role) { const properties: RoleDeletedEvent = {} - processEvent(Event.ROLE_DELETED, properties) + publishEvent(Event.ROLE_DELETED, properties) } export function assigned(user: User, role: Role) { const properties: RoleAssignedEvent = {} - processEvent(Event.ROLE_ASSIGNED, properties) + publishEvent(Event.ROLE_ASSIGNED, properties) } export function unassigned(user: User, role: Role) { const properties: RoleUnassignedEvent = {} - processEvent(Event.ROLE_UNASSIGNED, properties) + publishEvent(Event.ROLE_UNASSIGNED, properties) } diff --git a/packages/backend-core/src/events/handlers/row.ts b/packages/backend-core/src/events/publishers/row.ts similarity index 81% rename from packages/backend-core/src/events/handlers/row.ts rename to packages/backend-core/src/events/publishers/row.ts index 0f6cf3a00c..e233c78a2b 100644 --- a/packages/backend-core/src/events/handlers/row.ts +++ b/packages/backend-core/src/events/publishers/row.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, RowImportedEvent, @@ -19,5 +19,5 @@ export const imported = ( count: number ) => { const properties: RowImportedEvent = {} - processEvent(Event.ROW_IMPORT, properties) + publishEvent(Event.ROW_IMPORT, properties) } diff --git a/packages/backend-core/src/events/handlers/screen.ts b/packages/backend-core/src/events/publishers/screen.ts similarity index 66% rename from packages/backend-core/src/events/handlers/screen.ts rename to packages/backend-core/src/events/publishers/screen.ts index d152c43a9c..bf5ffef811 100644 --- a/packages/backend-core/src/events/handlers/screen.ts +++ b/packages/backend-core/src/events/publishers/screen.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, Screen, @@ -8,10 +8,10 @@ import { export function created(screen: Screen) { const properties: ScreenCreatedEvent = {} - processEvent(Event.SCREEN_CREATED, properties) + publishEvent(Event.SCREEN_CREATED, properties) } export function deleted(screen: Screen) { const properties: ScreenDeletedEvent = {} - processEvent(Event.SCREEN_DELETED, properties) + publishEvent(Event.SCREEN_DELETED, properties) } diff --git a/packages/backend-core/src/events/handlers/serve.ts b/packages/backend-core/src/events/publishers/serve.ts similarity index 68% rename from packages/backend-core/src/events/handlers/serve.ts rename to packages/backend-core/src/events/publishers/serve.ts index c1cb513d0b..3a61751a8b 100644 --- a/packages/backend-core/src/events/handlers/serve.ts +++ b/packages/backend-core/src/events/publishers/serve.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { App, BuilderServedEvent, @@ -11,15 +11,15 @@ import { export function servedBuilder(version: number) { const properties: BuilderServedEvent = {} - processEvent(Event.SERVED_BUILDER, properties) + publishEvent(Event.SERVED_BUILDER, properties) } export function servedApp(app: App) { const properties: AppServedEvent = {} - processEvent(Event.SERVED_APP, properties) + publishEvent(Event.SERVED_APP, properties) } export function servedAppPreview(app: App) { const properties: AppPreviewServedEvent = {} - processEvent(Event.SERVED_APP_PREVIEW, properties) + publishEvent(Event.SERVED_APP_PREVIEW, properties) } diff --git a/packages/backend-core/src/events/handlers/table.ts b/packages/backend-core/src/events/publishers/table.ts similarity index 69% rename from packages/backend-core/src/events/handlers/table.ts rename to packages/backend-core/src/events/publishers/table.ts index ca0109a8ea..fca966873c 100644 --- a/packages/backend-core/src/events/handlers/table.ts +++ b/packages/backend-core/src/events/publishers/table.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, TableExportFormat, @@ -15,31 +15,31 @@ import { export function created(table: Table) { const properties: TableCreatedEvent = {} - processEvent(Event.TABLE_CREATED, properties) + publishEvent(Event.TABLE_CREATED, properties) } export function updated(table: Table) { const properties: TableUpdatedEvent = {} - processEvent(Event.TABLE_UPDATED, properties) + publishEvent(Event.TABLE_UPDATED, properties) } export function deleted(table: Table) { const properties: TableDeletedEvent = {} - processEvent(Event.TABLE_DELETED, properties) + publishEvent(Event.TABLE_DELETED, properties) } export function exported(table: Table, format: TableExportFormat) { const properties: TableExportedEvent = {} - processEvent(Event.TABLE_EXPORTED, properties) + publishEvent(Event.TABLE_EXPORTED, properties) } export function imported(table: Table, format: TableImportFormat) { const properties: TableImportedEvent = {} - processEvent(Event.TABLE_IMPORTED, properties) + publishEvent(Event.TABLE_IMPORTED, properties) } // TODO export function permissionUpdated() { const properties = {} - processEvent(Event.TABLE_PERMISSION_UPDATED, properties) + publishEvent(Event.TABLE_PERMISSION_UPDATED, properties) } diff --git a/packages/backend-core/src/events/handlers/user.ts b/packages/backend-core/src/events/publishers/user.ts similarity index 68% rename from packages/backend-core/src/events/handlers/user.ts rename to packages/backend-core/src/events/publishers/user.ts index 48ae7b698a..a5da10d3a7 100644 --- a/packages/backend-core/src/events/handlers/user.ts +++ b/packages/backend-core/src/events/publishers/user.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, User, @@ -19,71 +19,71 @@ import { export function created(user: User) { const properties: UserCreatedEvent = {} - processEvent(Event.USER_CREATED, properties) + publishEvent(Event.USER_CREATED, properties) } export function updated(user: User) { const properties: UserUpdatedEvent = {} - processEvent(Event.USER_UPDATED, properties) + publishEvent(Event.USER_UPDATED, properties) } export function deleted(user: User) { const properties: UserDeletedEvent = {} - processEvent(Event.USER_DELETED, properties) + publishEvent(Event.USER_DELETED, properties) } // PERMISSIONS export function permissionAdminAssigned(user: User) { const properties: UserPermissionAssignedEvent = {} - processEvent(Event.USER_PERMISSION_ADMIN_ASSIGNED, properties) + publishEvent(Event.USER_PERMISSION_ADMIN_ASSIGNED, properties) } export function permissionAdminRemoved(user: User) { const properties: UserPermissionRemovedEvent = {} - processEvent(Event.USER_PERMISSION_ADMIN_REMOVED, properties) + publishEvent(Event.USER_PERMISSION_ADMIN_REMOVED, properties) } export function permissionBuilderAssigned(user: User) { const properties: UserPermissionAssignedEvent = {} - processEvent(Event.USER_PERMISSION_BUILDER_ASSIGNED, properties) + publishEvent(Event.USER_PERMISSION_BUILDER_ASSIGNED, properties) } export function permissionBuilderRemoved(user: User) { const properties: UserPermissionRemovedEvent = {} - processEvent(Event.USER_PERMISSION_BUILDER_REMOVED, properties) + publishEvent(Event.USER_PERMISSION_BUILDER_REMOVED, properties) } // INVITE export function invited(userInfo: any) { const properties: UserInvitedEvent = {} - processEvent(Event.USER_INVITED, properties) + publishEvent(Event.USER_INVITED, properties) } export function inviteAccepted(user: User) { const properties: UserInviteAcceptedEvent = {} - processEvent(Event.USER_INVITED_ACCEPTED, properties) + publishEvent(Event.USER_INVITED_ACCEPTED, properties) } // PASSWORD export function passwordForceReset(user: User) { const properties: UserPasswordForceResetEvent = {} - processEvent(Event.USER_PASSWORD_FORCE_RESET, properties) + publishEvent(Event.USER_PASSWORD_FORCE_RESET, properties) } export function passwordUpdated(user: User) { const properties: UserPasswordUpdatedEvent = {} - processEvent(Event.USER_PASSWORD_UPDATED, properties) + publishEvent(Event.USER_PASSWORD_UPDATED, properties) } export function passwordResetRequested(user: User) { const properties: UserPasswordResetRequestedEvent = {} - processEvent(Event.USER_PASSWORD_RESET_REQUESTED, properties) + publishEvent(Event.USER_PASSWORD_RESET_REQUESTED, properties) } export function passwordReset(user: User) { const properties: UserPasswordResetEvent = {} - processEvent(Event.USER_PASSWORD_RESET, properties) + publishEvent(Event.USER_PASSWORD_RESET, properties) } diff --git a/packages/backend-core/src/events/handlers/view.ts b/packages/backend-core/src/events/publishers/view.ts similarity index 68% rename from packages/backend-core/src/events/handlers/view.ts rename to packages/backend-core/src/events/publishers/view.ts index 9fd3370f57..4091fce18e 100644 --- a/packages/backend-core/src/events/handlers/view.ts +++ b/packages/backend-core/src/events/publishers/view.ts @@ -1,4 +1,4 @@ -import { processEvent } from "../events" +import { publishEvent } from "../events" import { Event, ViewCalculationCreatedEvent, @@ -20,50 +20,50 @@ import { export function created(view: View) { const properties: ViewCreatedEvent = {} - processEvent(Event.VIEW_CREATED, properties) + publishEvent(Event.VIEW_CREATED, properties) } export function updated(view: View) { const properties: ViewUpdatedEvent = {} - processEvent(Event.VIEW_UPDATED, properties) + publishEvent(Event.VIEW_UPDATED, properties) } export function deleted() { const properties: ViewDeletedEvent = {} - processEvent(Event.VIEW_DELETED, properties) + publishEvent(Event.VIEW_DELETED, properties) } export function exported(table: Table, format: TableExportFormat) { const properties: ViewExportedEvent = {} - processEvent(Event.VIEW_EXPORTED, properties) + publishEvent(Event.VIEW_EXPORTED, properties) } export function filterCreated() { const properties: ViewFilterCreatedEvent = {} - processEvent(Event.VIEW_FILTER_CREATED, properties) + publishEvent(Event.VIEW_FILTER_CREATED, properties) } export function filterUpdated() { const properties: ViewFilterUpdatedEvent = {} - processEvent(Event.VIEW_FILTER_UPDATED, properties) + publishEvent(Event.VIEW_FILTER_UPDATED, properties) } export function filterDeleted() { const properties: ViewFilterDeletedEvent = {} - processEvent(Event.VIEW_FILTER_DELETED, properties) + publishEvent(Event.VIEW_FILTER_DELETED, properties) } export function calculationCreated() { const properties: ViewCalculationCreatedEvent = {} - processEvent(Event.VIEW_CALCULATION_CREATED, properties) + publishEvent(Event.VIEW_CALCULATION_CREATED, properties) } export function calculationUpdated() { const properties: ViewCalculationUpdatedEvent = {} - processEvent(Event.VIEW_CALCULATION_UPDATED, properties) + publishEvent(Event.VIEW_CALCULATION_UPDATED, properties) } export function calculationDeleted() { const properties: ViewCalculationDeletedEvent = {} - processEvent(Event.VIEW_CALCULATION_DELETED, properties) + publishEvent(Event.VIEW_CALCULATION_DELETED, properties) } diff --git a/packages/backend-core/src/index.ts b/packages/backend-core/src/index.ts index 3638c8fd0d..c2a6eeea2e 100644 --- a/packages/backend-core/src/index.ts +++ b/packages/backend-core/src/index.ts @@ -7,7 +7,6 @@ import env from "./environment" import accounts from "./cloud/accounts" import tenancy from "./tenancy" import featureFlags from "./featureFlags" -import analytics from "./analytics" import sessions from "./security/sessions" import deprovisioning from "./context/deprovision" @@ -43,7 +42,6 @@ export = { tenancy, featureFlags, events, - analytics, sessions, deprovisioning, } diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index d79ccbc46a..a9679f959a 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -258,7 +258,7 @@ const performAppCreate = async (ctx: any) => { } catch (err) { // nothing to do } - const newApplication = { + const newApplication: App = { _id: DocumentTypes.APP_METADATA, _rev, appId: instance._id, diff --git a/packages/server/src/app.ts b/packages/server/src/app.ts index cdd087d68d..bc9910b370 100644 --- a/packages/server/src/app.ts +++ b/packages/server/src/app.ts @@ -16,7 +16,7 @@ const fileSystem = require("./utilities/fileSystem") const bullboard = require("./automations/bullboard") import redis from "./utilities/redis" import * as migrations from "./migrations" -import { analytics } from "@budibase/backend-core" +import { events } from "@budibase/backend-core" const app = new Koa() @@ -74,7 +74,7 @@ server.on("close", async () => { console.log("Server Closed") } await redis.shutdown() - await analytics.shutdown() + await events.shutdown() }) module.exports = server.listen(env.PORT || 0, async () => { diff --git a/packages/server/src/migrations/functions/backfill/app/app.ts b/packages/server/src/migrations/functions/backfill/app/app.ts index ab195636cc..0099f04290 100644 --- a/packages/server/src/migrations/functions/backfill/app/app.ts +++ b/packages/server/src/migrations/functions/backfill/app/app.ts @@ -3,9 +3,11 @@ import { App } from "@budibase/types" export const backfill = async (appDb: any) => { const app: App = await appDb.get(db.DocumentTypes.APP_METADATA) + if (db.isDevAppID(app.appId)) { events.app.created(app) } + if (db.isProdAppID(app.appId)) { events.app.published(app) } diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index ca0a58bcf9..828972a5da 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1021,10 +1021,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@1.0.138": - version "1.0.138" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.138.tgz#5297d6cf5b9ec8c15f0a6df4c7d8273b8ac900f0" - integrity sha512-1qN/5urKX8bBXwEz266Z94rco8dTI7VqIh75m8ZcqrAfoUpjvZJS76gZxfc5U/QWPwrgVFnLtYvnEjaLbGEflg== +"@budibase/backend-core@1.0.142": + version "1.0.142" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.142.tgz#cbfa426dbf064dff0ea5f9840baae595c0f5343c" + integrity sha512-gd52tOm4mytHa3OQQVcEiwnVCvq0pC0q3YN+5D1uoGt9WaAZoshB5AhXnUPZohvpo5j8isO07qXvF+5YffPVaw== dependencies: "@techpass/passport-openidconnect" "^0.3.0" aws-sdk "^2.901.0" @@ -1098,12 +1098,12 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/pro@1.0.138": - version "1.0.138" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.138.tgz#cacbebe5ce93eb533af62a794a638944c2c61544" - integrity sha512-4ABlUZvl2h8sd8awJATf3KJeoFWV/8SoqdbKiH1ICdUcM/6dad7nhbJ15QqJL+Uuh/+mN2yEbr8V6Un2+yF+CA== +"@budibase/pro@1.0.142": + version "1.0.142" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.142.tgz#17cd53d67ce80e0cce2179caee0c03e6a0d7084e" + integrity sha512-c1SaRoVik/AVn4zNNsDciFeIr+P3J6Sc8hsE5M3pb0Zj/NzSEHXTesxcBVLlD2PYlwnvWPSoMvdDJKrEFHvOYQ== dependencies: - "@budibase/backend-core" "1.0.138" + "@budibase/backend-core" "1.0.142" node-fetch "^2.6.1" "@budibase/standard-components@^0.9.139": @@ -1124,18 +1124,6 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^1.0.130-alpha.1", "@budibase/string-templates@^1.0.134": - version "1.0.134" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.134.tgz#2e21c533e310b55c1f58b8aceb82367d38ad8846" - integrity sha512-W++/k1zAIl/yLX+8KMz3Fo8hi5n6PNK7x/kxAXClWanhdMozLSrS7AIFbrYDhHlsjpteK+3R6wDf5K/JfpYj6g== - dependencies: - "@budibase/handlebars-helpers" "^0.11.8" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.4" - "@bull-board/api@3.9.4": version "3.9.4" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.9.4.tgz#984f25e6d5501d97152d81184968ff135757b57a" @@ -2019,24 +2007,6 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@rollup/plugin-inject@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" - integrity sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - estree-walker "^2.0.1" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - "@sendgrid/client@^7.1.1": version "7.6.1" resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-7.6.1.tgz#de17fe9f04af3bdb69aca44fc407316de87cea3b" @@ -2224,11 +2194,6 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/illustratedmessage/-/illustratedmessage-3.0.8.tgz#69ef0c935bcc5027f233a78de5aeb0064bf033cb" integrity sha512-HvC4dywDi11GdrXQDCvKQ0vFlrXLTyJuc9UKf7meQLCGoJbGYDBwe+tHXNK1c6gPMD9BoL6pPMP1K/vRzR4EBQ== -"@spectrum-css/inlinealert@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376" - integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA== - "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2326,11 +2291,6 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.1.5.tgz#cc82e69c1fc721902345178231fb95d05938b983" integrity sha512-UtfW8bA1quYnJM6v/lp6AVYGnQFkiUix2FHAf/4VHVrk4mh7ydtLiXS0IR3Kx+t/S8FWdSdSQHDZ8tHbY1ZLZg== -"@spectrum-css/tag@^3.1.4": - version "3.3.11" - resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.11.tgz#66b5f91a845df2ad232fae702ae53b3fa46cf745" - integrity sha512-dyDUwG4fbsScMLaVOKQgKuUvYshGEIjTS9lVNhOHCz7klZ800UIMoCzDQXieHf+0nSdiR1Wy1oHBObHMMB8sxA== - "@spectrum-css/tags@^3.0.2": version "3.0.3" resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac" @@ -2490,13 +2450,6 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== -"@types/codemirror@^5.60.4": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7" - integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== - dependencies: - "@types/tern" "*" - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2545,11 +2498,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -2705,11 +2653,6 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== -"@types/marked@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4" - integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2821,13 +2764,6 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/tern@*": - version "0.23.4" - resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== - dependencies: - "@types/estree" "*" - "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" @@ -3392,7 +3328,7 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.10, argparse@^1.0.7: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -3439,15 +3375,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3551,13 +3478,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -autolinker@~0.28.0: - version "0.28.1" - resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47" - integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= - dependencies: - gulp-header "^1.7.1" - aws-sdk@^2.767.0: version "2.1030.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1030.0.tgz#24a856af3d2b8b37c14a8f59974993661c66fd82" @@ -4338,18 +4258,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -codemirror-spell-checker@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e" - integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4= - dependencies: - typo-js "*" - -codemirror@^5.63.1: - version "5.65.3" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.3.tgz#2d029930d5a293bc5fb96ceea64654803c0d4ac7" - integrity sha512-kCC0iwGZOVZXHEKW3NDTObvM7pTIyowjty4BUqeREROc/3I6bWbgZDA3fGDwlA+rbgRjvnRnfqs9SfXynel1AQ== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4490,13 +4398,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-with-sourcemaps@*: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== - dependencies: - source-map "^0.6.1" - condense-newlines@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" @@ -4898,13 +4799,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - default-shell@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc" @@ -5066,25 +4960,11 @@ doctrine@3.0.0, doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -5099,22 +4979,6 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.5.2: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -5154,11 +5018,6 @@ download@8.0.0: p-event "^2.1.0" pify "^4.0.1" -downloadjs@1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/downloadjs/-/downloadjs-1.4.7.tgz#f69f96f940e0d0553dac291139865a3cd0101e3c" - integrity sha1-9p+W+UDg0FU9rCkROYZaPNAQHjw= - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -5174,17 +5033,6 @@ duplexify@^4.0.0: readable-stream "^3.1.1" stream-shift "^1.0.0" -easymde@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a" - integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g== - dependencies: - "@types/codemirror" "^5.60.4" - "@types/marked" "^4.0.1" - codemirror "^5.63.1" - codemirror-spell-checker "1.1.2" - marked "^4.0.10" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5296,16 +5144,6 @@ enhanced-resolve@^5.9.0: graceful-fs "^4.2.4" tapable "^2.2.0" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -5725,16 +5563,6 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -6282,11 +6110,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= - fs-extra@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -6393,14 +6216,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-object@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c" - integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw= - dependencies: - is-number "^2.0.2" - isobject "^0.2.0" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -6463,13 +6278,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -get-value@^3.0.0, get-value@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - getopts@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -6775,24 +6583,7 @@ gtoken@^5.0.4: google-p12-pem "^3.1.3" jws "^4.0.0" -gulp-header@^1.7.1: - version "1.8.12" - resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" - integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== - dependencies: - concat-with-sourcemaps "*" - lodash.template "^4.4.0" - through2 "^2.0.0" - -handlebars-utils@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" - integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== - dependencies: - kind-of "^6.0.0" - typeof-article "^0.1.1" - -handlebars@^4.7.6, handlebars@^4.7.7: +handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -6874,14 +6665,6 @@ has-value@^1.0.0: has-values "^1.0.0" isobject "^3.0.0" -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" @@ -6895,13 +6678,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -6914,16 +6690,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -helper-md@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" - integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8= - dependencies: - ent "^2.2.0" - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" - remarkable "^1.6.2" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -6953,24 +6719,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-tag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed" - integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g== - dependencies: - is-self-closing "^1.0.1" - kind-of "^6.0.0" - -htmlparser2@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - http-assert@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -7390,13 +7138,6 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-even@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06" - integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY= - dependencies: - is-odd "^0.1.2" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -7486,13 +7227,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -7515,13 +7249,6 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -is-odd@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7" - integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc= - dependencies: - is-number "^3.0.0" - is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -7539,11 +7266,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -7572,13 +7294,6 @@ is-retry-allowed@^2.2.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== -is-self-closing@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4" - integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg== - dependencies: - self-closing-tags "^1.0.1" - is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -7676,11 +7391,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" - integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4= - isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -8863,7 +8573,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= @@ -8877,12 +8587,12 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: 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== @@ -9142,11 +8852,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -leaflet@^1.7.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.8.0.tgz#4615db4a22a304e8e692cae9270b983b38a2055e" - integrity sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA== - left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -9355,11 +9060,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -9470,21 +9170,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.without@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" @@ -9495,7 +9180,7 @@ lodash.xor@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY= -lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9563,13 +9248,6 @@ ltgt@2.2.1, ltgt@^2.1.2, ltgt@~2.2.0: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -9634,11 +9312,6 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^4.0.10: - version "4.0.15" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.15.tgz#0216b7c9d5fcf6ac5042343c41d81a8b1b5e1b4a" - integrity sha512-esX5lPdTfG4p8LDkv+obbRCyOKzB+820ZZyMOXJZygZBHrH9b3xXR64X4kT3sPe9Nx8qQXbmcz6kFSMt4Nfk6Q== - matcher@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" @@ -9711,7 +9384,7 @@ methods@^1.0.1, methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9936,16 +9609,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@^2.1.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" - integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - -nanoid@^3.3.3: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10498,11 +10161,6 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-srcset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" - integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= - parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -10744,11 +10402,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -picomatch@^2.2.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -10859,15 +10512,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss@^8.3.11: - version "8.4.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" - integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== - dependencies: - nanoid "^3.3.3" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" @@ -11588,16 +11232,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexparam@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" - integrity sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow== - -regexparam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" - integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -11641,21 +11275,6 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" -relative@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" - integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8= - dependencies: - isobject "^2.0.0" - -remarkable@^1.6.2: - version "1.7.4" - resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00" - integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg== - dependencies: - argparse "^1.0.10" - autolinker "~0.28.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -11859,13 +11478,6 @@ roarr@^2.15.3: semver-compare "^1.0.0" sprintf-js "^1.1.2" -rollup-plugin-polyfill-node@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.8.0.tgz#859c070822f5e38d221e5b4238cb34aa894c2b19" - integrity sha512-C4UeKedOmOBkB3FgR+z/v9kzRwV1Q/H8xWs1u1+CNe4XOV6hINfOrcO+TredKxYvopCmr+WKUSNsFUnD1RLHgQ== - dependencies: - "@rollup/plugin-inject" "^4.0.0" - rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -11932,18 +11544,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-html@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.0.tgz#e106205b468aca932e2f9baf241f24660d34e279" - integrity sha512-jfQelabOn5voO7FAfnQF7v+jsA6z9zC/O4ec0z3E35XPEtHYJT/OdUziVWlKW4irCr2kXaQAyXTXDHWAibg1tA== - dependencies: - deepmerge "^4.2.2" - escape-string-regexp "^4.0.0" - htmlparser2 "^6.0.0" - is-plain-object "^5.0.0" - parse-srcset "^1.0.2" - postcss "^8.3.11" - sanitize-s3-objectkey@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e" @@ -11982,11 +11582,6 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -screenfull@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-6.0.1.tgz#3b71e6f06b72d817a8d3be73c45ebe71fa8da1ce" - integrity sha512-yzQW+j4zMUBQC51xxWaoDYjxOtl8Kn+xvue3p6v/fv2pIi1jH4AldgVLU8TBfFVgH2x3VXlf3+YiA/AYIPlaew== - search-params@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/search-params/-/search-params-3.0.0.tgz#dbc7c243058e5a33ae1e9870be91f5aced4100d8" @@ -12004,11 +11599,6 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" -self-closing-tags@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" - integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -12144,13 +11734,6 @@ shimmer@^1.2.0: resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== -shortid@^2.2.15: - version "2.2.16" - resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" - integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== - dependencies: - nanoid "^2.1.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -12265,11 +11848,6 @@ source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -12323,11 +11901,6 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spark-md5@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.1.tgz#83a0e255734f2ab4e5c466e5a2cfc9ba2aa2124d" @@ -12650,11 +12223,6 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -striptags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - style-loader@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" @@ -12754,23 +12322,11 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== -svelte-spa-router@^3.0.5: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.2.0.tgz#fae3311d292451236cb57131262406cf312b15ee" - integrity sha512-igemo5Vs82TGBBw+DjWt6qKameXYzNs6aDXcTxou5XbEvOjiRcAM6MLkdVRCatn6u8r42dE99bt/br7T4qe/AQ== - dependencies: - regexparam "2.0.0" - svelte@^3.38.2: version "3.44.1" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63" integrity sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ== -svelte@^3.46.2: - version "3.48.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.48.0.tgz#f98c866d45e155bad8e1e88f15f9c03cd28753d3" - integrity sha512-fN2YRm/bGumvjUpu6yI3BpvZnpIm9I6A7HR4oUNYd7ggYyIwSA/BX7DJ+UXXffLp6XNcUijyLvttbPVCYa/3xQ== - svg.draggable.js@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz#c514a2f1405efb6f0263e7958f5b68fce50603ba" @@ -13103,11 +12659,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-gfm-code-block@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" - integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= - to-json-schema@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/to-json-schema/-/to-json-schema-0.2.5.tgz#ef3c3f11ad64460dcfbdbafd0fd525d69d62a98f" @@ -13345,13 +12896,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typeof-article@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af" - integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8= - dependencies: - kind-of "^3.1.0" - typeof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typeof/-/typeof-1.0.0.tgz#9c84403f2323ae5399167275497638ea1d2f2440" @@ -13362,11 +12906,6 @@ typescript@^4.5.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== -typo-js@*: - version "1.2.1" - resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b" - integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg== - uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -13669,14 +13208,6 @@ vm2@^3.9.3: acorn "^8.7.0" acorn-walk "^8.2.0" -vm2@^3.9.4: - version "3.9.9" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" - integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" @@ -14195,11 +13726,6 @@ yauzl@^2.4.2: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -year@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" - integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= - ylru@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" diff --git a/packages/types/src/documents/app/app.ts b/packages/types/src/documents/app/app.ts index d1cb9a1ab3..358c2afbf1 100644 --- a/packages/types/src/documents/app/app.ts +++ b/packages/types/src/documents/app/app.ts @@ -1,3 +1,18 @@ -export interface App { +import { Document } from "./document" + +export interface App extends Document { appId: string + type: string + version: string + componentLibraries: string[] + name: string + url: string | undefined + template: string | undefined + instance: AppInstance + tenantId: string + status: string +} + +export interface AppInstance { + _id: string } diff --git a/packages/types/src/documents/app/document.ts b/packages/types/src/documents/app/document.ts new file mode 100644 index 0000000000..5808bd91e6 --- /dev/null +++ b/packages/types/src/documents/app/document.ts @@ -0,0 +1,6 @@ +export interface Document { + _id: string + _rev?: string + createdAt: string + updatedAt: string +} diff --git a/packages/types/src/documents/app/index.ts b/packages/types/src/documents/app/index.ts index 9db35940bd..d655d99033 100644 --- a/packages/types/src/documents/app/index.ts +++ b/packages/types/src/documents/app/index.ts @@ -7,3 +7,4 @@ export * from "./role" export * from "./table" export * from "./screen" export * from "./view" +export * from "./document" diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index 1cec2868c6..1f935e0dfc 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -17,6 +17,7 @@ const http = require("http") const api = require("./api") const redis = require("./utilities/redis") const Sentry = require("@sentry/node") +import { events } from "@budibase/backend-core" // this will setup http and https proxies form env variables bootstrap() @@ -67,6 +68,7 @@ server.on("close", async () => { console.log("Server Closed") } await redis.shutdown() + await events.shutdown() }) module.exports = server.listen(parseInt(env.PORT || 4002), async () => { diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 5799e7bac7..4e0af161e3 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -293,10 +293,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@1.0.138": - version "1.0.138" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.138.tgz#5297d6cf5b9ec8c15f0a6df4c7d8273b8ac900f0" - integrity sha512-1qN/5urKX8bBXwEz266Z94rco8dTI7VqIh75m8ZcqrAfoUpjvZJS76gZxfc5U/QWPwrgVFnLtYvnEjaLbGEflg== +"@budibase/backend-core@1.0.142": + version "1.0.142" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.142.tgz#cbfa426dbf064dff0ea5f9840baae595c0f5343c" + integrity sha512-gd52tOm4mytHa3OQQVcEiwnVCvq0pC0q3YN+5D1uoGt9WaAZoshB5AhXnUPZohvpo5j8isO07qXvF+5YffPVaw== dependencies: "@techpass/passport-openidconnect" "^0.3.0" aws-sdk "^2.901.0" @@ -321,12 +321,12 @@ uuid "^8.3.2" zlib "^1.0.5" -"@budibase/pro@1.0.138": - version "1.0.138" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.138.tgz#cacbebe5ce93eb533af62a794a638944c2c61544" - integrity sha512-4ABlUZvl2h8sd8awJATf3KJeoFWV/8SoqdbKiH1ICdUcM/6dad7nhbJ15QqJL+Uuh/+mN2yEbr8V6Un2+yF+CA== +"@budibase/pro@1.0.142": + version "1.0.142" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.142.tgz#17cd53d67ce80e0cce2179caee0c03e6a0d7084e" + integrity sha512-c1SaRoVik/AVn4zNNsDciFeIr+P3J6Sc8hsE5M3pb0Zj/NzSEHXTesxcBVLlD2PYlwnvWPSoMvdDJKrEFHvOYQ== dependencies: - "@budibase/backend-core" "1.0.138" + "@budibase/backend-core" "1.0.142" node-fetch "^2.6.1" "@cspotcode/source-map-consumer@0.8.0":