diff --git a/apps/api/graphql/package.json b/apps/api/graphql/package.json index e7cee50cee4..2e0fc4bb09a 100644 --- a/apps/api/graphql/package.json +++ b/apps/api/graphql/package.json @@ -36,6 +36,7 @@ "@webiny/api-security-cognito": "0.0.0", "@webiny/api-security-so-ddb": "0.0.0", "@webiny/api-serverless-cms": "0.0.0", + "@webiny/api-sync-system": "0.0.0", "@webiny/api-tenancy": "0.0.0", "@webiny/api-tenancy-so-ddb": "0.0.0", "@webiny/api-tenant-manager": "0.0.0", diff --git a/apps/api/graphql/src/index.ts b/apps/api/graphql/src/index.ts index 33b5483bc5c..2fa72cd3839 100644 --- a/apps/api/graphql/src/index.ts +++ b/apps/api/graphql/src/index.ts @@ -50,8 +50,26 @@ import { extensions } from "./extensions"; const debug = process.env.DEBUG === "true"; const documentClient = getDocumentClient(); +/** + * #### TESTING sync system + */ +import { createSyncSystem } from "@webiny/api-sync-system"; +const syncSystem = createSyncSystem({ + documentClient, + system: { + env: process.env.WEBINY_ENV, + variant: process.env.WEBINY_ENV_VARIANT, + region: process.env.AWS_REGION, + version: process.env.WEBINY_VERSION + } +}); +/** + * #### + */ + export const handler = createHandler({ plugins: [ + syncSystem.plugins(), createBenchmarkEnablePlugin(), createWcpContext(), createWcpGraphQL(), diff --git a/apps/api/graphql/tsconfig.json b/apps/api/graphql/tsconfig.json index d1befe71e7c..e42fe7003b5 100644 --- a/apps/api/graphql/tsconfig.json +++ b/apps/api/graphql/tsconfig.json @@ -223,7 +223,9 @@ "@webiny/api-websockets/*": ["../../../packages/api-websockets/src/*"], "@webiny/api-websockets": ["../../../packages/api-websockets/src"], "@webiny/api-log/*": ["../../../packages/api-log/src/*"], - "@webiny/api-log": ["../../../packages/api-log/src"] + "@webiny/api-log": ["../../../packages/api-log/src"], + "@webiny/api-sync-system/*": ["../../../packages/api-sync-system/src/*"], + "@webiny/api-sync-system": ["../../../packages/api-sync-system/src"] }, "baseUrl": "." } diff --git a/apps/sync/resolver/.babelrc.js b/apps/sync/resolver/.babelrc.js new file mode 100644 index 00000000000..9da7674cb52 --- /dev/null +++ b/apps/sync/resolver/.babelrc.js @@ -0,0 +1 @@ +module.exports = require("@webiny/project-utils").createBabelConfigForNode({ path: __dirname }); diff --git a/apps/sync/resolver/jest.config.js b/apps/sync/resolver/jest.config.js new file mode 100644 index 00000000000..c024f43f918 --- /dev/null +++ b/apps/sync/resolver/jest.config.js @@ -0,0 +1,27 @@ +const base = require("../../../jest.config.base"); +const { log } = require("@webiny/cli/utils"); +const { getStackOutput } = require("@webiny/cli-plugin-deploy-pulumi/utils"); + +const TEST_TYPE = process.env.TEST_TYPE; +const DEPLOY_ENVIRONMENT = "dev"; + +if (TEST_TYPE !== "unit") { + log.info(`${log.info.hl("apps/sync/input")}: Assigning environment variables...`); + const stackOutput = getStackOutput({ folder: "apps/sync", env: DEPLOY_ENVIRONMENT }); + + if (stackOutput) { + Object.assign(process.env, { + AWS_REGION: stackOutput.region, + DB_TABLE: stackOutput.dynamoDbTable, + API_URL: stackOutput.apiUrl, + TEST_RUN_ID: new Date().getTime() + }); + log.success("Environment variables successfully assigned."); + } else { + log.warning(`Could not assign environment variables.`); + } + console.log(); +} + +// Finally, export Jest config to be used while tests are being run. +module.exports = { ...base({ path: __dirname }) }; diff --git a/apps/sync/resolver/package.json b/apps/sync/resolver/package.json new file mode 100644 index 00000000000..ed734720416 --- /dev/null +++ b/apps/sync/resolver/package.json @@ -0,0 +1,16 @@ +{ + "name": "sync-system-resolver", + "version": "0.1.0", + "scripts": { + "build": "yarn webiny run build", + "watch": "yarn webiny run watch" + }, + "dependencies": { + "@webiny/cli": "0.0.0", + "@webiny/api-sync-system": "0.0.0", + "@webiny/project-utils": "0.0.0" + }, + "devDependencies": { + "@webiny/cli-plugin-deploy-pulumi": "0.0.0" + } +} diff --git a/apps/sync/resolver/src/index.ts b/apps/sync/resolver/src/index.ts new file mode 100644 index 00000000000..788b1d939b6 --- /dev/null +++ b/apps/sync/resolver/src/index.ts @@ -0,0 +1,8 @@ +import { createResolverHandler } from "@webiny/api-sync-system/resolver"; + +const debug = process.env.DEBUG === "true"; + +export const handler = createResolverHandler({ + plugins: [], + debug +}); diff --git a/apps/sync/resolver/tsconfig.json b/apps/sync/resolver/tsconfig.json new file mode 100644 index 00000000000..e656e0d18d1 --- /dev/null +++ b/apps/sync/resolver/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tsconfig.json", + "include": ["src"], + "references": [ + { + "path": "../../../packages/api-sync-system/tsconfig.build.json" + } + ], + "compilerOptions": { + "paths": { + "~/*": ["./src/*"], + "@webiny/api-sync-system/*": ["../../../packages/api-sync-system/src/*"], + "@webiny/api-sync-system": ["../../../packages/api-sync-system/src"] + }, + "baseUrl": "." + } +} diff --git a/apps/sync/resolver/webiny.config.ts b/apps/sync/resolver/webiny.config.ts new file mode 100644 index 00000000000..af49be8a390 --- /dev/null +++ b/apps/sync/resolver/webiny.config.ts @@ -0,0 +1,8 @@ +import { createBuildFunction, createWatchFunction } from "@webiny/project-utils"; + +export default { + commands: { + build: createBuildFunction({ cwd: __dirname }), + watch: createWatchFunction({ cwd: __dirname }) + } +}; diff --git a/apps/sync/webiny.application.ts b/apps/sync/webiny.application.ts new file mode 100644 index 00000000000..e5f73fbddd0 --- /dev/null +++ b/apps/sync/webiny.application.ts @@ -0,0 +1,5 @@ +import { createSyncSystemApp } from "@webiny/serverless-cms-aws"; + +export default createSyncSystemApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/jest.config.base.js b/jest.config.base.js index c46a0ab9fef..255105476fa 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -21,6 +21,7 @@ module.exports = function ({ path }, presets = []) { tsPreset, { displayName: name, + resolver: "ts-jest-resolver", modulePaths: [`${path}/src`], testMatch: [`${path}/**/*${type}.test.[jt]s?(x)`], transform: { diff --git a/package.json b/package.json index d2caae2481f..eb723923021 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "@lexical/utils": "0.23.1", "@octokit/rest": "^20.0.2", "@types/fs-extra": "^11.0.4", + "@types/hoist-non-react-statics": "^3.3.5", "@types/jest": "^29.5.14", "@types/node": "^20.17.10", "@types/prettier": "^2.7.3", @@ -130,6 +131,7 @@ "semver": "^7.6.3", "ts-expect": "^1.3.0", "ts-jest": "29.1.5", + "ts-jest-resolver": "^2.0.1", "ts-node": "^10.9.2", "type-fest": "4.14.0", "typescript": "5.3.3", @@ -246,7 +248,7 @@ ] }, "resolutions": { - "@babel/runtime": "^7.26.0", + "@babel/runtime": "^7.26.7", "systeminformation": "^5.23.18", "@emotion/react": "11.10.8", "@octokit/rest": "^20.0.2", @@ -266,9 +268,6 @@ "@material/base@^14.0.0": "patch:@material/base@npm%3A14.0.0#./.yarn/patches/@material-base-npm-14.0.0-36e0a55c42.patch" }, "packageManager": "yarn@4.6.0", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.5" - }, "engines": { "node": ">=20.0.0" } diff --git a/packages/api-file-manager-aco/package.json b/packages/api-file-manager-aco/package.json index 6cc91365cba..fba15929365 100644 --- a/packages/api-file-manager-aco/package.json +++ b/packages/api-file-manager-aco/package.json @@ -40,6 +40,6 @@ "@webiny/wcp": "0.0.0", "graphql": "^15.9.0", "ttypescript": "^1.5.15", - "typescript": "4.9.5" + "typescript": "5.3.3" } } diff --git a/packages/api-sync-system/.babelrc.js b/packages/api-sync-system/.babelrc.js new file mode 100644 index 00000000000..9da7674cb52 --- /dev/null +++ b/packages/api-sync-system/.babelrc.js @@ -0,0 +1 @@ +module.exports = require("@webiny/project-utils").createBabelConfigForNode({ path: __dirname }); diff --git a/packages/api-sync-system/LICENSE b/packages/api-sync-system/LICENSE new file mode 100644 index 00000000000..f772d04d4db --- /dev/null +++ b/packages/api-sync-system/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Webiny + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/api-sync-system/README.md b/packages/api-sync-system/README.md new file mode 100644 index 00000000000..cef5276cc8b --- /dev/null +++ b/packages/api-sync-system/README.md @@ -0,0 +1,10 @@ +# @webiny/api-sync-system +[![](https://img.shields.io/npm/dw/@webiny/api-sync-system.svg)](https://www.npmjs.com/package/@webiny/api-sync-system) +[![](https://img.shields.io/npm/v/@webiny/api-sync-system.svg)](https://www.npmjs.com/package/@webiny/api-sync-system) +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +## Install +``` +yarn add @webiny/api-sync-system +``` diff --git a/packages/api-sync-system/__tests__/createSystemName.test.ts b/packages/api-sync-system/__tests__/createSystemName.test.ts new file mode 100644 index 00000000000..48eb53715b9 --- /dev/null +++ b/packages/api-sync-system/__tests__/createSystemName.test.ts @@ -0,0 +1,21 @@ +import { createSystemName } from "~/utils/createSystemName"; + +describe("createSystemName", () => { + it("should properly create a system name out of env", () => { + const result = createSystemName({ + env: "testing", + variant: undefined + }); + + expect(result).toEqual("testing"); + }); + + it("should properly create a system name out of env and variant", () => { + const result = createSystemName({ + env: "testing", + variant: "blue" + }); + + expect(result).toEqual("testing#blue"); + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/attachToDynamoDbDocument.test.ts b/packages/api-sync-system/__tests__/sync/attachToDynamoDbDocument.test.ts new file mode 100644 index 00000000000..285a4489657 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/attachToDynamoDbDocument.test.ts @@ -0,0 +1,39 @@ +import { attachToDynamoDbDocument } from "~/sync/attachToDynamoDbDocument.js"; +import { createHandler } from "~/sync/createHandler"; +import { createMockSystem } from "./mocks/system"; +import { createMockManifest } from "./mocks/manifest"; +import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb/getDocumentClient"; +import { createMockEventBridgeClient } from "~tests/sync/mocks/eventBridgeClient.js"; + +describe("attachToDynamoDbDocument", () => { + it("should not have attached decorator", async () => { + const client = getDocumentClient(); + // @ts-expect-error + expect(client.__decoratedByWebiny).toBeUndefined(); + + const anotherClient = getDocumentClient(); + // @ts-expect-error + expect(anotherClient.__decoratedByWebiny).toBeUndefined(); + }); + + it("should attach a decorator to the DynamoDB DocumentClient", async () => { + const initialClient = getDocumentClient(); + // @ts-expect-error + expect(initialClient.__decoratedByWebiny).toBeUndefined(); + + const { handler } = createHandler({ + system: createMockSystem(), + manifest: createMockManifest(), + commandConverters: [], + client: createMockEventBridgeClient() + }); + + attachToDynamoDbDocument({ + handler + }); + + const client = getDocumentClient(); + // @ts-expect-error + expect(client.__decoratedByWebiny).toBe(true); + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/createHandler.test.ts b/packages/api-sync-system/__tests__/sync/createHandler.test.ts new file mode 100644 index 00000000000..be4a0e1a1e2 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/createHandler.test.ts @@ -0,0 +1,300 @@ +import { createHandler } from "~/sync/createHandler"; +import { createMockSystem } from "~tests/sync/mocks/system.js"; +import { createMockManifest } from "~tests/sync/mocks/manifest.js"; +import { Handler } from "~/sync/handler/Handler.js"; +import { HandlerConverter } from "~/sync/handler/HandlerConverter.js"; +import { createMockEventBridgeClient } from "~tests/sync/mocks/eventBridgeClient.js"; +import { + BatchGetCommand, + BatchWriteCommand, + DeleteCommand, + GetCommand, + PutCommand, + UpdateCommand +} from "@webiny/aws-sdk/client-dynamodb"; +import { PutCommandValue } from "~/sync/handler/converter/commands/PutCommandValue.js"; +import { UpdateCommandValue } from "~/sync/handler/converter/commands/UpdateCommandValue"; +import { NullCommandValue } from "~/sync/handler/converter/commands/NullCommandValue.js"; +import { DeleteCommandValue } from "~/sync/handler/converter/commands/DeleteCommandValue"; +import { BatchWriteCommandValue } from "~/sync/handler/converter/commands/BatchWriteCommandValue.js"; + +describe("createHandler", () => { + it("should create a handler and a converter", async () => { + const { handler, converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + expect(handler).toBeInstanceOf(Handler); + expect(converter).toBeInstanceOf(HandlerConverter); + }); + + it("should convert delete command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new DeleteCommand({ + TableName: "test", + Key: { + PK: "p1", + SK: "s1" + } + }) + ); + + expect(result).toBeInstanceOf(DeleteCommandValue); + const items = result.getItems(); + expect(items).toHaveLength(1); + expect(items?.[0]).toEqual({ + command: "delete", + PK: "p1", + SK: "s1", + tableName: "test" + }); + }); + + it("should convert put command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new PutCommand({ + TableName: "test", + Item: { + PK: "p1", + SK: "s1" + } + }) + ); + + expect(result).toBeInstanceOf(PutCommandValue); + const items = result.getItems(); + expect(items).toHaveLength(1); + expect(items?.[0]).toEqual({ + command: "put", + PK: "p1", + SK: "s1", + tableName: "test" + }); + }); + + it("should convert update command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new UpdateCommand({ + TableName: "test", + Key: { + PK: "p1", + SK: "s1" + } + }) + ); + + expect(result).toBeInstanceOf(UpdateCommandValue); + const items = result.getItems(); + expect(items).toHaveLength(1); + expect(items?.[0]).toEqual({ + command: "update", + PK: "p1", + SK: "s1", + tableName: "test" + }); + }); + + it("should convert get command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new GetCommand({ + TableName: "test", + Key: { + PK: "p1", + SK: "s1" + } + }) + ); + + expect(result).toBeInstanceOf(NullCommandValue); + const items = result.getItems(); + expect(items).toBeNull(); + }); + + it("should convert batch get command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new BatchGetCommand({ + RequestItems: { + test: { + Keys: [ + { + PK: "p1", + SK: "s1" + }, + { + PK: "p2", + SK: "s2" + } + ] + } + } + }) + ); + + expect(result).toBeInstanceOf(NullCommandValue); + const items = result.getItems(); + expect(items).toBeNull(); + }); + + it("should convert batch write command", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new BatchWriteCommand({ + RequestItems: { + test: [ + { + PutRequest: { + Item: { + PK: "p1", + SK: "s1" + } + } + }, + { + DeleteRequest: { + Key: { + PK: "p2", + SK: "s2" + } + } + }, + { + PutRequest: { + Item: { + PK: "p3", + SK: "s3" + } + } + }, + { + DeleteRequest: { + Key: { + PK: "p4", + SK: "s4" + } + } + }, + { + DeleteRequest: { + Key: { + PK: "p5", + SK: "s5" + } + } + } + ] + } + }) + ); + + expect(result).toBeInstanceOf(BatchWriteCommandValue); + const items = result.getItems(); + expect(items).toHaveLength(5); + expect(items).toEqual([ + { + command: "put", + PK: "p1", + SK: "s1", + tableName: "test" + }, + { + command: "delete", + PK: "p2", + SK: "s2", + tableName: "test" + }, + { + command: "put", + PK: "p3", + SK: "s3", + tableName: "test" + }, + { + command: "delete", + PK: "p4", + SK: "s4", + tableName: "test" + }, + { + command: "delete", + PK: "p5", + SK: "s5", + tableName: "test" + } + ]); + }); + + it("should not convert batch write command if no table", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new BatchWriteCommand({ + RequestItems: {} + }) + ); + + expect(result).toBeInstanceOf(BatchWriteCommandValue); + const items = result.getItems(); + expect(items).toBeNull(); + }); + + it("should not convert batch write command if no items in table", async () => { + const { converter } = createHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + manifest: createMockManifest() + }); + + const result = converter.convert( + new BatchWriteCommand({ + RequestItems: { + test: [] + } + }) + ); + + expect(result).toBeInstanceOf(BatchWriteCommandValue); + const items = result.getItems(); + expect(items).toBeNull(); + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/handler/Handler.test.ts b/packages/api-sync-system/__tests__/sync/handler/Handler.test.ts new file mode 100644 index 00000000000..b254c1a0247 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/handler/Handler.test.ts @@ -0,0 +1,99 @@ +import { createSyncHandler, Handler } from "~/sync/handler/Handler"; +import { createMockEventBridgeClient } from "~tests/sync/mocks/eventBridgeClient.js"; +import { createMockSystem } from "~tests/sync/mocks/system.js"; +import { createMockEventBus } from "../mocks/eventBus"; +import { createMockHandlerConverter } from "~tests/sync/mocks/handlerConverter.js"; +import { + DeleteCommand, + GetCommand, + PutCommand, + UpdateCommand +} from "@webiny/aws-sdk/client-dynamodb"; + +describe("Handler", () => { + const eventBus = createMockEventBus(); + + it("should create a sync handler", async () => { + const handler = createSyncHandler({ + client: createMockEventBridgeClient(), + system: createMockSystem(), + converter: createMockHandlerConverter(), + eventBus + }); + + expect(handler).toBeInstanceOf(Handler); + }); + + it("should add commands and flush them", async () => { + const send = jest.fn(); + + const client = createMockEventBridgeClient({ + send + }); + + const handler = createSyncHandler({ + client, + system: createMockSystem(), + converter: createMockHandlerConverter({ + commandConverters: "all" + }), + eventBus + }); + + expect(client.send).not.toHaveBeenCalled(); + + /** + * No commands so nothing to flush. + */ + await handler.flush(); + expect(send).not.toHaveBeenCalled(); + + handler.add( + new GetCommand({ + TableName: "test", + Key: { + PK: "pk0", + SK: "sk0" + } + }) + ); + + handler.add( + new PutCommand({ + TableName: "test", + Item: { + PK: "pk1", + SK: "sk1" + } + }) + ); + handler.add( + new DeleteCommand({ + TableName: "test", + Key: { + PK: "pk2", + SK: "sk2" + } + }) + ); + + handler.add( + new UpdateCommand({ + TableName: "test", + Key: { + PK: "pk3", + SK: "sk3" + } + }) + ); + + // @ts-expect-error + expect(handler.commands).toHaveLength(4); + + await handler.flush(); + // @ts-expect-error + expect(handler.commands).toHaveLength(0); + + expect(send).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/handler/HandlerConverter.test.ts b/packages/api-sync-system/__tests__/sync/handler/HandlerConverter.test.ts new file mode 100644 index 00000000000..d295d2a84fe --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/handler/HandlerConverter.test.ts @@ -0,0 +1,44 @@ +import { PutCommand } from "@webiny/aws-sdk/client-dynamodb"; +import { createHandlerConverter, HandlerConverter } from "~/sync/handler/HandlerConverter"; +import { NullCommandValue } from "~/sync/handler/converter/commands/NullCommandValue.js"; + +describe("HandlerConverter", () => { + it("should create an empty handler converter", () => { + const def = new NullCommandValue(); + // @ts-expect-error + def.__test = true; + const handlerConverter = createHandlerConverter({ + default: def + }); + + expect(handlerConverter).toBeInstanceOf(HandlerConverter); + // @ts-expect-error + expect(handlerConverter.converters).toHaveLength(0); + // @ts-expect-error + expect(handlerConverter._default).toBeInstanceOf(NullCommandValue); + // @ts-expect-error + expect(handlerConverter._default.__test).toBeTrue(); + }); + + it("should return null command value as no command converters are present in handler converter", async () => { + const def = new NullCommandValue(); + // @ts-expect-error + def.__test = true; + const handlerConverter = createHandlerConverter({ + default: def + }); + + const result = handlerConverter.convert( + new PutCommand({ + TableName: "test", + Item: { + PK: "p1", + SK: "s1" + } + }) + ); + expect(result).toBeInstanceOf(NullCommandValue); + // @ts-expect-error + expect(result.__test).toBeTrue(); + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/mocks/eventBridgeClient.ts b/packages/api-sync-system/__tests__/sync/mocks/eventBridgeClient.ts new file mode 100644 index 00000000000..e6e92d69b9f --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/mocks/eventBridgeClient.ts @@ -0,0 +1,13 @@ +import type { EventBridgeClient } from "@webiny/aws-sdk/client-eventbridge/index.js"; + +export interface ICreateMockEventBridgeClientParams { + send?: typeof EventBridgeClient.prototype.send; +} + +export const createMockEventBridgeClient = ( + params?: ICreateMockEventBridgeClientParams +): Pick => { + return { + send: params?.send || jest.fn() + }; +}; diff --git a/packages/api-sync-system/__tests__/sync/mocks/eventBus.ts b/packages/api-sync-system/__tests__/sync/mocks/eventBus.ts new file mode 100644 index 00000000000..34a3c1436e2 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/mocks/eventBus.ts @@ -0,0 +1,8 @@ +import type { IHandlerEventBus } from "~/sync/handler/Handler.js"; + +export const createMockEventBus = (): IHandlerEventBus => { + return { + arn: "arn:aws:events:eu-central-1:123456789012:event-bus/sync", + name: "sync" + }; +}; diff --git a/packages/api-sync-system/__tests__/sync/mocks/handlerConverter.ts b/packages/api-sync-system/__tests__/sync/mocks/handlerConverter.ts new file mode 100644 index 00000000000..e9cefeef00a --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/mocks/handlerConverter.ts @@ -0,0 +1,39 @@ +import { createHandlerConverter } from "~/sync/handler/HandlerConverter.js"; +import { NullCommandValue } from "~/sync/handler/converter/commands/NullCommandValue.js"; +import type { ICommandConverter } from "~/sync/types.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; +import { createBatchGetCommandConverter } from "~/sync/handler/converter/BatchGetCommandConverter.js"; +import { createGetCommandConverter } from "~/sync/handler/converter/GetCommandConverter.js"; +import { createBatchWriteCommandConverter } from "~/sync/handler/converter/BatchWriteCommandConverter.js"; +import { createPutCommandConverter } from "~/sync/handler/converter/PutCommandConverter.js"; +import { createDeleteCommandConverter } from "~/sync/handler/converter/DeleteCommandConverter.js"; +import { createUpdateCommandConverter } from "~/sync/handler/converter/UpdateCommandConverter.js"; + +export interface ICreateMockHandlerConverterCommandParams { + commandConverters: NonEmptyArray | "all"; +} + +export const createMockHandlerConverter = (params?: ICreateMockHandlerConverterCommandParams) => { + const converter = createHandlerConverter({ + default: new NullCommandValue() + }); + if (!params?.commandConverters) { + return converter; + } + + const commandConverters = + params.commandConverters === "all" + ? [ + createBatchGetCommandConverter(), + createGetCommandConverter(), + createBatchWriteCommandConverter(), + createPutCommandConverter(), + createDeleteCommandConverter(), + createUpdateCommandConverter() + ] + : params.commandConverters; + + converter.register(commandConverters); + + return converter; +}; diff --git a/packages/api-sync-system/__tests__/sync/mocks/manifest.ts b/packages/api-sync-system/__tests__/sync/mocks/manifest.ts new file mode 100644 index 00000000000..0023c914620 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/mocks/manifest.ts @@ -0,0 +1,22 @@ +import type { IManifest } from "~/sync/types.js"; + +export interface ICreateMockManifestParams { + region?: string; + eventBusName?: string; + eventBusArn?: string; +} + +export const createMockManifest = (params?: ICreateMockManifestParams): IManifest => { + const { + region = "eu-central-1", + eventBusName = "event-bus-name", + eventBusArn = "arn:aws:events:eu-central-1:123456789012:event-bus/event-bus-name" + } = params || {}; + return { + sync: { + region, + eventBusName, + eventBusArn + } + }; +}; diff --git a/packages/api-sync-system/__tests__/sync/mocks/system.ts b/packages/api-sync-system/__tests__/sync/mocks/system.ts new file mode 100644 index 00000000000..58873383c00 --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/mocks/system.ts @@ -0,0 +1,23 @@ +import { ISystem } from "../types"; +import { createSystemName } from "~/utils/createSystemName.js"; + +export interface ICreateMockSystemParams { + env?: string; + variant?: string; + region?: string; + version?: string; +} + +export const createMockSystem = (params?: ICreateMockSystemParams): ISystem => { + const { env = "local", variant, region = "eu-central-1", version } = params || {}; + return { + name: createSystemName({ + env, + variant + }), + env, + variant, + region, + version: version || (process.env.WEBINY_VERSION as string) + }; +}; diff --git a/packages/api-sync-system/__tests__/sync/utils/manifest.test.ts b/packages/api-sync-system/__tests__/sync/utils/manifest.test.ts new file mode 100644 index 00000000000..3afc530ca2a --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/utils/manifest.test.ts @@ -0,0 +1,134 @@ +import { ServiceDiscovery } from "@webiny/api"; +import { getManifest } from "~/sync/utils/manifest.js"; +import { getDocumentClient } from "@webiny/project-utils/testing/dynamodb/index.js"; +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js"; + +describe("manifest", () => { + let client: DynamoDBDocument; + beforeEach(() => { + client = getDocumentClient({}); + ServiceDiscovery.setDocumentClient(client); + ServiceDiscovery.clear(); + }); + + it("should return error because no manifest is provided", async () => { + const result = await getManifest({ + documentClient: client + }); + + expect(result.data).toBeUndefined(); + expect(result.error.message).toEqual("Validation failed."); + expect(result.error.data).toEqual({ + invalidFields: { + sync: { + code: "invalid_type", + data: { + fatal: undefined, + path: ["sync"] + }, + message: "Required" + } + } + }); + }); + + it("should return error because sync is missing in manifest", async () => { + await client.put({ + TableName: process.env.DB_TABLE, + Item: { + PK: `SERVICE_MANIFEST#api#sync`, + SK: "default", + GSI1_PK: "SERVICE_MANIFESTS", + GSI1_SK: `api#sync`, + data: { + name: "sync", + manifest: {} + } + } + }); + const result = await getManifest({ + documentClient: client + }); + expect(result.data).toBeUndefined(); + expect(result.error.message).toEqual("Validation failed."); + expect(result.error.data).toEqual({ + invalidFields: { + "sync.eventBusArn": { + code: "invalid_type", + data: { + fatal: undefined, + path: ["sync", "eventBusArn"] + }, + message: "Required" + }, + "sync.eventBusName": { + code: "invalid_type", + data: { + fatal: undefined, + path: ["sync", "eventBusName"] + }, + message: "Required" + }, + "sync.region": { + code: "invalid_type", + data: { + fatal: undefined, + path: ["sync", "region"] + }, + message: "Required" + } + } + }); + }); + + it("should return manifest", async () => { + const eventBusArn = "arn:aws:events:eu-central-1:123456789012:event-bus/sync"; + const eventBusName = "sync"; + const region = "eu-central-1"; + await client.put({ + TableName: process.env.DB_TABLE, + Item: { + PK: `SERVICE_MANIFEST#api#sync`, + SK: "default", + GSI1_PK: "SERVICE_MANIFESTS", + GSI1_SK: `api#sync`, + data: { + name: "sync", + manifest: { + eventBusArn, + eventBusName, + region + } + } + } + }); + const result = await getManifest({ + documentClient: client + }); + + expect(result.error).toBeUndefined(); + expect(result.data).toEqual({ + sync: { + eventBusArn, + eventBusName, + region + } + }); + }); + + it("should return error because some strange error happened on ServiceDiscovery", async () => { + const original = ServiceDiscovery.load; + + ServiceDiscovery.load = jest.fn(() => { + throw new Error("Some strange error."); + }); + + const result = await getManifest({ + documentClient: client + }); + + expect(result.data).toBeUndefined(); + expect(result.error.message).toEqual("Some strange error."); + ServiceDiscovery.load = original; + }); +}); diff --git a/packages/api-sync-system/__tests__/sync/utils/validateSystemInput.test.ts b/packages/api-sync-system/__tests__/sync/utils/validateSystemInput.test.ts new file mode 100644 index 00000000000..b7ee9b11bbc --- /dev/null +++ b/packages/api-sync-system/__tests__/sync/utils/validateSystemInput.test.ts @@ -0,0 +1,62 @@ +import { validateSystemInput } from "~/sync/utils/validateSystemInput.js"; + +describe("validateSystemInput", () => { + it("should return system info when input is valid", () => { + const result = validateSystemInput({ + name: "test#blue", + env: "test", + variant: "blue", + version: "0.0.1", + region: "eu-central-1" + }); + + expect(result).toEqual({ + system: { + name: "test#blue", + env: "test", + variant: "blue", + version: "0.0.1", + region: "eu-central-1" + } + }); + }); + + it("should return an error when missing env", () => { + const result = validateSystemInput({ + name: "test#blue", + variant: "blue", + version: "0.0.1", + region: "eu-central-1" + }); + + expect(result).toEqual({ + error: "Sync System: No environment variable provided. Sync System will not be attached." + }); + }); + + it("should return an error when missing region", () => { + const result = validateSystemInput({ + name: "test#blue", + env: "test", + variant: "blue", + version: "0.0.1" + }); + + expect(result).toEqual({ + error: "Sync System: No region variable provided. Sync System will not be attached." + }); + }); + + it("should return an error when missing version", () => { + const result = validateSystemInput({ + name: "test#blue", + env: "test", + variant: "blue", + region: "eu-central-1" + }); + + expect(result).toEqual({ + error: "Sync System: No version variable provided. Sync System will not be attached." + }); + }); +}); diff --git a/packages/api-sync-system/jest-dynalite-config.js b/packages/api-sync-system/jest-dynalite-config.js new file mode 100644 index 00000000000..6d5840539c8 --- /dev/null +++ b/packages/api-sync-system/jest-dynalite-config.js @@ -0,0 +1,3 @@ +const { createDynaliteTables } = require("../../jest.config.base"); + +module.exports = createDynaliteTables(); diff --git a/packages/api-sync-system/jest.setup.js b/packages/api-sync-system/jest.setup.js new file mode 100644 index 00000000000..ae02284e61f --- /dev/null +++ b/packages/api-sync-system/jest.setup.js @@ -0,0 +1,6 @@ +const base = require("../../jest.config.base"); +const presets = require("@webiny/project-utils/testing/presets")(["storage-operations"]); + +module.exports = { + ...base({ path: __dirname }, presets) +}; diff --git a/packages/api-sync-system/package.json b/packages/api-sync-system/package.json new file mode 100644 index 00000000000..13914ff373d --- /dev/null +++ b/packages/api-sync-system/package.json @@ -0,0 +1,39 @@ +{ + "name": "@webiny/api-sync-system", + "version": "0.0.0", + "main": "index.js", + "repository": { + "type": "git", + "url": "https://github.com/webiny/webiny-js.git" + }, + "description": "Sync System.", + "author": "Webiny LTD", + "license": "MIT", + "dependencies": { + "@webiny/api": "0.0.0", + "@webiny/aws-sdk": "0.0.0", + "@webiny/error": "0.0.0", + "@webiny/handler": "0.0.0", + "@webiny/handler-aws": "0.0.0", + "@webiny/plugins": "0.0.0", + "@webiny/utils": "0.0.0", + "lodash": "^4.17.21", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/lodash": "^4.17.13", + "@webiny/project-utils": "0.0.0", + "jest": "^29.7.0", + "jest-dynalite": "^3.6.1", + "rimraf": "^6.0.1", + "typescript": "5.3.3" + }, + "publishConfig": { + "access": "public", + "directory": "dist" + }, + "scripts": { + "build": "node ../cli/bin.js run build", + "watch": "node ../cli/bin.js run watch" + } +} diff --git a/packages/api-sync-system/src/constants.ts b/packages/api-sync-system/src/constants.ts new file mode 100644 index 00000000000..17a6d85d95c --- /dev/null +++ b/packages/api-sync-system/src/constants.ts @@ -0,0 +1 @@ +export const SQS_EVENT_NAME = "synchronization-input" as const; diff --git a/packages/api-sync-system/src/index.ts b/packages/api-sync-system/src/index.ts new file mode 100644 index 00000000000..9314f04a85c --- /dev/null +++ b/packages/api-sync-system/src/index.ts @@ -0,0 +1,2 @@ +export * from "./sync"; +export * from "./resolver"; diff --git a/packages/api-sync-system/src/resolver/app/RecordHandler.ts b/packages/api-sync-system/src/resolver/app/RecordHandler.ts new file mode 100644 index 00000000000..f0187d65a16 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/RecordHandler.ts @@ -0,0 +1,81 @@ +import type { IRecordHandler, IRecordHandlerHandleParams } from "./abstractions/RecordHandler.js"; +import { CommandHandlerPlugin } from "../plugins/CommandHandlerPlugin.js"; +import { convertException } from "@webiny/utils"; +import type { CommandType } from "~/types.js"; +import type { PluginsContainer } from "@webiny/plugins"; +import { TransformRecordPlugin } from "../plugins/TransformRecordPlugin.js"; +import type { IFetcher } from "~/resolver/app/fetcher/types.js"; +import type { IStorer } from "~/resolver/app/storer/types.js"; + +export interface IRecordHandlerParams { + fetcher: IFetcher; + storer: IStorer; + plugins: PluginsContainer; +} + +export class RecordHandler implements IRecordHandler { + private readonly plugins: PluginsContainer; + private readonly commandHandlerPlugins: CommandHandlerPlugin[]; + private readonly transformRecordPlugins: TransformRecordPlugin[]; + private readonly fetcher: IFetcher; + private readonly storer: IStorer; + + public constructor(params: IRecordHandlerParams) { + this.plugins = params.plugins; + this.fetcher = params.fetcher; + this.storer = params.storer; + + this.transformRecordPlugins = this.plugins.byType( + TransformRecordPlugin.type + ); + this.commandHandlerPlugins = this.plugins.byType( + CommandHandlerPlugin.type + ); + } + + public async handle(params: IRecordHandlerHandleParams): Promise { + const { data } = params; + + const deployments = data.getDeployments(); + for (const deployment of deployments) { + const tables = deployment.getTables(); + for (const table of tables) { + /** + * We will handle the records in bundles. + */ + const bundles = table.bundle(); + + for (const bundle of bundles) { + try { + const commandHandler = this.getCommandHandler(bundle.command); + await commandHandler.handle({ + deployment, + table, + bundle, + plugins: this.transformRecordPlugins, + storer: this.storer, + fetcher: this.fetcher + }); + } catch (ex) { + console.error("Could not handle a bundle."); + console.log(convertException(ex)); + // TODO determine what should we do with the error. + } + } + } + } + } + + private getCommandHandler(command: CommandType): CommandHandlerPlugin { + const handler = this.commandHandlerPlugins.find(plugin => plugin.canHandle(command)); + if (!handler) { + throw new Error(`Could not find a command handler for command: ${command}`); + } + + return handler; + } +} + +export const createRecordHandler = (params: IRecordHandlerParams): IRecordHandler => { + return new RecordHandler(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/RecordsValidation.ts b/packages/api-sync-system/src/resolver/app/RecordsValidation.ts new file mode 100644 index 00000000000..d6195790767 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/RecordsValidation.ts @@ -0,0 +1,27 @@ +import type { SQSRecord } from "@webiny/aws-sdk/types/index.js"; +import type { + IRecordsValidation, + IRecordsValidationResult +} from "./abstractions/RecordsValidation.js"; +import { createZodError } from "@webiny/utils"; +import { createEventValidation } from "~/resolver/app/validation/event.js"; + +const validation = createEventValidation(); + +export class RecordsValidation implements IRecordsValidation { + public async validate(records: SQSRecord[]): Promise { + const result = await validation.safeParseAsync(records); + if (result.error) { + return { + error: createZodError(result.error) + }; + } + return { + records: result.data + }; + } +} + +export const createRecordsValidation = (): IRecordsValidation => { + return new RecordsValidation(); +}; diff --git a/packages/api-sync-system/src/resolver/app/ResolverApplication.ts b/packages/api-sync-system/src/resolver/app/ResolverApplication.ts new file mode 100644 index 00000000000..a71cf2f4936 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/ResolverApplication.ts @@ -0,0 +1,76 @@ +import type { + IResolverApplication, + IResolverApplicationResolveParams +} from "./abstractions/ResolverApplication.js"; +import { createRecordsValidation } from "./RecordsValidation.js"; +import { convertException } from "@webiny/utils"; +import type { IRecordHandler } from "./abstractions/RecordHandler.js"; +import { createRecordsData } from "~/resolver/app/data/RecordsData.js"; +import { createRecordsDataDeployment } from "~/resolver/app/data/RecordsDataDeployment.js"; +import { createRecordsDataDeploymentTable } from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import { createRecordsDataDeploymentTableItem } from "~/resolver/app/data/RecordsDataDeploymentTableItem.js"; +import type { IDeployments } from "~/resolver/deployment/types.js"; + +export interface IResolverApplicationParams { + recordHandler: IRecordHandler; + deployments: IDeployments; +} + +export class ResolverApplication implements IResolverApplication { + private readonly recordHandler: IRecordHandler; + private readonly deployments: IDeployments; + + public constructor(params: IResolverApplicationParams) { + this.recordHandler = params.recordHandler; + this.deployments = params.deployments; + } + + public async resolve(params: IResolverApplicationResolveParams): Promise { + const validation = createRecordsValidation(); + + const result = await validation.validate(params.records); + if (result.error) { + throw result.error; + } + + /** + * If needed, we can pass down system and table objects all the way to the item. + * TODO - determine if required - possibly for modifications? + */ + const data = createRecordsData({ + createRecordsDataDeployment: name => { + const deployment = this.deployments.get(name); + if (!deployment) { + throw new Error(`Deployment "${name}" not found.`); + } + return createRecordsDataDeployment({ + deployment, + createRecordsDataDeploymentTable: ({ tableName }) => { + return createRecordsDataDeploymentTable({ + name: tableName, + createRecordsDataDeploymentTableItem: ({ item }) => { + return createRecordsDataDeploymentTableItem(item); + } + }); + } + }); + } + }); + + await data.ingest({ + records: result.records + }); + + try { + await this.recordHandler.handle({ + data + }); + } catch (ex) { + console.error(convertException(ex)); + } + } +} + +export const createResolverApp = (params: IResolverApplicationParams): IResolverApplication => { + return new ResolverApplication(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/abstractions/RecordHandler.ts b/packages/api-sync-system/src/resolver/app/abstractions/RecordHandler.ts new file mode 100644 index 00000000000..0c3aad3a423 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/abstractions/RecordHandler.ts @@ -0,0 +1,9 @@ +import type { IRecordsData } from "~/resolver/app/data/RecordsData.js"; + +export interface IRecordHandlerHandleParams { + data: IRecordsData; +} + +export interface IRecordHandler { + handle(params: IRecordHandlerHandleParams): Promise; +} diff --git a/packages/api-sync-system/src/resolver/app/abstractions/Records.ts b/packages/api-sync-system/src/resolver/app/abstractions/Records.ts new file mode 100644 index 00000000000..912490490da --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/abstractions/Records.ts @@ -0,0 +1,5 @@ +import type { IRecordsData } from "~/resolver/app/data/RecordsData.js"; + +export interface IRecords { + data: IRecordsData; +} diff --git a/packages/api-sync-system/src/resolver/app/abstractions/RecordsValidation.ts b/packages/api-sync-system/src/resolver/app/abstractions/RecordsValidation.ts new file mode 100644 index 00000000000..5735a8d7cc2 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/abstractions/RecordsValidation.ts @@ -0,0 +1,18 @@ +import type { SQSRecord } from "@webiny/aws-sdk/types"; +import type { IResolverSQSRecord } from "~/resolver/app/abstractions/ResolverRecord.js"; + +export interface IRecordsValidationValid { + records: IResolverSQSRecord[]; + error?: never; +} + +export interface IRecordsValidationError { + records?: never; + error: Error; +} + +export type IRecordsValidationResult = IRecordsValidationValid | IRecordsValidationError; + +export interface IRecordsValidation { + validate(records: SQSRecord[]): Promise; +} diff --git a/packages/api-sync-system/src/resolver/app/abstractions/ResolverApplication.ts b/packages/api-sync-system/src/resolver/app/abstractions/ResolverApplication.ts new file mode 100644 index 00000000000..52f0f8ae1e5 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/abstractions/ResolverApplication.ts @@ -0,0 +1,9 @@ +import type { SQSRecord } from "@webiny/aws-sdk/types/index.js"; + +export interface IResolverApplicationResolveParams { + records: SQSRecord[]; +} + +export interface IResolverApplication { + resolve(params: IResolverApplicationResolveParams): Promise; +} diff --git a/packages/api-sync-system/src/resolver/app/abstractions/ResolverRecord.ts b/packages/api-sync-system/src/resolver/app/abstractions/ResolverRecord.ts new file mode 100644 index 00000000000..ff123386a0f --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/abstractions/ResolverRecord.ts @@ -0,0 +1,47 @@ +import type { GenericRecord } from "@webiny/api/types.js"; +import type { IDetail } from "~/sync/handler/types.js"; +import type { ExtendedCommandType } from "~/types.js"; +import { SQS_EVENT_NAME } from "~/constants.js"; + +export interface IResolverRecordBodyItem { + PK: string; + SK: string; + command: ExtendedCommandType; + /** + * Table name to which the record belongs. + * There will be multiple tables that will get populated through the system (regular table and elasticsearch for start). + */ + tableName: string; +} + +export interface IResolverSQSRecordBody { + version: `${number}`; + id: string; + "detail-type": typeof SQS_EVENT_NAME; + source: `webiny:${string}`; + account: `${number}`; + time: Date; + region: string; + resources: unknown[]; + detail: IDetail; + eventBusName: string; +} + +export interface IResolverSQSRecordAttributes { + ApproximateReceiveCount: string; + SentTimestamp: string; + SenderId: string; + ApproximateFirstReceiveTimestamp: string; +} + +export interface IResolverSQSRecord { + messageId: string; + receiptHandle: string; + body: IResolverSQSRecordBody; + attributes: IResolverSQSRecordAttributes; + messageAttributes?: GenericRecord; + md5OfBody: string; + eventSource: string; + eventSourceARN: string; + awsRegion: string; +} diff --git a/packages/api-sync-system/src/resolver/app/commandHandler/DeleteCommandHandler.ts b/packages/api-sync-system/src/resolver/app/commandHandler/DeleteCommandHandler.ts new file mode 100644 index 00000000000..74697c2352c --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/commandHandler/DeleteCommandHandler.ts @@ -0,0 +1,47 @@ +import type { IRecordsDataDeployment } from "~/resolver/app/data/RecordsDataDeployment.js"; +import type { + IRecordsDataDeploymentTable, + IRecordsDataDeploymentTableBundle +} from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import type { IFetcher } from "../fetcher/types"; +import type { IStorer } from "../storer/types"; + +export interface IDeleteCommandHandlerHandleParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; +} + +export interface IDeleteCommandHandlerParams { + fetcher: IFetcher; + storer: IStorer; +} + +export class DeleteCommandHandler { + private readonly fetcher: IFetcher; + private readonly storer: IStorer; + + public constructor(params: IDeleteCommandHandlerParams) { + this.fetcher = params.fetcher; + this.storer = params.storer; + } + public async handle(config: IDeleteCommandHandlerHandleParams): Promise { + const { deployment, table, bundle } = config; + + const { items } = await this.fetcher.exec({ deployment, table, bundle }); + + const result = items.map(item => { + return { + PK: item.PK, + SK: item.SK + }; + }); + + await this.storer.exec({ + deployment, + table, + bundle, + items: result + }); + } +} diff --git a/packages/api-sync-system/src/resolver/app/commandHandler/PutCommandHandler.ts b/packages/api-sync-system/src/resolver/app/commandHandler/PutCommandHandler.ts new file mode 100644 index 00000000000..3f6459ad01a --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/commandHandler/PutCommandHandler.ts @@ -0,0 +1,75 @@ +import type { IRecordsDataDeployment } from "~/resolver/app/data/RecordsDataDeployment.js"; +import type { TransformRecordPlugin } from "~/resolver/plugins/TransformRecordPlugin"; +import { middleware, type MiddlewareCallable } from "@webiny/utils"; +import type { GenericRecord } from "@webiny/api/types.js"; +import type { + IRecordsDataDeploymentTable, + IRecordsDataDeploymentTableBundle +} from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import type { IFetcher } from "../fetcher/types"; +import type { IStorer } from "../storer/types"; + +export interface IPutCommandHandlerHandleParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; +} + +export interface IPutCommandHandlerParams { + plugins: TransformRecordPlugin[]; + fetcher: IFetcher; + storer: IStorer; +} + +export interface IMiddlewareParams { + record: GenericRecord; + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + next: () => Promise; +} + +export class PutCommandHandler { + private readonly plugins: TransformRecordPlugin[]; + private readonly fetcher: IFetcher; + private readonly storer: IStorer; + + public constructor(params: IPutCommandHandlerParams) { + this.plugins = params.plugins; + this.fetcher = params.fetcher; + this.storer = params.storer; + } + public async handle(config: IPutCommandHandlerHandleParams): Promise { + const { deployment, table, bundle } = config; + + const runner = middleware( + this.plugins.map(plugin => { + return async (params: IMiddlewareParams, next: MiddlewareCallable) => { + return plugin.transform({ + ...params, + next + }); + }; + }) + ); + + const { items } = await this.fetcher.exec({ deployment, table, bundle }); + + const result = await Promise.all( + items.map(async record => { + return runner({ + deployment, + table, + bundle, + record + }); + }) + ); + + await this.storer.exec({ + deployment, + table, + bundle, + items: result + }); + } +} diff --git a/packages/api-sync-system/src/resolver/app/commandHandler/delete.ts b/packages/api-sync-system/src/resolver/app/commandHandler/delete.ts new file mode 100644 index 00000000000..e80fb535d6f --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/commandHandler/delete.ts @@ -0,0 +1,22 @@ +import { createCommandHandlerPlugin } from "~/resolver/plugins/CommandHandlerPlugin.js"; +import { DeleteCommandHandler } from "./DeleteCommandHandler"; + +export const createDeleteCommandHandlerPlugin = () => { + return createCommandHandlerPlugin({ + canHandle: command => { + return command === "delete"; + }, + handle: async params => { + const handler = new DeleteCommandHandler({ + fetcher: params.fetcher, + storer: params.storer + }); + + return handler.handle({ + bundle: params.bundle, + table: params.table, + deployment: params.deployment + }); + } + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/commandHandler/put.ts b/packages/api-sync-system/src/resolver/app/commandHandler/put.ts new file mode 100644 index 00000000000..13a4ce61be0 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/commandHandler/put.ts @@ -0,0 +1,23 @@ +import { createCommandHandlerPlugin } from "~/resolver/plugins/CommandHandlerPlugin.js"; +import { PutCommandHandler } from "./PutCommandHandler"; + +export const createPutCommandHandlerPlugin = () => { + return createCommandHandlerPlugin({ + canHandle: command => { + return command === "put"; + }, + handle: async params => { + const handler = new PutCommandHandler({ + plugins: params.plugins, + fetcher: params.fetcher, + storer: params.storer + }); + + return handler.handle({ + bundle: params.bundle, + table: params.table, + deployment: params.deployment + }); + } + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/data/RecordsData.ts b/packages/api-sync-system/src/resolver/app/data/RecordsData.ts new file mode 100644 index 00000000000..8830678638c --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/data/RecordsData.ts @@ -0,0 +1,70 @@ +import type { IRecordsDataDeployment } from "./RecordsDataDeployment.js"; +import type { IResolverSQSRecord } from "~/resolver/app/abstractions/ResolverRecord.js"; +import { convertException } from "@webiny/utils/exception.js"; +import type { ISystem } from "~/sync/types.js"; + +export interface IRecordsDataDeploymentCreateRecordsDataDeploymentCallable { + (name: string): IRecordsDataDeployment; +} + +export interface IRecordsDataParams { + createRecordsDataDeployment: IRecordsDataDeploymentCreateRecordsDataDeploymentCallable; +} + +export interface IRecordsDataIngestParams { + records: IResolverSQSRecord[]; +} + +export interface IRecordsData { + getDeployments(): IRecordsDataDeployment[]; + ingest(params: IRecordsDataIngestParams): Promise; +} + +export class RecordsData implements IRecordsData { + private readonly data: IRecordsDataDeployment[] = []; + + private readonly createRecordsDataDeployment: IRecordsDataDeploymentCreateRecordsDataDeploymentCallable; + + public constructor(params: IRecordsDataParams) { + this.createRecordsDataDeployment = params.createRecordsDataDeployment; + } + + public async ingest(params: IRecordsDataIngestParams): Promise { + const { records } = params; + + for (const record of records) { + const deployment = this.getDeployment(record.body.detail.source); + if (!deployment) { + continue; + } + await deployment.ingest({ + items: record.body.detail.items + }); + } + } + + public getDeployments(): IRecordsDataDeployment[] { + return this.data; + } + + private getDeployment(system: ISystem): IRecordsDataDeployment | null { + const existingDeployment = this.data.find(item => item.deployment.name === system.name); + if (existingDeployment) { + return existingDeployment; + } + + try { + const newDeployment = this.createRecordsDataDeployment(system.name); + this.data.push(newDeployment); + return newDeployment; + } catch (ex) { + console.error("Error while creating system out of deployments."); + console.log(convertException(ex)); + } + return null; + } +} + +export const createRecordsData = (params: IRecordsDataParams): IRecordsData => { + return new RecordsData(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/data/RecordsDataDeployment.ts b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeployment.ts new file mode 100644 index 00000000000..383e5e6957f --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeployment.ts @@ -0,0 +1,75 @@ +import type { IRecordsDataDeploymentTable } from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; +import type { IDetailItem } from "~/sync/handler/types.js"; +import type { IDeployment } from "~/resolver/deployment/types.js"; + +export interface ICreateRecordsDataDeploymentTableCallableParams { + tableName: string; +} + +export interface ICreateRecordsDataDeploymentTableCallable { + (params: ICreateRecordsDataDeploymentTableCallableParams): IRecordsDataDeploymentTable; +} + +export interface IRecordsDataDeploymentParams { + deployment: IDeployment; + createRecordsDataDeploymentTable: ICreateRecordsDataDeploymentTableCallable; +} + +export interface IRecordsDataDeploymentIngestParams { + items: NonEmptyArray; +} + +/** + * Represents a deployment where records came from. + */ +export interface IRecordsDataDeployment { + deployment: IDeployment; + ingest(params: IRecordsDataDeploymentIngestParams): Promise; + getTables(): IRecordsDataDeploymentTable[]; +} + +export class RecordsDataDeployment implements IRecordsDataDeployment { + public readonly deployment: IDeployment; + + private readonly createRecordsDataDeploymentTable: ICreateRecordsDataDeploymentTableCallable; + private readonly tables: IRecordsDataDeploymentTable[] = []; + + public constructor(params: IRecordsDataDeploymentParams) { + this.deployment = params.deployment; + this.createRecordsDataDeploymentTable = params.createRecordsDataDeploymentTable; + } + + public async ingest(params: IRecordsDataDeploymentIngestParams): Promise { + const { items } = params; + + for (const item of items) { + const table = this.getTable(item.tableName); + + table.add({ + ...item, + command: item.command === "delete" ? "delete" : "put" + }); + } + } + + public getTables(): IRecordsDataDeploymentTable[] { + return this.tables; + } + + private getTable(tableName: string): IRecordsDataDeploymentTable { + const existingTable = this.tables.find(item => item.name === tableName); + if (existingTable) { + return existingTable; + } + const newTable = this.createRecordsDataDeploymentTable({ tableName }); + this.tables.push(newTable); + return newTable; + } +} + +export const createRecordsDataDeployment = ( + params: IRecordsDataDeploymentParams +): IRecordsDataDeployment => { + return new RecordsDataDeployment(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTable.ts b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTable.ts new file mode 100644 index 00000000000..57b07f41418 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTable.ts @@ -0,0 +1,89 @@ +import type { IRecordsDataDeploymentTableItem } from "./RecordsDataDeploymentTableItem.js"; +import type { CommandType } from "~/types.js"; + +export interface IRecordsDataDeploymentTableBundle { + items: IRecordsDataDeploymentTableItem[]; + command: CommandType; +} + +export interface IRecordsDataDeploymentTable { + name: string; + add(item: IRecordsDataDeploymentTableItem): void; + getItems(): IRecordsDataDeploymentTableItem[]; + /** + * Method that will bundle all items by command type. + * We need to keep the order of the operations as they are received. + * So there might be few bundles: + * * put - 10 operations + * * delete - 1 operation + * * put - 5 operations + * ...etc + */ + bundle(): IRecordsDataDeploymentTableBundle[]; +} + +export interface ICreateRecordsDataDeploymentTableParamsCallableParams { + item: IRecordsDataDeploymentTableItem; +} + +export interface ICreateRecordsDataDeploymentTableParamsCallable { + ( + params: ICreateRecordsDataDeploymentTableParamsCallableParams + ): IRecordsDataDeploymentTableItem; +} + +export interface IRecordsDataDeploymentTableParams { + name: string; + createRecordsDataDeploymentTableItem: ICreateRecordsDataDeploymentTableParamsCallable; +} + +export class RecordsDataDeploymentTable implements IRecordsDataDeploymentTable { + public readonly name: string; + + private readonly createRecordsDataDeploymentTableItem: ICreateRecordsDataDeploymentTableParamsCallable; + private readonly items: IRecordsDataDeploymentTableItem[] = []; + + public constructor(params: IRecordsDataDeploymentTableParams) { + this.name = params.name; + this.createRecordsDataDeploymentTableItem = params.createRecordsDataDeploymentTableItem; + } + + public getItems(): IRecordsDataDeploymentTableItem[] { + return this.items; + } + + public add(item: IRecordsDataDeploymentTableItem): void { + this.items.push(this.createRecordsDataDeploymentTableItem({ item })); + } + + public bundle(): IRecordsDataDeploymentTableBundle[] { + const bundles: IRecordsDataDeploymentTableBundle[] = []; + let bundle: IRecordsDataDeploymentTableBundle | null = null; + for (const item of this.items) { + if (!bundle) { + bundle = this.createBundle(item); + continue; + } else if (bundle.command !== item.command) { + bundles.push(structuredClone(bundle)); + bundle = this.createBundle(item); + continue; + } + bundle.items.push(structuredClone(item)); + } + + return bundles; + } + + private createBundle(item: IRecordsDataDeploymentTableItem): IRecordsDataDeploymentTableBundle { + return { + items: [item], + command: item.command + }; + } +} + +export const createRecordsDataDeploymentTable = ( + params: IRecordsDataDeploymentTableParams +): IRecordsDataDeploymentTable => { + return new RecordsDataDeploymentTable(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTableItem.ts b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTableItem.ts new file mode 100644 index 00000000000..ccb10b33a63 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/data/RecordsDataDeploymentTableItem.ts @@ -0,0 +1,31 @@ +import type { CommandType } from "~/types.js"; + +export interface IRecordsDataDeploymentTableItem { + PK: string; + SK: string; + command: CommandType; +} + +export interface IRecordsDataDeploymentTableItemParams { + PK: string; + SK: string; + command: CommandType; +} + +export class RecordsDataDeploymentTableItem implements IRecordsDataDeploymentTableItem { + public readonly PK: string; + public readonly SK: string; + public readonly command: CommandType; + + public constructor(params: IRecordsDataDeploymentTableItemParams) { + this.PK = params.PK; + this.SK = params.SK; + this.command = params.command; + } +} + +export const createRecordsDataDeploymentTableItem = ( + params: IRecordsDataDeploymentTableItemParams +): IRecordsDataDeploymentTableItem => { + return new RecordsDataDeploymentTableItem(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/fetcher/FetchExecute.ts b/packages/api-sync-system/src/resolver/app/fetcher/FetchExecute.ts new file mode 100644 index 00000000000..db0cea65197 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/fetcher/FetchExecute.ts @@ -0,0 +1,117 @@ +import type { GenericRecord } from "@webiny/api/types"; +import { BatchGetCommand, type DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb"; +import lodashChunk from "lodash/chunk"; +import type { IRecordsDataDeploymentTableItem } from "~/resolver/app/data/RecordsDataDeploymentTableItem.js"; +import { convertException } from "@webiny/utils"; +import { IFetchExecute, type IFetchExecuteExecuteParams } from "./types"; + +export interface IFetchExecuteParams { + maxBatchSize?: number; + maxRetries?: number; + retryDelay?: number; +} + +interface IFetcherExecuteRunCommandResult { + items: T[]; + unprocessedKeys: IKeys[]; +} + +interface IKeys { + PK: string; + SK: string; +} + +interface IFetcherExecuteRunCommandParams { + command: BatchGetCommand; + table: string; + client: Pick; +} + +export class FetchExecute implements IFetchExecute { + private readonly maxBatchSize: number; + private readonly maxRetries: number; + private readonly retryDelay: number; + private retryCount = 0; + + public constructor(params: IFetchExecuteParams) { + this.maxBatchSize = params.maxBatchSize || 100; + this.maxRetries = params.maxRetries || 10; + this.retryDelay = params.retryDelay || 1000; + } + + public async execute(params: IFetchExecuteExecuteParams) { + const { client, table, bundle } = params; + const batches = lodashChunk(bundle.items, this.maxBatchSize); + + const results: T[] = []; + for (const batch of batches) { + let keys = this.getKeys(batch); + + while (keys.length > 0) { + const command = new BatchGetCommand({ + RequestItems: { + [table.name]: { + Keys: keys + } + } + }); + this.retryCount = 0; + const { items, unprocessedKeys } = await this.runCommand({ + command, + client, + table: table.name + }); + + results.push(...items); + + keys = unprocessedKeys; + } + } + return results; + } + + private async runCommand( + params: IFetcherExecuteRunCommandParams + ): Promise> { + const { command, table, client } = params; + + try { + const result = await client.send(command); + + return { + items: (result.Responses?.[table] || []) as T[], + unprocessedKeys: (result.UnprocessedKeys?.[table]?.Keys || []) as IKeys[] + }; + } catch (ex) { + if (this.retryCount < this.maxRetries) { + this.retryCount++; + await this.sleep(); + return await this.runCommand(params); + } + console.error(`Max retries reached. Could not fetch items from table: ${table}`); + console.log(convertException(ex)); + throw ex; + } + } + + private async sleep() { + return new Promise(resolve => { + setTimeout(() => { + resolve(true); + }, this.retryDelay); + }); + } + + private getKeys(items: IRecordsDataDeploymentTableItem[]): IKeys[] { + return items.map(item => { + return { + PK: item.PK, + SK: item.SK + }; + }); + } +} + +export const createFetchExecute = (params: IFetchExecuteParams): IFetchExecute => { + return new FetchExecute(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/fetcher/Fetcher.ts b/packages/api-sync-system/src/resolver/app/fetcher/Fetcher.ts new file mode 100644 index 00000000000..3858e0dfbab --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/fetcher/Fetcher.ts @@ -0,0 +1,50 @@ +import type { GenericRecord } from "@webiny/api/types"; +import type { IFetcher, IFetcherExecParams, IFetcherExecResult } from "./types"; +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb"; +import { createFetchExecute } from "./FetchExecute.js"; +import type { IDeployment } from "~/resolver/deployment/types.js"; + +export interface IFetcherParamsCreateDocumentClientCallable { + (deployment: Pick): Pick; +} + +export interface IFetcherParams { + createDocumentClient: IFetcherParamsCreateDocumentClientCallable; +} + +export class Fetcher implements IFetcher { + private readonly createDocumentClient: IFetcherParamsCreateDocumentClientCallable; + + public constructor(params: IFetcherParams) { + this.createDocumentClient = params.createDocumentClient; + } + + public async exec( + params: IFetcherExecParams + ): Promise> { + const { deployment, table, bundle } = params; + + const client = this.createDocumentClient(deployment.deployment); + + const cmd = createFetchExecute({ + maxBatchSize: params.maxBatchSize, + maxRetries: params.maxRetries, + retryDelay: params.retryDelay + }); + + const items = await cmd.execute({ + client, + deployment: deployment.deployment, + table, + bundle + }); + + return { + items + }; + } +} + +export const createFetcher = (params: IFetcherParams): IFetcher => { + return new Fetcher(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/fetcher/types.ts b/packages/api-sync-system/src/resolver/app/fetcher/types.ts new file mode 100644 index 00000000000..803fca417ef --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/fetcher/types.ts @@ -0,0 +1,36 @@ +import type { GenericRecord } from "@webiny/api/types.js"; +import type { IRecordsDataDeployment } from "../data/RecordsDataDeployment.js"; +import type { + IRecordsDataDeploymentTable, + IRecordsDataDeploymentTableBundle +} from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import type { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { IDeployment } from "~/resolver/deployment/types.js"; + +export interface IFetcherExecParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; + maxBatchSize?: number; + maxRetries?: number; + retryDelay?: number; +} + +export interface IFetcherExecResult { + items: T[]; +} + +export interface IFetcher { + exec(params: IFetcherExecParams): Promise>; +} + +export interface IFetchExecuteExecuteParams { + client: Pick, "send">; + deployment: Pick; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; +} + +export interface IFetchExecute { + execute(params: IFetchExecuteExecuteParams): Promise; +} diff --git a/packages/api-sync-system/src/resolver/app/storer/StoreExecute.ts b/packages/api-sync-system/src/resolver/app/storer/StoreExecute.ts new file mode 100644 index 00000000000..5e613d961dc --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/storer/StoreExecute.ts @@ -0,0 +1,91 @@ +import { GenericRecord } from "@webiny/api/types"; +import { BatchWriteCommand } from "@webiny/aws-sdk/client-dynamodb"; +import type { IStoreExecute, IStoreExecuteExecuteParams } from "~/resolver/app/storer/types.js"; +import lodashChunk from "lodash/chunk"; +import { convertException } from "@webiny/utils/exception.js"; + +export interface IStoreExecuteParams { + maxBatchSize?: number; + maxRetries?: number; + retryDelay?: number; +} + +export class StoreExecute implements IStoreExecute { + private readonly maxBatchSize: number; + private readonly maxRetries: number; + private readonly retryDelay: number; + private retryCount = 0; + + public constructor(params: IStoreExecuteParams) { + this.maxBatchSize = params.maxBatchSize || 25; + this.maxRetries = params.maxRetries || 10; + this.retryDelay = params.retryDelay || 1000; + } + public async execute(params: IStoreExecuteExecuteParams): Promise { + const { items, table, bundle, client } = params; + + const batches = lodashChunk(items, this.maxBatchSize); + + const requestType = bundle.command === "delete" ? "DeleteRequest" : "PutRequest"; + const requestTypeKey = bundle.command === "delete" ? "Key" : "Item"; + + for (const batch of batches) { + let cmd: BatchWriteCommand | undefined = undefined; + this.resetRetries(); + do { + cmd = new BatchWriteCommand({ + RequestItems: { + [table]: batch.map(item => { + return { + [requestType]: { + [requestTypeKey]: item as Record + } + }; + }) + } + }); + try { + const result = await client.send(cmd); + + if (!result.UnprocessedItems?.[table]) { + cmd = undefined; + this.resetRetries(); + continue; + } + cmd = new BatchWriteCommand({ + RequestItems: result.UnprocessedItems + }); + } catch (ex) { + if (this.retryCount < this.maxRetries) { + await this.waitRetry(); + continue; + } + console.error("Error executing batch write command."); + console.log(convertException(ex)); + throw new Error("Batch write command failed"); + } + } while (cmd); + } + } + + private async sleep(): Promise { + return new Promise(resolve => { + setTimeout(() => { + resolve(); + }, this.retryDelay); + }); + } + + private async waitRetry(): Promise { + this.retryCount++; + return await this.sleep(); + } + + private resetRetries(): void { + this.retryCount = 0; + } +} + +export const createStoreExecute = (params: IStoreExecuteParams): IStoreExecute => { + return new StoreExecute(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/storer/Storer.ts b/packages/api-sync-system/src/resolver/app/storer/Storer.ts new file mode 100644 index 00000000000..d867953c04d --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/storer/Storer.ts @@ -0,0 +1,52 @@ +import type { IStorer, IStorerExecParams } from "./types"; +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { IDeployment, IDeployments } from "~/resolver/deployment/types.js"; +import { createStoreExecute } from "~/resolver/app/storer/StoreExecute.js"; + +export interface IStorerParamsCreateDocumentClientCallable { + (deployment: Pick): Pick; +} + +export interface IStorerParams { + createDocumentClient: IStorerParamsCreateDocumentClientCallable; + deployments: IDeployments; +} + +export class Storer implements IStorer { + private readonly createDocumentClient: IStorerParamsCreateDocumentClientCallable; + private readonly deployments: IDeployments; + + public constructor(params: IStorerParams) { + this.createDocumentClient = params.createDocumentClient; + this.deployments = params.deployments; + } + + public async exec(params: IStorerExecParams): Promise { + const { deployment, table, bundle, items } = params; + + const deployments = this.deployments.without(deployment.deployment); + if (deployments.hasAny() === false) { + console.error("No deployments found which need to be synced."); + console.log("Please check your deployed and connected deployments."); + return; + } + const storeExecute = createStoreExecute({}); + + for (const deployment of deployments.all()) { + const client = this.createDocumentClient({ + region: deployment.region + }); + await storeExecute.execute({ + deployment, + table: table.name, + bundle, + items, + client + }); + } + } +} + +export const createStorer = (params: IStorerParams): IStorer => { + return new Storer(params); +}; diff --git a/packages/api-sync-system/src/resolver/app/storer/types.ts b/packages/api-sync-system/src/resolver/app/storer/types.ts new file mode 100644 index 00000000000..4d8dd52942f --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/storer/types.ts @@ -0,0 +1,31 @@ +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb"; +import type { IRecordsDataDeployment } from "../data/RecordsDataDeployment.js"; +import type { + IRecordsDataDeploymentTable, + IRecordsDataDeploymentTableBundle +} from "../data/RecordsDataDeploymentTable.js"; +import type { GenericRecord } from "@webiny/api/types"; +import type { IDeployment } from "~/resolver/deployment/types.js"; + +export interface IStorerExecParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; + items: T[]; +} + +export interface IStorer { + exec(params: IStorerExecParams): Promise; +} + +export interface IStoreExecuteExecuteParams { + table: string; + items: T[]; + bundle: IRecordsDataDeploymentTableBundle; + deployment: IDeployment; + client: Pick; +} + +export interface IStoreExecute { + execute(params: IStoreExecuteExecuteParams): Promise; +} diff --git a/packages/api-sync-system/src/resolver/app/validation/body.ts b/packages/api-sync-system/src/resolver/app/validation/body.ts new file mode 100644 index 00000000000..b4c5f8c268a --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/body.ts @@ -0,0 +1,42 @@ +import zod from "zod"; +import { createJsonTransform } from "./createJsonTransform.js"; +import { createDetailValidation } from "./detail.js"; +import { SQS_EVENT_NAME } from "~/constants.js"; +import { createNumericStringValidation } from "~/resolver/app/validation/numericString.js"; + +const detailTransform = createJsonTransform("Detail"); + +const detailValidation = createDetailValidation(); + +export const createBodyValidation = () => { + return zod.object({ + version: createNumericStringValidation("version"), + id: zod.string(), + "detail-type": zod.string().transform((value, ctx) => { + if (value === SQS_EVENT_NAME) { + return SQS_EVENT_NAME; + } + ctx.addIssue({ + code: zod.ZodIssueCode.custom, + message: `"detail-type" must be "${SQS_EVENT_NAME}".` + }); + return zod.NEVER; + }), + source: zod.string().transform((value, ctx) => { + if (value.startsWith("webiny:")) { + return value as `webiny:${string}`; + } + ctx.addIssue({ + code: zod.ZodIssueCode.custom, + message: `"source" must start with "webiny:".` + }); + return zod.NEVER; + }), + account: createNumericStringValidation("account"), + time: zod.string().transform(value => new Date(value)), + region: zod.string(), + resources: zod.array(zod.string()), + detail: detailTransform.pipe(detailValidation), + eventBusName: zod.string() + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/validation/createJsonTransform.ts b/packages/api-sync-system/src/resolver/app/validation/createJsonTransform.ts new file mode 100644 index 00000000000..1b4cb02af08 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/createJsonTransform.ts @@ -0,0 +1,15 @@ +import zod from "zod"; + +export const createJsonTransform = (name: string) => { + return zod.string().transform((value, ctx) => { + try { + return JSON.parse(value); + } catch (e) { + ctx.addIssue({ + code: zod.ZodIssueCode.custom, + message: `${name} must be a valid JSON string.` + }); + return zod.NEVER; + } + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/validation/detail.ts b/packages/api-sync-system/src/resolver/app/validation/detail.ts new file mode 100644 index 00000000000..94a411c78a2 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/detail.ts @@ -0,0 +1,38 @@ +import zod from "zod"; +import type { NonEmptyArray } from "@webiny/api/types.js"; +import type { IResolverRecordBodyItem } from "~/resolver/app/abstractions/ResolverRecord.js"; +import { createSystemValidation } from "./system.js"; + +const convert = (input: IResolverRecordBodyItem[]) => { + /** + * We can safely cast as NonEmptyArray here because we already validated that the array is not empty. + */ + return input as NonEmptyArray; +}; + +export const createDetailValidation = () => { + return zod.object({ + items: zod + .array( + zod.object({ + PK: zod.string(), + SK: zod.string(), + tableName: zod.string(), + command: zod.enum(["update", "put", "delete"]) + }) + ) + .refine( + values => { + return values.length > 0; + }, + { + message: `"items" array must not be empty.` + } + ) + .transform(values => { + return convert(values); + }), + command: zod.enum(["update", "put", "batchWrite", "delete"]), + source: createSystemValidation() + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/validation/event.ts b/packages/api-sync-system/src/resolver/app/validation/event.ts new file mode 100644 index 00000000000..3bc221cc58e --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/event.ts @@ -0,0 +1,26 @@ +import zod from "zod"; +import { createJsonTransform } from "~/resolver/app/validation/createJsonTransform.js"; +import { createBodyValidation } from "~/resolver/app/validation/body.js"; + +const bodyTransform = createJsonTransform("Body"); + +export const createEventValidation = () => { + return zod.array( + zod.object({ + messageId: zod.string(), + receiptHandle: zod.string(), + body: bodyTransform.pipe(createBodyValidation()), + attributes: zod.object({ + ApproximateReceiveCount: zod.string(), + SentTimestamp: zod.string(), + SenderId: zod.string(), + ApproximateFirstReceiveTimestamp: zod.string() + }), + messageAttributes: zod.object({}).passthrough().optional(), + md5OfBody: zod.string(), + eventSource: zod.string(), + eventSourceARN: zod.string(), + awsRegion: zod.string() + }) + ); +}; diff --git a/packages/api-sync-system/src/resolver/app/validation/numericString.ts b/packages/api-sync-system/src/resolver/app/validation/numericString.ts new file mode 100644 index 00000000000..e63e8a95d95 --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/numericString.ts @@ -0,0 +1,14 @@ +import zod from "zod"; + +export const createNumericStringValidation = (name: string) => { + return zod.string().transform((value, ctx) => { + if (/^\d+$/.test(value)) { + return value as `${number}`; + } + ctx.addIssue({ + code: zod.ZodIssueCode.custom, + message: `"${name}" must be a numeric string.` + }); + return zod.NEVER; + }); +}; diff --git a/packages/api-sync-system/src/resolver/app/validation/system.ts b/packages/api-sync-system/src/resolver/app/validation/system.ts new file mode 100644 index 00000000000..5524d402f8b --- /dev/null +++ b/packages/api-sync-system/src/resolver/app/validation/system.ts @@ -0,0 +1,15 @@ +import zod from "zod"; + +export const createSystemValidation = () => { + return zod.object({ + name: zod.string(), + env: zod.string(), + variant: zod + .string() + .optional() + .nullish() + .transform(value => value || undefined), + region: zod.string(), + version: zod.string() + }); +}; diff --git a/packages/api-sync-system/src/resolver/createEventHandlerPlugin.ts b/packages/api-sync-system/src/resolver/createEventHandlerPlugin.ts new file mode 100644 index 00000000000..36dc00d9b76 --- /dev/null +++ b/packages/api-sync-system/src/resolver/createEventHandlerPlugin.ts @@ -0,0 +1,64 @@ +import { createEventHandler as createSQSEventHandler } from "@webiny/handler-aws/sqs"; +import { createResolverApp } from "./app/ResolverApplication.js"; +import { convertException } from "@webiny/utils"; +import { createRecordHandler } from "./app/RecordHandler.js"; +import { createFetcher } from "~/resolver/app/fetcher/Fetcher.js"; +import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import { createStorer } from "~/resolver/app/storer/Storer.js"; +import { createDeploymentsFetcher } from "~/resolver/deployment/DeploymentsFetcher.js"; +import { WebinyError } from "@webiny/error/index.js"; + +/** + * TODO maybe add logger? + */ +export const createEventHandlerPlugin = () => { + return createSQSEventHandler(async ({ event, context }) => { + const fetcher = createFetcher({ + createDocumentClient: deployment => { + return getDocumentClient({ + region: deployment.region + }); + } + }); + + const tableName = process.env.DB_TABLE; + if (!tableName) { + throw new WebinyError({ + message: "DB_TABLE environment variable is not set." + }); + } + + const deploymentsFetcher = createDeploymentsFetcher({ + client: getDocumentClient(), + table: tableName + }); + + const deployments = await deploymentsFetcher.fetch(); + + const storer = createStorer({ + deployments, + createDocumentClient: deployment => { + return getDocumentClient({ + region: deployment.region + }); + } + }); + const recordHandler = createRecordHandler({ + plugins: context.plugins, + fetcher, + storer + }); + const app = createResolverApp({ + recordHandler, + deployments + }); + + try { + await app.resolve({ + records: event.Records + }); + } catch (ex) { + console.error(convertException(ex)); + } + }); +}; diff --git a/packages/api-sync-system/src/resolver/deployment/Deployments.ts b/packages/api-sync-system/src/resolver/deployment/Deployments.ts new file mode 100644 index 00000000000..c671b4d8d60 --- /dev/null +++ b/packages/api-sync-system/src/resolver/deployment/Deployments.ts @@ -0,0 +1,37 @@ +import type { IDeployment, IDeployments } from "./types.js"; + +export interface IDeploymentsParams { + deployments: IDeployment[]; +} + +export class Deployments implements IDeployments { + private readonly deployments: IDeployment[]; + + public constructor(params: IDeploymentsParams) { + this.deployments = params.deployments; + } + + public hasAny(): boolean { + return this.deployments.length > 0; + } + + public all(): IDeployment[] { + return this.deployments; + } + + public get(name: string): IDeployment | null { + return this.deployments.find(deployment => deployment.name === name) || null; + } + + public without(input: Pick): IDeployments { + return createDeployments({ + deployments: this.deployments.filter(deployment => { + return deployment.name !== input.name; + }) + }); + } +} + +export const createDeployments = (params: IDeploymentsParams): IDeployments => { + return new Deployments(params); +}; diff --git a/packages/api-sync-system/src/resolver/deployment/DeploymentsFetcher.ts b/packages/api-sync-system/src/resolver/deployment/DeploymentsFetcher.ts new file mode 100644 index 00000000000..640e0fa7bbd --- /dev/null +++ b/packages/api-sync-system/src/resolver/deployment/DeploymentsFetcher.ts @@ -0,0 +1,118 @@ +import type { IDeployment, IDeployments, IDeploymentsFetcher } from "./types.js"; +import type { + DynamoDBDocument, + QueryCommandOutput +} from "@webiny/aws-sdk/client-dynamodb/index.js"; +import { QueryCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import { WebinyError } from "@webiny/error"; +import { createDeployments } from "./Deployments.js"; +import zod from "zod"; +import { createZodError } from "@webiny/utils/createZodError.js"; + +const deploymentsValidation = zod.array( + zod.object({ + name: zod.string(), + env: zod.string(), + variant: zod.string().optional(), + region: zod.string(), + version: zod.string(), + s3Id: zod.string(), + s3Arn: zod.string(), + primaryDynamoDbArn: zod.string(), + primaryDynamoDbName: zod.string(), + primaryDynamoDbHashKey: zod.string(), + primaryDynamoDbRangeKey: zod.string(), + elasticsearchDynamodbTableArn: zod.string().optional(), + elasticsearchDynamodbTableName: zod.string().optional() + }) +); + +export interface IDeploymentsFetcherParams { + client: DynamoDBDocument; + table: string; +} + +export class DeploymentsFetcher implements IDeploymentsFetcher { + private readonly client: DynamoDBDocument; + private deployments: IDeployments | undefined; + private readonly table: string; + + public constructor(params: IDeploymentsFetcherParams) { + this.client = params.client; + this.table = params.table; + } + + public async fetch(): Promise { + if (!this.deployments) { + this.deployments = createDeployments({ + deployments: await this.load() + }); + } + return this.deployments; + } + + private async load(): Promise { + const cmd = new QueryCommand({ + TableName: this.table, + IndexName: "GSI1", + KeyConditionExpression: "GSI1_PK = :gsiPk", + ExpressionAttributeValues: { + ":gsiPk": { + S: "DEPLOYMENTS" + } + } + }); + + let result: QueryCommandOutput; + try { + result = await this.client.send(cmd); + } catch (ex) { + console.error("Error while fetching all deployments to be synced."); + throw ex; + } + return this.output(result); + } + + private output(output: QueryCommandOutput): IDeployment[] { + const items = output.Items; + if (!items?.length) { + throw new WebinyError({ + message: "No deployments found which need to be synced.", + code: "NO_DEPLOYMENTS", + data: { + table: this.table + } + }); + } + + const result = deploymentsValidation.safeParse(items); + if (!result.success) { + throw createZodError(result.error); + } + return result.data.map(item => { + return { + name: item.name, + env: item.env, + variant: item.variant, + region: item.region, + version: item.version, + services: { + s3Id: item.s3Id, + s3Arn: item.s3Arn, + primaryDynamoDbArn: item.primaryDynamoDbArn, + primaryDynamoDbName: item.primaryDynamoDbName, + primaryDynamoDbHashKey: item.primaryDynamoDbHashKey, + primaryDynamoDbRangeKey: item.primaryDynamoDbRangeKey, + elasticsearchDynamodbTableArn: item.elasticsearchDynamodbTableArn, + elasticsearchDynamodbTableName: item.elasticsearchDynamodbTableName + } + }; + }); + } +} + +export const createDeploymentsFetcher = ( + params: IDeploymentsFetcherParams +): IDeploymentsFetcher => { + return new DeploymentsFetcher(params); +}; diff --git a/packages/api-sync-system/src/resolver/deployment/types.ts b/packages/api-sync-system/src/resolver/deployment/types.ts new file mode 100644 index 00000000000..dc53a638495 --- /dev/null +++ b/packages/api-sync-system/src/resolver/deployment/types.ts @@ -0,0 +1,30 @@ +export interface IDeploymentServices { + s3Id: string; + s3Arn: string; + primaryDynamoDbArn: string; + primaryDynamoDbName: string; + primaryDynamoDbHashKey: string; + primaryDynamoDbRangeKey: string; + elasticsearchDynamodbTableArn?: string; + elasticsearchDynamodbTableName?: string; +} + +export interface IDeployment { + name: string; + env: string; + variant: string | undefined; + region: string; + services: IDeploymentServices; + version: string; +} + +export interface IDeployments { + hasAny(): boolean; + all(): IDeployment[]; + get(name: string): IDeployment | null; + without(deployment: Pick): IDeployments; +} + +export interface IDeploymentsFetcher { + fetch(): Promise; +} diff --git a/packages/api-sync-system/src/resolver/index.ts b/packages/api-sync-system/src/resolver/index.ts new file mode 100644 index 00000000000..ae249140656 --- /dev/null +++ b/packages/api-sync-system/src/resolver/index.ts @@ -0,0 +1,31 @@ +import type { HandlerParams } from "@webiny/handler-aws/sqs"; +import { createHandler as createSQSHandler } from "@webiny/handler-aws/sqs"; +import { PluginsContainer } from "@webiny/plugins"; +import { createEventHandlerPlugin } from "./createEventHandlerPlugin.js"; +import type { TransformRecordPlugin } from "~/resolver/plugins/TransformRecordPlugin.js"; +import type { CommandHandlerPlugin } from "~/resolver/plugins/CommandHandlerPlugin.js"; +import { createPutCommandHandlerPlugin } from "~/resolver/app/commandHandler/put.js"; +import { createDeleteCommandHandlerPlugin } from "~/resolver/app/commandHandler/delete.js"; + +export type AllowedResolverPlugins = TransformRecordPlugin | CommandHandlerPlugin; + +export interface ICreateResolverHandlerParams extends HandlerParams { + plugins: AllowedResolverPlugins[]; +} +/** + * Handler for the Sync System Resolver - based on SQS handler. + */ +export const createResolverHandler = (params: ICreateResolverHandlerParams) => { + const plugins = new PluginsContainer([ + createEventHandlerPlugin(), + createPutCommandHandlerPlugin(), + createDeleteCommandHandlerPlugin() + ]); + + plugins.register(params.plugins); + + return createSQSHandler({ + ...params, + plugins + }); +}; diff --git a/packages/api-sync-system/src/resolver/plugins/CommandHandlerPlugin.ts b/packages/api-sync-system/src/resolver/plugins/CommandHandlerPlugin.ts new file mode 100644 index 00000000000..39d7774a017 --- /dev/null +++ b/packages/api-sync-system/src/resolver/plugins/CommandHandlerPlugin.ts @@ -0,0 +1,73 @@ +import { Plugin } from "@webiny/plugins"; +import type { CommandType } from "~/types.js"; +import type { + IRecordsDataDeploymentTable, + IRecordsDataDeploymentTableBundle +} from "~/resolver/app/data/RecordsDataDeploymentTable.js"; +import type { IRecordsDataDeployment } from "~/resolver/app/data/RecordsDataDeployment.js"; +import type { IFetcher } from "~/resolver/app/fetcher/types.js"; +import type { IStorer } from "~/resolver/app/storer/types.js"; +import type { TransformRecordPlugin } from "~/resolver/plugins/TransformRecordPlugin.js"; + +export interface ICommandHandlerPluginCallableParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; + fetcher: IFetcher; + storer: IStorer; + plugins: TransformRecordPlugin[]; +} + +export interface ICommandHandlerPluginCallable { + (params: ICommandHandlerPluginCallableParams): Promise; +} + +export interface ICommandHandlerPluginCanHandleCallable { + (command: CommandType): boolean; +} + +export interface ICommandHandlerPluginHandleParams { + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + bundle: IRecordsDataDeploymentTableBundle; + fetcher: IFetcher; + storer: IStorer; + plugins: TransformRecordPlugin[]; +} + +export interface ICommandHandlerPluginParams { + handle: ICommandHandlerPluginCallable; + canHandle: ICommandHandlerPluginCanHandleCallable; +} + +export class CommandHandlerPlugin extends Plugin { + public static override type: string = "syncSystem.commandHandlerPlugin"; + + private readonly config: ICommandHandlerPluginParams; + + public constructor(params: ICommandHandlerPluginParams) { + super(); + this.config = params; + } + + public canHandle(command: CommandType): boolean { + return this.config.canHandle(command); + } + + public async handle(params: ICommandHandlerPluginHandleParams): Promise { + return await this.config.handle({ + bundle: params.bundle, + deployment: params.deployment, + table: params.table, + fetcher: params.fetcher, + storer: params.storer, + plugins: params.plugins + }); + } +} + +export const createCommandHandlerPlugin = ( + params: ICommandHandlerPluginParams +): CommandHandlerPlugin => { + return new CommandHandlerPlugin(params); +}; diff --git a/packages/api-sync-system/src/resolver/plugins/TransformRecordPlugin.ts b/packages/api-sync-system/src/resolver/plugins/TransformRecordPlugin.ts new file mode 100644 index 00000000000..96b9185a664 --- /dev/null +++ b/packages/api-sync-system/src/resolver/plugins/TransformRecordPlugin.ts @@ -0,0 +1,45 @@ +import { Plugin } from "@webiny/plugins"; +import type { GenericRecord } from "@webiny/api/types.js"; +import type { IRecordsDataDeployment } from "~/resolver/app/data/RecordsDataDeployment.js"; +import { IRecordsDataDeploymentTable } from "../app/data/RecordsDataDeploymentTable.js"; + +export interface ITransformRecordPluginConfigTransformCallableParams< + I = unknown, + O = GenericRecord +> { + record: GenericRecord; + deployment: IRecordsDataDeployment; + table: IRecordsDataDeploymentTable; + next: () => Promise; +} + +export interface ITransformRecordPluginConfigTransformCallable { + (params: ITransformRecordPluginConfigTransformCallableParams): Promise; +} + +export interface ITransformRecordPluginConfig { + transform: ITransformRecordPluginConfigTransformCallable; +} + +export class TransformRecordPlugin extends Plugin { + public static override type: string = "syncSystem.transformRecordPlugin"; + + private readonly config: ITransformRecordPluginConfig; + + public constructor(config: ITransformRecordPluginConfig) { + super(); + this.config = config; + } + + public transform(params: ITransformRecordPluginConfigTransformCallableParams): Promise { + return this.config.transform(params); + } +} + +export const createTransformRecordPlugin = ( + transform: ITransformRecordPluginConfigTransformCallable +) => { + return new TransformRecordPlugin({ + transform + }); +}; diff --git a/packages/api-sync-system/src/sync/attachToDynamoDbDocument.ts b/packages/api-sync-system/src/sync/attachToDynamoDbDocument.ts new file mode 100644 index 00000000000..2132765c86b --- /dev/null +++ b/packages/api-sync-system/src/sync/attachToDynamoDbDocument.ts @@ -0,0 +1,57 @@ +import { decorateDocumentClient } from "@webiny/aws-sdk/client-dynamodb/getDocumentClient"; +import type { IHandler } from "~/sync/types.js"; +import { + BatchWriteCommand, + PutCommand, + UpdateCommand +} from "@webiny/aws-sdk/client-dynamodb/index.js"; + +export interface IAttachToDynamoDbDocumentParams { + handler: IHandler; +} + +export const attachToDynamoDbDocument = ({ handler }: IAttachToDynamoDbDocumentParams) => { + decorateDocumentClient(client => { + /** + * Is there a possibility that this is already attached? + * Let's check for the handler and then skip attaching. + */ + // @ts-expect-error + if (client.__webinyHandler) { + return client; + } + const originalSend = client.send; + const originalPut = client.put; + const originalBatchWrite = client.batchWrite; + const originalUpdate = client.update; + + // @ts-expect-error + client.__webinyHandler = handler; + + client.send = async params => { + // @ts-expect-error + handler.add(params); + return originalSend(params); + }; + + client.put = async params => { + const cmd = new PutCommand(params); + handler.add(cmd); + return originalPut(params); + }; + + client.batchWrite = async params => { + const cmd = new BatchWriteCommand(params); + handler.add(cmd); + return originalBatchWrite(params); + }; + + client.update = async params => { + const cmd = new UpdateCommand(params); + handler.add(cmd); + return originalUpdate(params); + }; + + return client; + }); +}; diff --git a/packages/api-sync-system/src/sync/createHandler.ts b/packages/api-sync-system/src/sync/createHandler.ts new file mode 100644 index 00000000000..09c44796450 --- /dev/null +++ b/packages/api-sync-system/src/sync/createHandler.ts @@ -0,0 +1,50 @@ +import { createHandlerConverter } from "~/sync/handler/HandlerConverter.js"; +import { NullCommandValue } from "~/sync/handler/converter/commands/NullCommandValue.js"; +import { createBatchGetCommandConverter } from "~/sync/handler/converter/BatchGetCommandConverter.js"; +import { createGetCommandConverter } from "~/sync/handler/converter/GetCommandConverter.js"; +import { createBatchWriteCommandConverter } from "~/sync/handler/converter/BatchWriteCommandConverter.js"; +import { createPutCommandConverter } from "~/sync/handler/converter/PutCommandConverter.js"; +import { createDeleteCommandConverter } from "~/sync/handler/converter/DeleteCommandConverter.js"; +import { createUpdateCommandConverter } from "~/sync/handler/converter/UpdateCommandConverter.js"; +import { createSyncHandler } from "~/sync/handler/Handler.js"; +import type { EventBridgeClient } from "@webiny/aws-sdk/client-eventbridge/index.js"; +import type { ICommandConverter, IManifest, ISystem } from "./types"; + +export interface ICreateHandlerParams { + client: Pick; + commandConverters?: ICommandConverter[]; + system: ISystem; + manifest: IManifest; +} + +export const createHandler = (params: ICreateHandlerParams) => { + const { manifest, commandConverters, system, client } = params; + const converter = createHandlerConverter({ + default: new NullCommandValue() + }); + /** + * We register users command converters because those are tested out first. + * Our converters are in some order I got from my head - the most used commands are first. + */ + converter.register(commandConverters || []); + converter.register(createBatchGetCommandConverter()); + converter.register(createGetCommandConverter()); + converter.register(createBatchWriteCommandConverter()); + converter.register(createPutCommandConverter()); + converter.register(createDeleteCommandConverter()); + converter.register(createUpdateCommandConverter()); + + const handler = createSyncHandler({ + system, + client, + eventBus: { + arn: manifest.sync.eventBusArn, + name: manifest.sync.eventBusName + }, + converter + }); + return { + handler, + converter + }; +}; diff --git a/packages/api-sync-system/src/sync/createSendDataToEventBridgeOnRequestEnd.ts b/packages/api-sync-system/src/sync/createSendDataToEventBridgeOnRequestEnd.ts new file mode 100644 index 00000000000..b016d5cf64b --- /dev/null +++ b/packages/api-sync-system/src/sync/createSendDataToEventBridgeOnRequestEnd.ts @@ -0,0 +1,23 @@ +import type { IHandler } from "./types.js"; +import { convertException } from "@webiny/utils"; +import { createOnRequestResponse, createOnRequestTimeout } from "@webiny/handler"; + +const execute = async (handler: IHandler) => { + try { + await handler.flush(); + } catch (ex) { + console.error("Error flushing DynamoDB data into the Sync System."); + console.log(convertException(ex, ["message"])); + } +}; + +export const createSendDataToEventBridgeOnRequestEnd = (handler: IHandler) => { + return [ + createOnRequestResponse(async () => { + execute(handler); + }), + createOnRequestTimeout(async () => { + execute(handler); + }) + ]; +}; diff --git a/packages/api-sync-system/src/sync/handler/Handler.ts b/packages/api-sync-system/src/sync/handler/Handler.ts new file mode 100644 index 00000000000..21e7f381703 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/Handler.ts @@ -0,0 +1,108 @@ +import type { + ICommandValue, + IDynamoDbCommand, + IHandler, + IHandlerConverter, + ISystem +} from "../types.js"; +import type { + EventBridgeClient, + PutEventsCommandInput, + PutEventsRequestEntry +} from "@webiny/aws-sdk/client-eventbridge"; +import { PutEventsCommand } from "@webiny/aws-sdk/client-eventbridge"; +import { convertException } from "@webiny/utils"; +import { IDetail } from "./types.js"; +import { SQS_EVENT_NAME } from "~/constants.js"; + +export interface IHandlerEventBus { + name: string; + arn: string; +} + +export interface IHandlerParams { + client: Pick; + converter: IHandlerConverter; + eventBus: IHandlerEventBus; + system: ISystem; +} + +export class Handler implements IHandler { + private readonly system: ISystem; + private readonly client: Pick; + private commands: ICommandValue[] = []; + private readonly converter: IHandlerConverter; + private readonly eventBus: IHandlerEventBus; + + public constructor(params: IHandlerParams) { + this.client = params.client; + this.system = params.system; + this.converter = params.converter; + this.eventBus = params.eventBus; + } + + public add(input: IDynamoDbCommand): void { + const cmd = this.converter.convert(input); + this.commands.push(cmd); + } + + public async flush(): Promise { + const entries = this.createEventBusEntries(); + if (entries.length === 0) { + return; + } + + const input: PutEventsCommandInput = { + Entries: entries, + /** + * If we get to the global event bus usage, we will need to set the EndpointId + */ + EndpointId: undefined + }; + const command = new PutEventsCommand(input); + + try { + await this.client.send(command); + } catch (ex) { + console.log("Could not send events to Sync System EventBridge."); + console.error(ex.message); + console.error(convertException(ex, ["message"])); + console.log( + JSON.stringify({ + entries: entries.map(entry => entry.Detail) + }) + ); + } + } + + private createEventBusEntries(): PutEventsRequestEntry[] { + const result = this.commands + .map((cmd): PutEventsRequestEntry | null => { + const items = cmd.getItems(); + if (!items?.length) { + return null; + } + const detail: IDetail = { + items, + source: this.system, + command: cmd.command + }; + return { + DetailType: SQS_EVENT_NAME, + Detail: JSON.stringify(detail), + Source: `webiny:${this.system.name}`, + EventBusName: this.eventBus.arn + }; + }) + .filter((item): item is PutEventsRequestEntry => !!item); + /** + * Remove all existing commands so we can start fresh. + */ + this.commands = []; + return result; + } +} + +export const createSyncHandler = (params: IHandlerParams): IHandler => { + return new Handler(params); +}; diff --git a/packages/api-sync-system/src/sync/handler/HandlerConverter.ts b/packages/api-sync-system/src/sync/handler/HandlerConverter.ts new file mode 100644 index 00000000000..caed792d4c8 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/HandlerConverter.ts @@ -0,0 +1,51 @@ +import type { + ICommandConverter, + ICommandValue, + IDynamoDbCommand, + IHandlerConverter +} from "../types.js"; + +export interface IHandlerConverterParams { + default: ICommandValue; +} + +export class HandlerConverter implements IHandlerConverter { + private readonly _default: ICommandValue; + private readonly converters: ICommandConverter[] = []; + + public constructor(params: IHandlerConverterParams) { + this._default = params.default; + } + + public register(input: ICommandConverter | ICommandConverter[]): void { + if (Array.isArray(input)) { + this.converters.push(...input); + return; + } + + this.converters.push(input); + } + + public convert(command: IDynamoDbCommand): ICommandValue { + for (const converter of this.converters) { + if (converter.can(command)) { + return converter.convert(command); + } + } + /** + * We ALWAYS log unknown commands as we do not know what user will do with the DynamoDB client. + */ + console.error(`Unknown command: ${command.constructor?.name || "unknown"}`); + console.log( + JSON.stringify({ + command + }) + ); + + return this._default; + } +} + +export const createHandlerConverter = (params: IHandlerConverterParams): IHandlerConverter => { + return new HandlerConverter(params); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/BatchGetCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/BatchGetCommandConverter.ts new file mode 100644 index 00000000000..622c88c084d --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/BatchGetCommandConverter.ts @@ -0,0 +1,18 @@ +import { BatchGetCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { NullCommandValue } from "./commands/NullCommandValue.js"; + +export class BatchGetCommandConverter implements ICommandConverter { + public readonly name: string = "batchGet"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof BatchGetCommand; + } + public convert() { + return new NullCommandValue(); + } +} + +export const createBatchGetCommandConverter = (): ICommandConverter => { + return new BatchGetCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/BatchWriteCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/BatchWriteCommandConverter.ts new file mode 100644 index 00000000000..27a54b8e6c0 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/BatchWriteCommandConverter.ts @@ -0,0 +1,18 @@ +import { BatchWriteCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { BatchWriteCommandValue } from "./commands/BatchWriteCommandValue.js"; + +export class BatchWriteCommandConverter implements ICommandConverter { + public readonly name: string = "put"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof BatchWriteCommand; + } + public convert(input: BatchWriteCommand) { + return new BatchWriteCommandValue(input); + } +} + +export const createBatchWriteCommandConverter = (): ICommandConverter => { + return new BatchWriteCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/DeleteCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/DeleteCommandConverter.ts new file mode 100644 index 00000000000..c11fb90a4d5 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/DeleteCommandConverter.ts @@ -0,0 +1,18 @@ +import { DeleteCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { DeleteCommandValue } from "./commands/DeleteCommandValue.js"; + +export class DeleteCommandConverter implements ICommandConverter { + public readonly name: string = "delete"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof DeleteCommand; + } + public convert(input: DeleteCommand) { + return new DeleteCommandValue(input); + } +} + +export const createDeleteCommandConverter = (): ICommandConverter => { + return new DeleteCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/GetCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/GetCommandConverter.ts new file mode 100644 index 00000000000..b00cb362c93 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/GetCommandConverter.ts @@ -0,0 +1,18 @@ +import { GetCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { NullCommandValue } from "./commands/NullCommandValue.js"; + +export class GetCommandConverter implements ICommandConverter { + public readonly name: string = "get"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof GetCommand; + } + public convert() { + return new NullCommandValue(); + } +} + +export const createGetCommandConverter = (): ICommandConverter => { + return new GetCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/PutCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/PutCommandConverter.ts new file mode 100644 index 00000000000..d899207d4eb --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/PutCommandConverter.ts @@ -0,0 +1,18 @@ +import { PutCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { PutCommandValue } from "./commands/PutCommandValue.js"; + +export class PutCommandConverter implements ICommandConverter { + public readonly name: string = "put"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof PutCommand; + } + public convert(input: PutCommand) { + return new PutCommandValue(input); + } +} + +export const createPutCommandConverter = (): ICommandConverter => { + return new PutCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/UpdateCommandConverter.ts b/packages/api-sync-system/src/sync/handler/converter/UpdateCommandConverter.ts new file mode 100644 index 00000000000..a636c46724e --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/UpdateCommandConverter.ts @@ -0,0 +1,18 @@ +import { UpdateCommand } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, IDynamoDbCommand } from "../../types.js"; +import { UpdateCommandValue } from "./commands/UpdateCommandValue.js"; + +export class UpdateCommandConverter implements ICommandConverter { + public readonly name: string = "update"; + + public can(input: IDynamoDbCommand): boolean { + return input instanceof UpdateCommand; + } + public convert(input: UpdateCommand) { + return new UpdateCommandValue(input); + } +} + +export const createUpdateCommandConverter = (): ICommandConverter => { + return new UpdateCommandConverter(); +}; diff --git a/packages/api-sync-system/src/sync/handler/converter/commands/BatchWriteCommandValue.ts b/packages/api-sync-system/src/sync/handler/converter/commands/BatchWriteCommandValue.ts new file mode 100644 index 00000000000..7c29a385c86 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/commands/BatchWriteCommandValue.ts @@ -0,0 +1,46 @@ +import { BatchWriteCommand } from "@webiny/aws-sdk/client-dynamodb"; +import type { ICommandValue, ICommandValueItem } from "~/sync/types.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; + +const convert = (items: ICommandValueItem[]): NonEmptyArray | null => { + if (items.length === 0) { + return null; + } + return items as NonEmptyArray; +}; + +export class BatchWriteCommandValue implements ICommandValue { + public readonly command = "batchWrite"; + public readonly items: ICommandValueItem[] = []; + + public constructor(input: BatchWriteCommand) { + for (const tableName in input.input.RequestItems) { + const values = input.input.RequestItems[tableName]; + for (const value of values) { + if (value.PutRequest?.Item) { + const item = value.PutRequest.Item; + + this.items.push({ + command: "put", + PK: item.PK, + SK: item.SK, + tableName + }); + } else if (value.DeleteRequest?.Key) { + const item = value.DeleteRequest.Key; + + this.items.push({ + command: "delete", + PK: item.PK, + SK: item.SK, + tableName + }); + } + } + } + } + + public getItems(): NonEmptyArray | null { + return convert(this.items); + } +} diff --git a/packages/api-sync-system/src/sync/handler/converter/commands/DeleteCommandValue.ts b/packages/api-sync-system/src/sync/handler/converter/commands/DeleteCommandValue.ts new file mode 100644 index 00000000000..c0334a20c03 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/commands/DeleteCommandValue.ts @@ -0,0 +1,21 @@ +import { DeleteCommand } from "@webiny/aws-sdk/client-dynamodb"; +import type { ICommandValue, ICommandValueItem } from "~/sync/types.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; + +export class DeleteCommandValue implements ICommandValue { + public readonly command = "delete"; + public readonly item: ICommandValueItem; + + public constructor(input: DeleteCommand) { + this.item = { + command: this.command, + PK: input.input.Key!.PK, + SK: input.input.Key!.SK, + tableName: input.input.TableName as string + }; + } + + public getItems(): NonEmptyArray { + return [this.item]; + } +} diff --git a/packages/api-sync-system/src/sync/handler/converter/commands/NullCommandValue.ts b/packages/api-sync-system/src/sync/handler/converter/commands/NullCommandValue.ts new file mode 100644 index 00000000000..2225fcce44d --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/commands/NullCommandValue.ts @@ -0,0 +1,12 @@ +import type { ICommandValue } from "~/sync/types.js"; + +export class NullCommandValue implements ICommandValue { + /** + * Does not matter what will be here, we will not use it. + */ + public readonly command = "put"; + + public getItems(): null { + return null; + } +} diff --git a/packages/api-sync-system/src/sync/handler/converter/commands/PutCommandValue.ts b/packages/api-sync-system/src/sync/handler/converter/commands/PutCommandValue.ts new file mode 100644 index 00000000000..78efa195507 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/commands/PutCommandValue.ts @@ -0,0 +1,25 @@ +import { PutCommand } from "@webiny/aws-sdk/client-dynamodb"; +import type { ICommandValue, ICommandValueItem } from "~/sync/types.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; + +export interface IPutCommandValueParams extends Pick { + input: Pick; +} + +export class PutCommandValue implements ICommandValue { + public readonly command = "put"; + public readonly item: ICommandValueItem; + + public constructor(input: IPutCommandValueParams) { + this.item = { + command: this.command, + PK: input.input.Item!.PK, + SK: input.input.Item!.SK, + tableName: input.input.TableName as string + }; + } + + public getItems(): NonEmptyArray { + return [this.item]; + } +} diff --git a/packages/api-sync-system/src/sync/handler/converter/commands/UpdateCommandValue.ts b/packages/api-sync-system/src/sync/handler/converter/commands/UpdateCommandValue.ts new file mode 100644 index 00000000000..1030c902944 --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/converter/commands/UpdateCommandValue.ts @@ -0,0 +1,21 @@ +import { UpdateCommand } from "@webiny/aws-sdk/client-dynamodb"; +import type { ICommandValue, ICommandValueItem } from "~/sync/types.js"; +import type { NonEmptyArray } from "@webiny/api/types.js"; + +export class UpdateCommandValue implements ICommandValue { + public readonly command = "update"; + public readonly item: ICommandValueItem; + + public constructor(input: UpdateCommand) { + this.item = { + command: this.command, + PK: input.input.Key!.PK, + SK: input.input.Key!.SK, + tableName: input.input.TableName as string + }; + } + + public getItems(): NonEmptyArray { + return [this.item]; + } +} diff --git a/packages/api-sync-system/src/sync/handler/types.ts b/packages/api-sync-system/src/sync/handler/types.ts new file mode 100644 index 00000000000..3ab2d0dc76d --- /dev/null +++ b/packages/api-sync-system/src/sync/handler/types.ts @@ -0,0 +1,20 @@ +import type { NonEmptyArray } from "@webiny/api/types"; +import type { AllCommandType, ExtendedCommandType } from "~/types.js"; +import type { ISystem } from "../types"; + +export interface IDetailItem { + PK: string; + SK: string; + command: ExtendedCommandType; + /** + * Table name to which the record belongs. + * There will be multiple tables that will get populated through the system (regular table and elasticsearch for start). + */ + tableName: string; +} + +export interface IDetail { + items: NonEmptyArray; + source: ISystem; + command: AllCommandType; +} diff --git a/packages/api-sync-system/src/sync/index.ts b/packages/api-sync-system/src/sync/index.ts new file mode 100644 index 00000000000..bb37241f153 --- /dev/null +++ b/packages/api-sync-system/src/sync/index.ts @@ -0,0 +1,46 @@ +import type { Plugin } from "@webiny/plugins"; +import type { ISystem } from "./types.js"; +import { validateSystemInput } from "./utils/validateSystemInput.js"; +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { PossiblyUndefinedProperties } from "@webiny/api/types"; +import { createSyncSystemHandlerOnRequestPlugin } from "./requestPlugin.js"; + +export interface ICreateSyncSystemParams { + documentClient: DynamoDBDocument; + system: PossiblyUndefinedProperties>; +} + +export interface ICreateSyncSystemResponse { + plugins(): Plugin[]; +} + +const emptyResponse: ICreateSyncSystemResponse = { + plugins(): Plugin[] { + return []; + } +}; + +export const createSyncSystem = (params: ICreateSyncSystemParams): ICreateSyncSystemResponse => { + const { system, error } = validateSystemInput(params.system); + /** + * We do not want to throw any errors. We will log them and just return a function which returns empty array as plugins. + */ + if (error) { + console.error(error); + return emptyResponse; + } else if (!system) { + console.error("Sync System: No system provided. Sync System will not be attached."); + return emptyResponse; + } + + return { + plugins: () => { + return [ + createSyncSystemHandlerOnRequestPlugin({ + documentClient: params.documentClient, + system + }) + ]; + } + }; +}; diff --git a/packages/api-sync-system/src/sync/requestPlugin.ts b/packages/api-sync-system/src/sync/requestPlugin.ts new file mode 100644 index 00000000000..f166ac9927e --- /dev/null +++ b/packages/api-sync-system/src/sync/requestPlugin.ts @@ -0,0 +1,44 @@ +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js"; +import type { ICommandConverter, ISystem } from "~/sync/types.js"; +import { createHandlerOnRequest } from "@webiny/handler"; +import { getManifest } from "~/sync/utils/manifest.js"; +import { attachToDynamoDbDocument } from "~/sync/attachToDynamoDbDocument.js"; +import { createSendDataToEventBridgeOnRequestEnd } from "~/sync/createSendDataToEventBridgeOnRequestEnd.js"; +import { createHandler } from "./createHandler.js"; +import { createEventBridgeClient } from "@webiny/aws-sdk/client-eventbridge/index.js"; + +export interface ICreateSyncSystemHandlerOnRequestPluginParams { + documentClient: DynamoDBDocument; + system: ISystem; + commandConverters?: ICommandConverter[]; +} + +export const createSyncSystemHandlerOnRequestPlugin = ( + params: ICreateSyncSystemHandlerOnRequestPluginParams +) => { + return createHandlerOnRequest(async (_, __, context) => { + const { data: manifest, error: manifestError } = await getManifest(params); + if (!manifest?.sync?.region || manifestError) { + return; + } + + const { handler } = createHandler({ + client: createEventBridgeClient({ + region: manifest.sync.region + }), + system: params.system, + manifest, + commandConverters: params.commandConverters + }); + + attachToDynamoDbDocument({ + handler + }); + context.plugins.register([ + /** + * When request ends, send the data to the EventBridge. + */ + createSendDataToEventBridgeOnRequestEnd(handler) + ]); + }); +}; diff --git a/packages/api-sync-system/src/sync/types.ts b/packages/api-sync-system/src/sync/types.ts new file mode 100644 index 00000000000..25cf9715f66 --- /dev/null +++ b/packages/api-sync-system/src/sync/types.ts @@ -0,0 +1,68 @@ +import { NonEmptyArray } from "@webiny/api/types"; +import { + type GetCommand, + type BatchGetCommand, + type BatchWriteCommand, + type DeleteCommand, + type PutCommand, + type UpdateCommand +} from "@webiny/aws-sdk/client-dynamodb"; +import type { AllCommandType, ExtendedCommandType } from "~/types.js"; + +export interface IManifest { + sync: { + region: string; + eventBusName: string; + eventBusArn: string; + }; +} + +export type IDynamoDbCommand = + | PutCommand + | DeleteCommand + | BatchWriteCommand + | BatchGetCommand + | GetCommand + | UpdateCommand; + +export interface ICommandValueItem { + PK: string; + SK: string; + command: ExtendedCommandType; + tableName: string; +} + +export interface ICommandValue { + readonly command: AllCommandType; + getItems(): NonEmptyArray | null; +} + +export interface ICommand { + name: string; + can(input: IDynamoDbCommand): boolean; + convert(input: IDynamoDbCommand): Result; +} + +export interface ISystem { + name: string; + env: string; + variant?: string | undefined; + region: string; + version: string; +} + +export interface IHandler { + flush(): Promise; + add(input: IDynamoDbCommand): void; +} + +export interface ICommandConverter { + name: string; + can(input: IDynamoDbCommand): boolean; + convert(input: IDynamoDbCommand): Result; +} + +export interface IHandlerConverter { + register(input: ICommandConverter | ICommandConverter[]): void; + convert(input: IDynamoDbCommand): ICommandValue; +} diff --git a/packages/api-sync-system/src/sync/utils/manifest.ts b/packages/api-sync-system/src/sync/utils/manifest.ts new file mode 100644 index 00000000000..a54661ab762 --- /dev/null +++ b/packages/api-sync-system/src/sync/utils/manifest.ts @@ -0,0 +1,41 @@ +import { ServiceDiscovery } from "@webiny/api"; +import zod from "zod"; +import { convertException, createZodError } from "@webiny/utils"; +import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb"; + +const validateManifest = zod.object({ + sync: zod.object({ + eventBusArn: zod.string(), + eventBusName: zod.string(), + region: zod.string() + }) +}); + +export interface IGetManifestParams { + documentClient: DynamoDBDocument; +} + +export const getManifest = async (params: IGetManifestParams) => { + try { + ServiceDiscovery.setDocumentClient(params.documentClient); + const manifest = await ServiceDiscovery.load(); + const { data, error } = validateManifest.safeParse(manifest); + if (error) { + console.error("Sync System: Failed to validate manifest."); + const err = createZodError(error); + console.info(convertException(err)); + return { + error: err + }; + } + return { + data + }; + } catch (ex) { + console.error("Sync System: Failed to load manifest."); + console.info(convertException(ex)); + return { + error: ex + }; + } +}; diff --git a/packages/api-sync-system/src/sync/utils/validateSystemInput.ts b/packages/api-sync-system/src/sync/utils/validateSystemInput.ts new file mode 100644 index 00000000000..e6c369fb224 --- /dev/null +++ b/packages/api-sync-system/src/sync/utils/validateSystemInput.ts @@ -0,0 +1,45 @@ +import type { ISystem } from "~/sync/types.js"; +import { createSystemName } from "~/utils/createSystemName.js"; + +export interface IValidResponse { + system: ISystem; + error?: never; +} + +export interface IErrorResponse { + error: string; + system?: never; +} + +export type ValidateSystemInputResponse = IValidResponse | IErrorResponse; + +export const validateSystemInput = (input: Partial): ValidateSystemInputResponse => { + const { env, region, variant, version } = input; + if (!env) { + return { + error: "Sync System: No environment variable provided. Sync System will not be attached." + }; + } else if (!region) { + return { + error: "Sync System: No region variable provided. Sync System will not be attached." + }; + } else if (!version) { + return { + error: "Sync System: No version variable provided. Sync System will not be attached." + }; + } + const name = createSystemName({ + env, + variant + }); + + return { + system: { + env, + name, + region, + variant, + version + } + }; +}; diff --git a/packages/api-sync-system/src/types.ts b/packages/api-sync-system/src/types.ts new file mode 100644 index 00000000000..69c6bffbf6e --- /dev/null +++ b/packages/api-sync-system/src/types.ts @@ -0,0 +1,7 @@ +import { Context as BaseContext } from "@webiny/handler-aws/types"; + +export type CommandType = "put" | "delete"; +export type ExtendedCommandType = "put" | "delete" | "update"; +export type AllCommandType = ExtendedCommandType | "batchWrite"; + +export interface Context extends BaseContext {} diff --git a/packages/api-sync-system/src/utils/createSystemName.ts b/packages/api-sync-system/src/utils/createSystemName.ts new file mode 100644 index 00000000000..5d12d6bc692 --- /dev/null +++ b/packages/api-sync-system/src/utils/createSystemName.ts @@ -0,0 +1,8 @@ +export interface ICreateSystemNameParams { + env: string; + variant: string | undefined; +} + +export const createSystemName = (params: ICreateSystemNameParams): string => { + return [params.env, params.variant].filter(Boolean).join("#"); +}; diff --git a/packages/api-sync-system/tsconfig.build.json b/packages/api-sync-system/tsconfig.build.json new file mode 100644 index 00000000000..9d939cbee89 --- /dev/null +++ b/packages/api-sync-system/tsconfig.build.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.build.json", + "include": ["src"], + "references": [ + { "path": "../api/tsconfig.build.json" }, + { "path": "../aws-sdk/tsconfig.build.json" }, + { "path": "../error/tsconfig.build.json" }, + { "path": "../handler/tsconfig.build.json" }, + { "path": "../handler-aws/tsconfig.build.json" }, + { "path": "../plugins/tsconfig.build.json" }, + { "path": "../utils/tsconfig.build.json" } + ], + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "declarationDir": "./dist", + "paths": { "~/*": ["./src/*"], "~tests/*": ["./__tests__/*"] }, + "baseUrl": "." + } +} diff --git a/packages/api-sync-system/tsconfig.json b/packages/api-sync-system/tsconfig.json new file mode 100644 index 00000000000..c845a1e1b77 --- /dev/null +++ b/packages/api-sync-system/tsconfig.json @@ -0,0 +1,37 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src", "__tests__"], + "references": [ + { "path": "../api" }, + { "path": "../aws-sdk" }, + { "path": "../error" }, + { "path": "../handler" }, + { "path": "../handler-aws" }, + { "path": "../plugins" }, + { "path": "../utils" } + ], + "compilerOptions": { + "rootDirs": ["./src", "./__tests__"], + "outDir": "./dist", + "declarationDir": "./dist", + "paths": { + "~/*": ["./src/*"], + "~tests/*": ["./__tests__/*"], + "@webiny/api/*": ["../api/src/*"], + "@webiny/api": ["../api/src"], + "@webiny/aws-sdk/*": ["../aws-sdk/src/*"], + "@webiny/aws-sdk": ["../aws-sdk/src"], + "@webiny/error/*": ["../error/src/*"], + "@webiny/error": ["../error/src"], + "@webiny/handler/*": ["../handler/src/*"], + "@webiny/handler": ["../handler/src"], + "@webiny/handler-aws/*": ["../handler-aws/src/*"], + "@webiny/handler-aws": ["../handler-aws/src"], + "@webiny/plugins/*": ["../plugins/src/*"], + "@webiny/plugins": ["../plugins/src"], + "@webiny/utils/*": ["../utils/src/*"], + "@webiny/utils": ["../utils/src"] + }, + "baseUrl": "." + } +} diff --git a/packages/api-sync-system/webiny.config.js b/packages/api-sync-system/webiny.config.js new file mode 100644 index 00000000000..6dff86766c9 --- /dev/null +++ b/packages/api-sync-system/webiny.config.js @@ -0,0 +1,8 @@ +const { createWatchPackage, createBuildPackage } = require("@webiny/project-utils"); + +module.exports = { + commands: { + build: createBuildPackage({ cwd: __dirname }), + watch: createWatchPackage({ cwd: __dirname }) + } +}; diff --git a/packages/api/src/ServiceDiscovery.ts b/packages/api/src/ServiceDiscovery.ts index 4c5231d721f..06d3d73d360 100644 --- a/packages/api/src/ServiceDiscovery.ts +++ b/packages/api/src/ServiceDiscovery.ts @@ -1,6 +1,6 @@ import { - getDocumentClient, DynamoDBDocument, + getDocumentClient, QueryCommand, unmarshall } from "@webiny/aws-sdk/client-dynamodb"; @@ -17,7 +17,7 @@ class ServiceManifestLoader { private client: DynamoDBDocument | undefined; private manifest: Manifest | undefined = undefined; - async load() { + public async load() { if (this.manifest) { return this.manifest; } @@ -39,10 +39,14 @@ class ServiceManifestLoader { return this.manifest; } - setDocumentClient(client: DynamoDBDocument) { + public setDocumentClient(client: DynamoDBDocument) { this.client = client; } + public clear(): void { + this.manifest = undefined; + } + private async loadManifests(): Promise { const client = this.client || getDocumentClient(); const { Items } = await client.send( @@ -75,4 +79,10 @@ export class ServiceDiscovery { static async load() { return serviceManifestLoader.load(); } + /** + * Should be used for testing purposes only! + */ + static clear(): void { + serviceManifestLoader.clear(); + } } diff --git a/packages/api/src/types.ts b/packages/api/src/types.ts index e74ee3c0376..1b8fef1357c 100644 --- a/packages/api/src/types.ts +++ b/packages/api/src/types.ts @@ -4,6 +4,10 @@ export type GenericRecord = Record export type NonEmptyArray = [T, ...T[]]; +export type PossiblyUndefinedProperties = { + [K in keyof T]: T[K] extends undefined ? T[K] : T[K] | undefined; +}; + export type BenchmarkRuns = GenericRecord; export interface BenchmarkMeasurement { diff --git a/packages/aws-sdk/src/client-dynamodb/getDocumentClient.ts b/packages/aws-sdk/src/client-dynamodb/getDocumentClient.ts index eb4e360f938..50e5c68d462 100644 --- a/packages/aws-sdk/src/client-dynamodb/getDocumentClient.ts +++ b/packages/aws-sdk/src/client-dynamodb/getDocumentClient.ts @@ -2,6 +2,12 @@ import { DynamoDBClient, DynamoDBClientConfig } from "@aws-sdk/client-dynamodb"; import { DynamoDBDocument, TranslateConfig } from "@aws-sdk/lib-dynamodb"; import crypto from "crypto"; +export interface IDecorateDocumentClientCallable { + (client: DynamoDBDocument): DynamoDBDocument; +} + +let decorateDocumentClientCallable: IDecorateDocumentClientCallable | undefined = undefined; + const DEFAULT_CONFIG = { region: process.env.AWS_REGION }; @@ -29,12 +35,41 @@ export const getDocumentClient = (input?: DynamoDBClientConfig): DynamoDBDocumen const config = input || DEFAULT_CONFIG; const key = createKey(config); if (documentClients[key]) { - return documentClients[key]; + return applyDecoration(documentClients[key]); } const client = new DynamoDBClient(config); const documentClient = DynamoDBDocument.from(client, documentClientConfig); - documentClients[key] = documentClient; - return documentClient; + return (documentClients[key] = applyDecoration(documentClient)); +}; +/** + * Client will not be decorated more than once. + */ +const applyDecoration = (client: DynamoDBDocument): DynamoDBDocument => { + if (!decorateDocumentClientCallable) { + return client; + } + /** + * If client is already decorated, let's skip decoration. + */ + // @ts-expect-error + else if (client.__decoratedByWebiny) { + return client; + } + // @ts-expect-error + client.__decoratedByWebiny = true; + return decorateDocumentClientCallable(client); +}; + +export const decorateDocumentClient = (cb: IDecorateDocumentClientCallable): void => { + /** + * This will probably show during the development phase. + */ + if (decorateDocumentClientCallable) { + throw new Error( + "Cannot add more than one decoration of the document client. This is internal Webiny method, please do not use it." + ); + } + decorateDocumentClientCallable = cb; }; diff --git a/packages/aws-sdk/src/client-dynamodb/index.ts b/packages/aws-sdk/src/client-dynamodb/index.ts index 31d7c6ae2fb..8d0c7c0f757 100644 --- a/packages/aws-sdk/src/client-dynamodb/index.ts +++ b/packages/aws-sdk/src/client-dynamodb/index.ts @@ -8,13 +8,24 @@ export type { export type { StreamRecord } from "@aws-sdk/client-dynamodb-streams"; export { + BatchWriteCommandInput, + BatchWriteCommandOutput, + BatchGetCommandInput, + BatchGetCommandOutput, + PutCommandInput, + PutCommandOutput, + GetCommandInput, GetCommandOutput, + DeleteCommandInput, + DeleteCommandOutput, BatchWriteCommand, + BatchGetCommand, PutCommand, GetCommand, UpdateCommand, DeleteCommand, - DynamoDBDocument + DynamoDBDocument, + QueryCommandOutput } from "@aws-sdk/lib-dynamodb"; export { unmarshall, marshall } from "@aws-sdk/util-dynamodb"; diff --git a/packages/aws-sdk/src/client-eventbridge/index.ts b/packages/aws-sdk/src/client-eventbridge/index.ts index e0d893c85f6..37a7eedcd23 100644 --- a/packages/aws-sdk/src/client-eventbridge/index.ts +++ b/packages/aws-sdk/src/client-eventbridge/index.ts @@ -1,7 +1,20 @@ +import type { EventBridgeClientConfig } from "@aws-sdk/client-eventbridge"; +import { EventBridgeClient } from "@aws-sdk/client-eventbridge"; + export { EventBridgeClient, PutEventsRequestEntry, - PutEventsCommand, + PutEventsCommand +} from "@aws-sdk/client-eventbridge"; + +export type { + EventBridgeClientConfig, PutEventsCommandInput, PutEventsCommandOutput } from "@aws-sdk/client-eventbridge"; + +export const createEventBridgeClient = (config?: Partial) => { + return new EventBridgeClient({ + ...config + }); +}; diff --git a/packages/cli-plugin-deploy-pulumi/src/commands/deploy/pulumiLoginSelectStack.ts b/packages/cli-plugin-deploy-pulumi/src/commands/deploy/pulumiLoginSelectStack.ts index 654612ce2af..edf53d999d7 100644 --- a/packages/cli-plugin-deploy-pulumi/src/commands/deploy/pulumiLoginSelectStack.ts +++ b/packages/cli-plugin-deploy-pulumi/src/commands/deploy/pulumiLoginSelectStack.ts @@ -43,7 +43,7 @@ export const pulumiLoginSelectStack = async ({ */ const region = inputs.region || process.env.AWS_REGION; - const skip = ["core", "blueGreen"].includes(projectApplication.id); + const skip = ["core", "blueGreen", "sync"].includes(projectApplication.id); if (!skip) { const coreStack = getStackOutput({ diff --git a/packages/cli-plugin-deploy-pulumi/src/plugins/AfterDestroyPlugin.ts b/packages/cli-plugin-deploy-pulumi/src/plugins/AfterDestroyPlugin.ts new file mode 100644 index 00000000000..a4ee22a4659 --- /dev/null +++ b/packages/cli-plugin-deploy-pulumi/src/plugins/AfterDestroyPlugin.ts @@ -0,0 +1,12 @@ +import { + Callable, + PulumiCommandLifecycleEventHookPlugin +} from "./PulumiCommandLifecycleEventHookPlugin"; + +export class AfterDestroyPlugin extends PulumiCommandLifecycleEventHookPlugin { + public static override type = "hook-after-destroy"; +} + +export const createAfterDestroyPlugin = (callable: Callable) => { + return new AfterDestroyPlugin(callable); +}; diff --git a/packages/cli-plugin-deploy-pulumi/src/plugins/index.ts b/packages/cli-plugin-deploy-pulumi/src/plugins/index.ts index 38cd7282eee..abbda8047ca 100644 --- a/packages/cli-plugin-deploy-pulumi/src/plugins/index.ts +++ b/packages/cli-plugin-deploy-pulumi/src/plugins/index.ts @@ -1,5 +1,6 @@ export * from "./AfterBuildPlugin"; export * from "./AfterDeployPlugin"; +export * from "./AfterDestroyPlugin"; export * from "./BeforeBuildPlugin"; export * from "./BeforeDeployPlugin"; diff --git a/packages/cli-plugin-deploy-pulumi/src/utils/getStackOutput.ts b/packages/cli-plugin-deploy-pulumi/src/utils/getStackOutput.ts index 4d319342bea..a708dee72ee 100644 --- a/packages/cli-plugin-deploy-pulumi/src/utils/getStackOutput.ts +++ b/packages/cli-plugin-deploy-pulumi/src/utils/getStackOutput.ts @@ -75,6 +75,10 @@ export interface IDefaultStackOutput extends IStackOutput { apiDomain: string; apiUrl: string; graphqlLambdaRole: string; + graphqlLambdaRoleName: string; + fileManagerManageLambdaArn: string; + fileManagerManageLambdaRole: string; + fileManagerManageLambdaRoleName: string; apwSchedulerEventRule: string | undefined; apwSchedulerEventTargetId: string | undefined; apwSchedulerExecuteAction: string | undefined; @@ -85,6 +89,7 @@ export interface IDefaultStackOutput extends IStackOutput { cognitoUserPoolPasswordPolicy: string; websocketApiUrl: string; fileManagerBucketId: string; + fileManagerBucketArn: string; primaryDynamodbTableArn: string; primaryDynamodbTableName: string; primaryDynamodbTableHashKey: string; @@ -100,6 +105,8 @@ export interface IDefaultStackOutput extends IStackOutput { vpcSecurityGroupIds: string[] | undefined; elasticsearchDomainArn: string | undefined; elasticsearchDomainEndpoint: string | undefined; + elasticsearchDynamodbTableHashKey: string; + elasticsearchDynamodbTableRangeKey: string; elasticsearchDynamodbTableArn: string | undefined; elasticsearchDynamodbTableName: string | undefined; appStorage: string; diff --git a/packages/cli/files/duplicates.json b/packages/cli/files/duplicates.json index f7e59d3dd6d..e4499ea57bc 100644 --- a/packages/cli/files/duplicates.json +++ b/packages/cli/files/duplicates.json @@ -1 +1 @@ -[{"name":"@babel/runtime","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]},{"version":"7.26.0","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"downshift","versions":[{"version":"3.1.2","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]},{"version":"2.1.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"typescript","versions":[{"version":"5.3.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-es/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-os/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-dynamodb-to-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-bulk-actions/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-es-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["devDependencies"]},{"file":"/packages/app-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-utils/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["devDependencies"]},{"file":"/packages/app-website/package.json","types":["devDependencies"]},{"file":"/packages/app-websockets/package.json","types":["devDependencies"]},{"file":"/packages/aws-sdk/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/di-container/package.json","types":["devDependencies"]},{"file":"/packages/error/package.json","types":["devDependencies"]},{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/handler/package.json","types":["devDependencies"]},{"file":"/packages/handler-aws/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-db/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/i18n-react/package.json","types":["devDependencies"]},{"file":"/packages/ioc/package.json","types":["devDependencies"]},{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pubsub/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/react-composition/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]},{"file":"/packages/react-router/package.json","types":["devDependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["devDependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/packages/ui-composer/package.json","types":["devDependencies"]},{"file":"/packages/utils/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]},{"file":"/packages/wcp/package.json","types":["devDependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]},{"version":"4.9.5","files":[{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]}]}]}] +[{"name":"downshift","versions":[{"version":"3.1.2","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]},{"version":"2.1.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]}] diff --git a/packages/cli/files/references.json b/packages/cli/files/references.json index bd6c8e415b0..b8b40d7e322 100644 --- a/packages/cli/files/references.json +++ b/packages/cli/files/references.json @@ -1 +1 @@ -{"dependencies":[{"name":"@apollo/react-common","version":"3.1.4","files":["/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@apollo/react-components","version":"3.1.5","files":["/packages/app-admin/package.json","/packages/app-file-manager/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json"]},{"name":"@apollo/react-hooks","version":"3.1.5","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"@auth0/auth0-react","version":"2.2.4","files":["/packages/app-admin-auth0/package.json"]},{"name":"@aws-amplify/auth","version":"5.6.15","files":["/packages/app-admin-cognito/package.json","/packages/app-cognito-authenticator/package.json"]},{"name":"@aws-sdk/client-apigatewaymanagementapi","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudfront","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudwatch-events","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudwatch-logs","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cognito-identity-provider","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-dynamodb-streams","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-eventbridge","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-iam","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-iot","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-lambda","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-s3","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sfn","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sqs","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sts","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/credential-providers","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/lib-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/lib-storage","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/s3-presigned-post","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/s3-request-presigner","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/util-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@babel/cli","version":"7.26.4","files":["/packages/project-utils/package.json"]},{"name":"@babel/code-frame","version":"7.26.2","files":["/packages/api-headless-cms/package.json"]},{"name":"@babel/core","version":"7.26.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-class-properties","version":"7.18.6","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-object-rest-spread","version":"7.20.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-throw-expressions","version":"7.25.9","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-syntax-object-rest-spread","version":"7.8.3","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-env","version":"7.26.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-react","version":"7.26.3","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-typescript","version":"7.26.0","files":["/packages/project-utils/package.json"]},{"name":"@babel/runtime","version":"7.26.7","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/project-utils/package.json"]},{"name":"@dnd-kit/core","version":"6.1.0","files":["/packages/app-form-builder/package.json"]},{"name":"@dnd-kit/sortable","version":"8.0.0","files":["/packages/app-form-builder/package.json"]},{"name":"@dnd-kit/utilities","version":"3.2.2","files":["/packages/app-form-builder/package.json"]},{"name":"@editorjs/delimiter","version":"1.4.2","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/editorjs","version":"2.26.5","files":["/packages/app-admin/package.json","/packages/app-form-builder/package.json","/packages/react-rich-text-renderer/package.json","/packages/ui/package.json"]},{"name":"@editorjs/list","version":"1.10.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/quote","version":"2.7.2","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/underline","version":"1.2.1","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@elastic/elasticsearch","version":"7.12.0","files":["/packages/api-elasticsearch/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/data-migration/package.json","/packages/migrations/package.json"]},{"name":"@emotion/cache","version":"11.10.5","files":["/packages/app-website/package.json"]},{"name":"@emotion/is-prop-valid","version":"1.1.1","files":["/packages/app-apw/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor/package.json","/packages/lexical-theme/package.json","/packages/theme/package.json","/packages/ui/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"@emotion/styled","version":"11.10.6","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/ui/package.json","/extensions/theme/package.json"]},{"name":"@fastify/aws-lambda","version":"4.1.0","files":["/packages/handler-aws/package.json"]},{"name":"@fastify/compress","version":"7.0.3","files":["/packages/handler/package.json"]},{"name":"@fastify/cookie","version":"9.4.0","files":["/packages/handler/package.json"]},{"name":"@fortawesome/fontawesome-common-types","version":"0.3.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/fontawesome-svg-core","version":"1.3.0","files":["/packages/app-dynamic-pages/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-brands-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-regular-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-solid-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/react-fontawesome","version":"0.1.17","files":["/packages/app-dynamic-pages/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@graphql-tools/merge","version":"9.0.4","files":["/packages/api-headless-cms/package.json","/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/resolvers-composition","version":"7.0.1","files":["/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/schema","version":"10.0.6","files":["/packages/api-headless-cms/package.json","/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/utils","version":"10.3.1","files":["/packages/handler-graphql/package.json"]},{"name":"@iconify/json","version":"2.2.142","files":["/packages/app-admin/package.json"]},{"name":"@lexical/code","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/hashtag","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/headless","version":"0.23.1","files":["/packages/lexical-converter/package.json"]},{"name":"@lexical/history","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/html","version":"0.23.1","files":["/packages/lexical-converter/package.json"]},{"name":"@lexical/list","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/mark","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/overflow","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/react","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/rich-text","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/selection","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/text","version":"0.23.1","files":["/packages/lexical-editor/package.json"]},{"name":"@lexical/utils","version":"0.23.1","files":["/packages/app-headless-cms/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-pb-element/package.json","/packages/lexical-nodes/package.json"]},{"name":"@material-design-icons/svg","version":"0.14.13","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-trash-bin/package.json","/packages/lexical-editor-pb-element/package.json","/packages/ui/package.json"]},{"name":"@material-symbols/svg-400","version":"0.4.1","files":["/packages/app-aco/package.json","/packages/app-form-builder/package.json"]},{"name":"@minoru/react-dnd-treeview","version":"3.2.1","files":["/packages/app-aco/package.json"]},{"name":"@monaco-editor/react","version":"4.7.0","files":["/packages/app-admin/package.json"]},{"name":"@okta/okta-auth-js","version":"5.3.1","files":["/packages/app-admin-okta/package.json"]},{"name":"@okta/okta-react","version":"6.1.0","files":["/packages/app-admin-okta/package.json"]},{"name":"@okta/okta-signin-widget","version":"5.9.4","files":["/packages/app-admin-okta/package.json"]},{"name":"@pmmmwh/react-refresh-webpack-plugin","version":"0.5.15","files":["/packages/project-utils/package.json"]},{"name":"@pulumi/aws","version":"6.67.0","files":["/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"@pulumi/pulumi","version":"3.147.0","files":["/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"@pulumi/random","version":"4.17.0","files":["/packages/pulumi-aws/package.json"]},{"name":"@rmwc/base","version":"14.3.5","files":["/packages/app-admin-rmwc/package.json"]},{"name":"@rmwc/button","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/checkbox","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/chip","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/data-table","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/dialog","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/drawer","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/elevation","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/fab","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/grid","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/icon-button","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/list","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/menu","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/provider","version":"14.3.5","files":["/packages/app-admin-rmwc/package.json"]},{"name":"@rmwc/radio","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/ripple","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/select","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/slider","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/snackbar","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/switch","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/tabs","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/textfield","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/top-app-bar","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/touch-target","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/typography","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rspack/core","version":"1.2.2","files":["/packages/project-utils/package.json"]},{"name":"@smithy/node-http-handler","version":"2.1.6","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"@sparticuz/chromium","version":"131.0.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"@svgr/webpack","version":"6.1.1","files":["/packages/app-admin/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/project-utils/package.json","/packages/ui/package.json"]},{"name":"@tanstack/react-table","version":"8.5.22","files":["/packages/ui/package.json"]},{"name":"@types/aws-lambda","version":"8.10.145","files":["/packages/aws-helpers/package.json","/packages/aws-sdk/package.json"]},{"name":"@types/hoist-non-react-statics","version":"3.3.5","files":["/package.json"]},{"name":"@types/medium-editor","version":"5.0.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/mime","version":"2.0.3","files":["/packages/app-admin/package.json"]},{"name":"@types/prismjs","version":"1.26.4","files":["/packages/lexical-nodes/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/react-rich-text-renderer/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"@types/webpack-env","version":"1.18.5","files":["/packages/project-utils/package.json"]},{"name":"accept-language-parser","version":"1.5.0","files":["/packages/api-i18n/package.json"]},{"name":"accounting","version":"0.4.1","files":["/packages/i18n/package.json"]},{"name":"aos","version":"2.3.4","files":["/packages/app-page-builder/package.json"]},{"name":"apollo-cache","version":"1.3.5","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json"]},{"name":"apollo-cache-inmemory","version":"1.6.6","files":["/packages/app/package.json"]},{"name":"apollo-client","version":"2.6.10","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/react-router/package.json","/apps/website/package.json"]},{"name":"apollo-link","version":"1.2.14","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/website/package.json"]},{"name":"apollo-link-batch-http","version":"1.2.14","files":["/packages/app-serverless-cms/package.json","/packages/app-website/package.json"]},{"name":"apollo-link-context","version":"1.0.20","files":["/packages/app/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-graphql-playground/package.json","/packages/app-i18n/package.json"]},{"name":"apollo-link-error","version":"1.1.13","files":["/packages/app/package.json"]},{"name":"apollo-link-http-common","version":"0.2.16","files":["/packages/app/package.json"]},{"name":"apollo-utilities","version":"1.3.4","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json"]},{"name":"archiver","version":"7.0.1","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"archy","version":"1.0.0","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"assert-browserify","version":"2.0.0","files":["/packages/project-utils/package.json"]},{"name":"babel-loader","version":"9.2.1","files":["/packages/project-utils/package.json"]},{"name":"boolean","version":"3.2.0","files":["/packages/app/package.json","/packages/cli/package.json","/packages/handler-graphql/package.json"]},{"name":"brace","version":"0.11.1","files":["/packages/ui/package.json"]},{"name":"buffer","version":"6.0.3","files":["/packages/project-utils/package.json"]},{"name":"bufferutil","version":"4.0.1","files":["/packages/project-utils/package.json"]},{"name":"bytes","version":"3.1.2","files":["/packages/api-headless-cms-import-export/package.json","/packages/app/package.json","/packages/app-file-manager/package.json"]},{"name":"cache-control-parser","version":"2.0.6","files":["/packages/api-file-manager/package.json"]},{"name":"camelcase","version":"6.3.0","files":["/packages/cli/package.json","/packages/project-utils/package.json"]},{"name":"case","version":"1.6.3","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"case-sensitive-paths-webpack-plugin","version":"2.4.0","files":["/packages/project-utils/package.json"]},{"name":"center-align","version":"1.0.1","files":["/packages/data-migration/package.json"]},{"name":"chalk","version":"4.1.2","files":["/packages/aws-layers/package.json","/packages/cli/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/data-migration/package.json","/packages/project-utils/package.json","/packages/serverless-cms-aws/package.json","/packages/system-requirements/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"cheerio","version":"1.0.0-rc.10","files":["/packages/aws-helpers/package.json"]},{"name":"ci-info","version":"4.1.0","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/packages/telemetry/package.json"]},{"name":"classnames","version":"2.5.1","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json","/packages/react-rich-text-renderer/package.json","/packages/ui/package.json"]},{"name":"cli-table3","version":"0.6.5","files":["/packages/system-requirements/package.json"]},{"name":"color","version":"4.2.3","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"core-js","version":"3.39.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"cropperjs","version":"1.4.3","files":["/packages/ui/package.json"]},{"name":"cross-fetch","version":"3.1.5","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"crypto-browserify","version":"3.12.0","files":["/packages/project-utils/package.json"]},{"name":"crypto-hash","version":"3.0.0","files":["/packages/app-record-locking/package.json"]},{"name":"crypto-js","version":"4.2.0","files":["/packages/api-mailer/package.json"]},{"name":"css-loader","version":"6.10.0","files":["/packages/project-utils/package.json"]},{"name":"css-minimizer-webpack-plugin","version":"7.0.0","files":["/packages/project-utils/package.json"]},{"name":"dataloader","version":"2.2.2","files":["/packages/api-admin-users/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-tenancy/package.json"]},{"name":"dataurl-to-blob","version":"0.0.1","files":["/packages/app-file-manager/package.json"]},{"name":"date-fns","version":"2.22.1","files":["/packages/api-form-builder/package.json","/packages/app-audit-logs/package.json","/packages/db-dynamodb/package.json"]},{"name":"dayjs","version":"1.11.13","files":["/packages/api-apw/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json"]},{"name":"decompress","version":"4.2.1","files":["/packages/pulumi-sdk/package.json"]},{"name":"deep-equal","version":"2.2.3","files":["/packages/api-security/package.json","/packages/api-security-cognito/package.json","/packages/tasks/package.json"]},{"name":"dnd-core","version":"16.0.1","files":["/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json"]},{"name":"dnd-kit-sortable-tree","version":"0.1.73","files":["/packages/app-page-builder/package.json"]},{"name":"dot-prop","version":"6.0.1","files":["/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/db-dynamodb/package.json"]},{"name":"dot-prop-immutable","version":"2.1.1","files":["/packages/api-page-builder-import-export/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/ui/package.json"]},{"name":"dotenv","version":"8.2.0","files":["/packages/cli/package.json"]},{"name":"downshift","version":"3.1.2","files":["/packages/app-admin/package.json"]},{"name":"downshift","version":"2.1.5","files":["/packages/ui/package.json"]},{"name":"dynamodb-toolbox","version":"0.9.2","files":["/packages/db-dynamodb/package.json"]},{"name":"elastic-ts","version":"0.12.0","files":["/packages/api-elasticsearch/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-page-builder-so-ddb-es/package.json"]},{"name":"emotion","version":"10.0.27","files":["/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n-content/package.json","/packages/app-page-builder/package.json","/packages/app-security-access-management/package.json","/packages/app-tenant-manager/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-theme/package.json","/packages/ui/package.json"]},{"name":"eslint","version":"8.57.1","files":["/packages/project-utils/package.json"]},{"name":"eslint-config-react-app","version":"6.0.0","files":["/packages/project-utils/package.json"]},{"name":"eslint-webpack-plugin","version":"4.2.0","files":["/packages/project-utils/package.json"]},{"name":"execa","version":"5.1.1","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/cli-plugin-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/pulumi-sdk/package.json","/packages/system-requirements/package.json","/scripts/buildPackages/package.json"]},{"name":"exit-hook","version":"4.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"extract-zip","version":"1.6.7","files":["/packages/api-page-builder/package.json"]},{"name":"facepaint","version":"1.2.1","files":["/packages/app-page-builder-elements/package.json"]},{"name":"fast-glob","version":"3.2.7","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cwp-template-aws/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"fastify","version":"4.29.0","files":["/packages/handler/package.json","/packages/handler-aws/package.json"]},{"name":"fecha","version":"2.3.3","files":["/packages/i18n/package.json"]},{"name":"file-loader","version":"6.2.0","files":["/packages/project-utils/package.json"]},{"name":"find-up","version":"5.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/create-webiny-project/package.json","/packages/pulumi/package.json","/packages/serverless-cms-aws/package.json","/scripts/prepublishOnly/package.json"]},{"name":"folder-hash","version":"4.0.4","files":["/scripts/buildPackages/package.json"]},{"name":"fork-ts-checker-webpack-plugin","version":"9.0.2","files":["/packages/project-utils/package.json"]},{"name":"form-data","version":"4.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/pulumi-aws/package.json"]},{"name":"fs-extra","version":"11.2.0","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/cli/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/packages/pulumi-sdk/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"fuse.js","version":"7.0.0","files":["/packages/db-dynamodb/package.json"]},{"name":"get-yarn-workspaces","version":"1.0.2","files":["/packages/cli-plugin-dependencies/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/scripts/prepublishOnly/package.json"]},{"name":"glob","version":"7.2.3","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/project-utils/package.json"]},{"name":"graphlib","version":"2.1.8","files":["/packages/app-admin/package.json","/packages/cli-plugin-workspaces/package.json"]},{"name":"graphql","version":"15.9.0","files":["/packages/api-headless-cms/package.json","/packages/api-i18n-content/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/handler-graphql/package.json","/packages/react-router/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"graphql-request","version":"3.7.0","files":["/packages/cli/package.json"]},{"name":"graphql-scalars","version":"1.12.0","files":["/packages/handler-graphql/package.json"]},{"name":"graphql-tag","version":"2.12.6","files":["/packages/api-headless-cms/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/handler-graphql/package.json"]},{"name":"history","version":"5.3.0","files":["/packages/app-form-builder/package.json","/packages/app-page-builder/package.json","/packages/react-router/package.json"]},{"name":"html-webpack-plugin","version":"5.6.3","files":["/packages/project-utils/package.json"]},{"name":"humanize-duration","version":"3.32.1","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"i18n-locales","version":"0.0.5","files":["/packages/api-i18n/package.json"]},{"name":"indent-string","version":"5.0.0","files":["/packages/cli-plugin-scaffold-react-component/package.json"]},{"name":"inquirer","version":"8.2.6","files":["/packages/cli/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cwp-template-aws/package.json"]},{"name":"invariant","version":"2.2.4","files":["/packages/app/package.json","/packages/app-page-builder/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"inversify","version":"6.1.6","files":["/packages/ioc/package.json"]},{"name":"is-hotkey","version":"0.2.0","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"isnumeric","version":"0.3.3","files":["/packages/validation/package.json"]},{"name":"js-base64","version":"3.7.7","files":["/packages/cli-plugin-scaffold-ci/package.json"]},{"name":"js-yaml","version":"3.14.1","files":["/packages/create-webiny-project/package.json"]},{"name":"jsdom","version":"25.0.1","files":["/packages/api-headless-cms/package.json"]},{"name":"jsesc","version":"3.0.2","files":["/packages/telemetry/package.json"]},{"name":"json2csv","version":"4.5.4","files":["/packages/api-form-builder/package.json","/packages/app-form-builder/package.json"]},{"name":"jsonpack","version":"1.1.5","files":["/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json"]},{"name":"jsonwebtoken","version":"9.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"jwk-to-pem","version":"2.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"keycode","version":"2.2.0","files":["/packages/ui/package.json"]},{"name":"lexical","version":"0.23.1","files":["/packages/lexical-converter/package.json","/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json","/packages/lexical-theme/package.json"]},{"name":"listr","version":"0.14.3","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json"]},{"name":"listr2","version":"5.0.8","files":["/scripts/buildPackages/package.json"]},{"name":"load-json-file","version":"6.2.0","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/global-config/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"load-script","version":"1.0.0","files":["/packages/app-graphql-playground/package.json","/packages/ui/package.json"]},{"name":"lodash","version":"4.17.21","files":["/packages/api-aco/package.json","/packages/api-admin-users/package.json","/packages/api-apw/package.json","/packages/api-file-manager/package.json","/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-security-access-management/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cwp-template-aws/package.json","/packages/db-dynamodb/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/lexical-editor/package.json","/packages/migrations/package.json","/packages/project-utils/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/tasks/package.json","/packages/ui/package.json","/packages/validation/package.json","/scripts/prepublishOnly/package.json"]},{"name":"log-update","version":"4.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"lz-string","version":"1.5.0","files":["/packages/app-website/package.json"]},{"name":"material-components-web","version":"14.0.0","files":["/packages/ui/package.json"]},{"name":"md5","version":"2.3.0","files":["/packages/api-admin-users/package.json"]},{"name":"mdbid","version":"1.0.0","files":["/packages/utils/package.json"]},{"name":"medium-editor","version":"5.23.3","files":["/packages/app-page-builder/package.json"]},{"name":"mime","version":"3.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/app-file-manager/package.json","/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"mini-css-extract-plugin","version":"2.4.5","files":["/packages/project-utils/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/packages/api-security/package.json","/packages/app/package.json","/packages/app-file-manager/package.json","/packages/app-security/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/data-migration/package.json"]},{"name":"mobx","version":"6.9.0","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-trash-bin/package.json","/packages/app-utils/package.json"]},{"name":"mobx-react-lite","version":"3.4.3","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-trash-bin/package.json"]},{"name":"mqtt","version":"5.10.3","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"multimatch","version":"5.0.0","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"nanoid","version":"3.3.8","files":["/packages/app/package.json","/packages/app-page-builder/package.json","/packages/react-properties/package.json","/packages/utils/package.json"]},{"name":"nanoid-dictionary","version":"4.3.0","files":["/packages/utils/package.json"]},{"name":"ncp","version":"2.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"node-fetch","version":"2.6.7","files":["/packages/api-cognito-authenticator/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json","/packages/api-wcp/package.json","/packages/create-webiny-project/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json","/packages/wcp/package.json"]},{"name":"node-notifier","version":"10.0.1","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"nodemailer","version":"6.9.16","files":["/packages/api-mailer/package.json"]},{"name":"nprogress","version":"0.2.0","files":["/packages/ui/package.json"]},{"name":"nuka-carousel","version":"4.7.1","files":["/packages/ui/package.json"]},{"name":"null-loader","version":"4.0.1","files":["/packages/project-utils/package.json"]},{"name":"object-hash","version":"3.0.0","files":["/packages/api-file-manager/package.json","/packages/api-file-manager-s3/package.json","/packages/api-prerendering-service/package.json"]},{"name":"object-merge-advanced","version":"12.1.0","files":["/packages/tasks/package.json"]},{"name":"object-sizeof","version":"2.6.4","files":["/packages/tasks/package.json"]},{"name":"octokit","version":"3.1.2","files":["/packages/cli-plugin-scaffold-ci/package.json"]},{"name":"open","version":"8.4.2","files":["/packages/cli/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cwp-template-aws/package.json"]},{"name":"ora","version":"4.1.1","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"os","version":"0.1.1","files":["/packages/create-webiny-project/package.json"]},{"name":"os-browserify","version":"0.3.0","files":["/packages/project-utils/package.json"]},{"name":"p-map","version":"4.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/api-headless-cms/package.json","/packages/cli-plugin-workspaces/package.json"]},{"name":"p-reduce","version":"2.1.0","files":["/packages/api-file-manager-s3/package.json","/packages/api-headless-cms/package.json"]},{"name":"p-retry","version":"4.6.2","files":["/packages/api-dynamodb-to-elasticsearch/package.json","/packages/app-file-manager-s3/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json","/packages/utils/package.json"]},{"name":"p-wait-for","version":"4.1.0","files":["/packages/ui-composer/package.json"]},{"name":"pako","version":"2.1.0","files":["/packages/app-aco/package.json","/packages/app-page-builder/package.json"]},{"name":"path-browserify","version":"1.0.1","files":["/packages/project-utils/package.json"]},{"name":"pino-pretty","version":"9.4.0","files":["/packages/data-migration/package.json"]},{"name":"pirates","version":"4.0.6","files":["/packages/cli/package.json"]},{"name":"platform","version":"1.3.5","files":["/packages/app-page-builder/package.json"]},{"name":"pluralize","version":"8.0.0","files":["/packages/api-headless-cms/package.json","/packages/api-prerendering-service/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json"]},{"name":"postcss-flexbugs-fixes","version":"5.0.2","files":["/packages/project-utils/package.json"]},{"name":"postcss-loader","version":"6.2.1","files":["/packages/project-utils/package.json"]},{"name":"postcss-normalize","version":"10.0.1","files":["/packages/project-utils/package.json"]},{"name":"postcss-preset-env","version":"9.4.0","files":["/packages/project-utils/package.json"]},{"name":"posthtml","version":"0.15.0","files":["/packages/api-prerendering-service/package.json"]},{"name":"posthtml-noopener","version":"1.0.5","files":["/packages/api-prerendering-service/package.json"]},{"name":"posthtml-plugin-link-preload","version":"1.0.0","files":["/packages/api-prerendering-service/package.json"]},{"name":"process","version":"0.11.10","files":["/packages/project-utils/package.json"]},{"name":"prop-types","version":"15.8.1","files":["/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"puppeteer-core","version":"23.11.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"raw-loader","version":"4.0.2","files":["/packages/project-utils/package.json"]},{"name":"raw.macro","version":"0.4.2","files":["/packages/app-headless-cms/package.json"]},{"name":"rc-tooltip","version":"5.3.1","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/cli-plugin-extensions/templates/admin/package.json","/packages/cli-plugin-extensions/templates/pbElement/package.json","/packages/cli-plugin-extensions/templates/website/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/project-utils/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/ui-composer/package.json","/apps/admin/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"react-ace","version":"6.1.4","files":["/packages/ui/package.json"]},{"name":"react-butterfiles","version":"1.3.3","files":["/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/ui/package.json"]},{"name":"react-color","version":"2.19.3","files":["/packages/app-page-builder/package.json","/packages/lexical-editor-actions/package.json","/packages/ui/package.json"]},{"name":"react-columned","version":"1.1.3","files":["/packages/ui/package.json"]},{"name":"react-custom-scrollbars","version":"4.2.1","files":["/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/ui/package.json"]},{"name":"react-dev-utils","version":"12.0.1","files":["/packages/project-utils/package.json"]},{"name":"react-dnd","version":"16.0.1","files":["/packages/app-aco/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"react-dnd-html5-backend","version":"16.0.1","files":["/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"react-dom","version":"18.2.0","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/project-utils/package.json","/packages/react-composition/package.json","/packages/react-router/package.json","/packages/ui-composer/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"react-draggable","version":"4.4.6","files":["/packages/app-admin/package.json"]},{"name":"react-google-recaptcha","version":"1.1.0","files":["/packages/app-form-builder/package.json"]},{"name":"react-hamburger-menu","version":"1.2.1","files":["/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"react-helmet","version":"6.1.0","files":["/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-headless-cms/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-security-access-management/package.json","/packages/app-website/package.json"]},{"name":"react-hotkeyz","version":"1.0.4","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json"]},{"name":"react-images","version":"0.5.19","files":["/packages/app-page-builder/package.json"]},{"name":"react-in-viewport","version":"1.0.0-alpha.30","files":["/packages/app-page-builder/package.json"]},{"name":"react-lazy-load","version":"3.1.14","files":["/packages/app-file-manager/package.json"]},{"name":"react-loading-skeleton","version":"3.1.0","files":["/packages/ui/package.json"]},{"name":"react-refresh","version":"0.11.0","files":["/packages/project-utils/package.json"]},{"name":"react-resizable","version":"3.0.5","files":["/packages/app-admin/package.json"]},{"name":"react-resizable-panels","version":"2.0.19","files":["/packages/app-admin/package.json"]},{"name":"react-router-dom","version":"6.3.0","files":["/packages/react-router/package.json"]},{"name":"react-sortable","version":"2.0.0","files":["/packages/app-page-builder/package.json"]},{"name":"react-spinner-material","version":"1.1.4","files":["/packages/app-apw/package.json","/packages/ui/package.json"]},{"name":"react-style-object-to-css","version":"1.1.2","files":["/packages/lexical-theme/package.json"]},{"name":"react-transition-group","version":"4.4.5","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/ui/package.json"]},{"name":"react-virtualized","version":"9.22.5","files":["/packages/app-admin/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"read-json-sync","version":"2.0.1","files":["/packages/project-utils/package.json"]},{"name":"recoil","version":"0.7.7","files":["/packages/app-page-builder/package.json"]},{"name":"reflect-metadata","version":"0.2.2","files":["/packages/di-container/package.json","/packages/ioc/package.json"]},{"name":"regenerator-runtime","version":"0.13.11","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"replace-in-path","version":"1.1.0","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"reset-css","version":"5.0.1","files":["/packages/app-admin/package.json","/packages/app-website/package.json"]},{"name":"resolve","version":"1.22.8","files":["/packages/project-utils/package.json"]},{"name":"resolve-url-loader","version":"5.0.0","files":["/packages/project-utils/package.json"]},{"name":"rimraf","version":"6.0.1","files":["/packages/create-webiny-project/package.json","/packages/project-utils/package.json"]},{"name":"sanitize-filename","version":"1.6.3","files":["/packages/api-file-manager-s3/package.json"]},{"name":"sanitize-html","version":"2.12.1","files":["/packages/react-rich-text-renderer/package.json"]},{"name":"sass","version":"1.44.0","files":["/packages/project-utils/package.json"]},{"name":"sass-loader","version":"12.3.0","files":["/packages/project-utils/package.json"]},{"name":"scheduler","version":"0.19.1","files":["/packages/project-utils/package.json"]},{"name":"semver","version":"7.6.3","files":["/packages/api-headless-cms/package.json","/packages/cli/package.json","/packages/cli-plugin-dependencies/package.json","/packages/create-webiny-project/package.json","/packages/data-migration/package.json","/packages/pulumi-sdk/package.json","/packages/system-requirements/package.json"]},{"name":"serialize-error","version":"8.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"sharp","version":"0.32.6","files":["/packages/api-file-manager-s3/package.json"]},{"name":"short-hash","version":"1.0.0","files":["/packages/i18n/package.json"]},{"name":"slugify","version":"1.6.6","files":["/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/app-aco/package.json","/packages/app-dynamic-pages/package.json","/packages/app-page-builder/package.json"]},{"name":"source-map-loader","version":"1.1.3","files":["/packages/project-utils/package.json"]},{"name":"source-map-support","version":"0.5.21","files":["/packages/project-utils/package.json"]},{"name":"srcset","version":"4.0.0","files":["/packages/api-prerendering-service/package.json","/packages/aws-helpers/package.json"]},{"name":"store","version":"2.0.12","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-page-builder/package.json","/packages/app-tenancy/package.json"]},{"name":"stream","version":"0.0.3","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"strip-ansi","version":"6.0.1","files":["/packages/telemetry/package.json"]},{"name":"style-loader","version":"3.3.1","files":["/packages/project-utils/package.json"]},{"name":"swiper","version":"9.3.2","files":["/packages/app-page-builder/package.json"]},{"name":"tar","version":"6.2.1","files":["/packages/pulumi-sdk/package.json"]},{"name":"terminal-link","version":"2.1.1","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json"]},{"name":"terser-webpack-plugin","version":"5.3.10","files":["/packages/project-utils/package.json"]},{"name":"theme","version":"1.0.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"timeago-react","version":"3.0.6","files":["/packages/ui/package.json"]},{"name":"ts-checker-rspack-plugin","version":"1.0.3","files":["/packages/project-utils/package.json"]},{"name":"ts-invariant","version":"0.10.3","files":["/packages/app/package.json"]},{"name":"ts-morph","version":"11.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json"]},{"name":"ts-patch","version":"3.3.0","files":["/packages/project-utils/package.json"]},{"name":"tslib","version":"2.8.1","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"type-fest","version":"4.14.0","files":["/packages/api-websockets/package.json","/packages/db/package.json"]},{"name":"typescript","version":"5.3.3","files":["/packages/cli/package.json","/packages/project-utils/package.json"]},{"name":"unicode-emoji-json","version":"0.4.0","files":["/packages/app-admin/package.json"]},{"name":"uniqid","version":"5.4.0","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/app-page-builder/package.json","/packages/cli/package.json","/packages/plugins/package.json"]},{"name":"unzipper","version":"0.12.3","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"url","version":"0.11.4","files":["/packages/project-utils/package.json"]},{"name":"url-loader","version":"4.1.1","files":["/packages/project-utils/package.json"]},{"name":"use-deep-compare-effect","version":"1.8.1","files":["/packages/app-headless-cms/package.json"]},{"name":"utf-8-validate","version":"5.0.2","files":["/packages/project-utils/package.json"]},{"name":"uuid","version":"9.0.1","files":["/packages/create-webiny-project/package.json","/packages/global-config/package.json"]},{"name":"validate-npm-package-name","version":"3.0.0","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json"]},{"name":"vm-browserify","version":"1.1.2","files":["/packages/project-utils/package.json"]},{"name":"warning","version":"4.0.2","files":["/packages/app/package.json"]},{"name":"webpack","version":"5.97.0","files":["/packages/project-utils/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"webpack-dev-server","version":"4.15.2","files":["/packages/project-utils/package.json"]},{"name":"webpack-manifest-plugin","version":"5.0.0","files":["/packages/project-utils/package.json"]},{"name":"webpackbar","version":"7.0.0","files":["/packages/project-utils/package.json"]},{"name":"write-json-file","version":"4.3.0","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/global-config/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"wts-client","version":"1.0.1","files":["/packages/telemetry/package.json"]},{"name":"yargs","version":"17.7.2","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json","/packages/i18n/package.json","/scripts/buildPackages/package.json"]},{"name":"yauzl","version":"2.10.0","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"yesno","version":"0.4.0","files":["/packages/create-webiny-project/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/api-admin-users/package.json","/packages/api-apw/package.json","/packages/api-file-manager/package.json","/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-headless-cms-tasks/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security/package.json","/packages/api-websockets/package.json","/packages/app-aco/package.json","/packages/app-file-manager/package.json","/packages/pulumi-aws/package.json","/packages/tasks/package.json"]}],"devDependencies":[{"name":"@4tw/cypress-drag-drop","version":"1.4.0","files":["/cypress-tests/package.json"]},{"name":"@babel/cli","version":"7.26.4","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/code-frame","version":"7.26.2","files":["/package.json"]},{"name":"@babel/compat-data","version":"7.26.5","files":["/package.json"]},{"name":"@babel/core","version":"7.26.7","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/helper-define-polyfill-provider","version":"0.6.3","files":["/package.json"]},{"name":"@babel/helper-environment-visitor","version":"7.24.7","files":["/package.json"]},{"name":"@babel/parser","version":"7.26.7","files":["/package.json"]},{"name":"@babel/plugin-proposal-class-properties","version":"7.18.6","files":["/package.json"]},{"name":"@babel/plugin-proposal-object-rest-spread","version":"7.20.7","files":["/package.json"]},{"name":"@babel/plugin-proposal-throw-expressions","version":"7.25.9","files":["/package.json"]},{"name":"@babel/plugin-syntax-object-rest-spread","version":"7.8.3","files":["/package.json"]},{"name":"@babel/plugin-transform-modules-commonjs","version":"7.26.3","files":["/package.json"]},{"name":"@babel/plugin-transform-runtime","version":"7.25.9","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/preset-env","version":"7.26.7","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/preset-react","version":"7.26.3","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json"]},{"name":"@babel/preset-typescript","version":"7.26.0","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/register","version":"7.25.9","files":["/package.json","/packages/i18n/package.json"]},{"name":"@babel/runtime","version":"7.26.7","files":["/package.json"]},{"name":"@babel/template","version":"7.25.9","files":["/package.json"]},{"name":"@babel/traverse","version":"7.26.7","files":["/package.json"]},{"name":"@babel/types","version":"7.26.7","files":["/package.json"]},{"name":"@commitlint/cli","version":"11.0.0","files":["/package.json"]},{"name":"@commitlint/config-conventional","version":"11.0.0","files":["/package.json"]},{"name":"@elastic/elasticsearch","version":"7.12.0","files":["/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/project-utils/package.json"]},{"name":"@emotion/babel-plugin","version":"11.11.0","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"@faker-js/faker","version":"9.3.0","files":["/packages/api-headless-cms-es-tasks/package.json"]},{"name":"@grpc/grpc-js","version":"1.11.1","files":["/package.json"]},{"name":"@lexical/code","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/hashtag","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/headless","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/history","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/html","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/list","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/mark","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/overflow","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/react","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/rich-text","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/selection","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/text","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/utils","version":"0.23.1","files":["/package.json"]},{"name":"@material-design-icons/svg","version":"0.14.13","files":["/packages/app-audit-logs/package.json"]},{"name":"@material-symbols/svg-400","version":"0.4.1","files":["/packages/app-audit-logs/package.json"]},{"name":"@octokit/rest","version":"20.0.2","files":["/package.json"]},{"name":"@svgr/webpack","version":"6.1.1","files":["/packages/app-file-manager/package.json"]},{"name":"@testing-library/cypress","version":"10.0.0","files":["/cypress-tests/package.json"]},{"name":"@testing-library/react","version":"15.0.7","files":["/packages/form/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/ui/package.json"]},{"name":"@testing-library/user-event","version":"14.5.2","files":["/packages/form/package.json"]},{"name":"@types/accept-language-parser","version":"1.5.3","files":["/packages/api-i18n/package.json"]},{"name":"@types/accounting","version":"0.4.2","files":["/packages/i18n/package.json"]},{"name":"@types/adm-zip","version":"0.5.5","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"@types/aos","version":"3.0.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/archiver","version":"5.3.1","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"@types/babel__code-frame","version":"7.0.6","files":["/packages/api-headless-cms/package.json"]},{"name":"@types/bytes","version":"3.1.4","files":["/packages/app-admin/package.json"]},{"name":"@types/center-align","version":"1.0.0","files":["/packages/data-migration/package.json"]},{"name":"@types/crypto-js","version":"4.2.2","files":["/packages/api-mailer/package.json"]},{"name":"@types/extract-zip","version":"1.6.2","files":["/packages/api-page-builder/package.json"]},{"name":"@types/facepaint","version":"1.2.2","files":["/packages/app-page-builder-elements/package.json"]},{"name":"@types/folder-hash","version":"4.0.4","files":["/scripts/buildPackages/package.json"]},{"name":"@types/fs-extra","version":"11.0.4","files":["/package.json"]},{"name":"@types/graphlib","version":"2.1.12","files":["/packages/app-admin/package.json"]},{"name":"@types/gtag.js","version":"0.0.20","files":["/packages/app-form-builder/package.json"]},{"name":"@types/humanize-duration","version":"3.27.4","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/inquirer","version":"8.2.10","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/invariant","version":"2.2.35","files":["/packages/form/package.json"]},{"name":"@types/is-hotkey","version":"0.1.10","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"@types/is-number","version":"7.0.5","files":["/packages/db-dynamodb/package.json"]},{"name":"@types/jest","version":"29.5.14","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/jsdom","version":"21.1.6","files":["/packages/lexical-converter/package.json"]},{"name":"@types/json2csv","version":"4.5.1","files":["/packages/api-form-builder/package.json","/packages/app-form-builder/package.json"]},{"name":"@types/jsonpack","version":"1.1.6","files":["/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json"]},{"name":"@types/jsonwebtoken","version":"9.0.2","files":["/packages/api-admin-users/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json"]},{"name":"@types/jwk-to-pem","version":"2.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security-auth0/package.json"]},{"name":"@types/listr","version":"0.14.9","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/lodash","version":"4.17.13","files":["/packages/app/package.json","/packages/app-cognito-authenticator/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/pulumi/package.json","/packages/pulumi-sdk/package.json","/packages/validation/package.json"]},{"name":"@types/md5","version":"2.3.2","files":["/packages/api-admin-users/package.json"]},{"name":"@types/ncp","version":"2.0.4","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/node","version":"20.17.10","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/node-fetch","version":"2.6.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"@types/node-notifier","version":"8.0.5","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/nodemailer","version":"6.4.17","files":["/packages/api-mailer/package.json"]},{"name":"@types/nprogress","version":"0.2.0","files":["/packages/ui/package.json"]},{"name":"@types/object-hash","version":"2.2.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"@types/pako","version":"2.0.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/platform","version":"1.3.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/pluralize","version":"0.0.29","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/prettier","version":"2.7.3","files":["/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/package.json","/packages/app-aco/package.json","/packages/app-audit-logs/package.json","/packages/app-headless-cms-common/package.json","/packages/app-mailer/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/app-trash-bin/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/theme/package.json"]},{"name":"@types/react-color","version":"2.17.11","files":["/packages/lexical-editor-actions/package.json","/packages/ui/package.json"]},{"name":"@types/react-custom-scrollbars","version":"4.0.10","files":["/packages/ui/package.json"]},{"name":"@types/react-dom","version":"18.2.25","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/react-google-recaptcha","version":"1.1.2","files":["/packages/app-form-builder/package.json"]},{"name":"@types/react-hamburger-menu","version":"0.0.4","files":["/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"@types/react-helmet","version":"6.1.11","files":["/packages/app-admin-rmwc/package.json","/packages/app-security-access-management/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/website/package.json"]},{"name":"@types/react-images","version":"0.5.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/react-resizable","version":"3.0.8","files":["/packages/app-admin/package.json"]},{"name":"@types/react-transition-group","version":"4.4.4","files":["/packages/ui/package.json"]},{"name":"@types/react-virtualized","version":"9.21.16","files":["/packages/app-page-builder/package.json"]},{"name":"@types/resize-observer-browser","version":"0.1.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/rimraf","version":"3.0.2","files":["/packages/api-page-builder/package.json"]},{"name":"@types/sanitize-html","version":"2.9.0","files":["/packages/react-rich-text-renderer/package.json"]},{"name":"@types/semver","version":"7.3.4","files":["/packages/data-migration/package.json"]},{"name":"@types/store","version":"2.0.2","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"@types/uniqid","version":"5.3.2","files":["/packages/feature-flags/package.json","/packages/plugins/package.json"]},{"name":"@types/unzipper","version":"0.10.10","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"@types/validate-npm-package-name","version":"3.0.3","files":["/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/warning","version":"3.0.0","files":["/packages/app/package.json"]},{"name":"@types/yargs","version":"17.0.8","files":["/scripts/buildPackages/package.json"]},{"name":"@types/yauzl","version":"2.9.2","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"@typescript-eslint/eslint-plugin","version":"6.21.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@typescript-eslint/parser","version":"6.21.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"adio","version":"1.0.1","files":["/package.json"]},{"name":"adm-zip","version":"0.5.14","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"amazon-cognito-identity-js","version":"4.5.3","files":["/cypress-tests/package.json"]},{"name":"apollo-client","version":"2.6.10","files":["/packages/app-aco/package.json","/packages/app-trash-bin/package.json"]},{"name":"apollo-graphql","version":"0.9.5","files":["/packages/api-admin-settings/package.json","/packages/api-headless-cms/package.json"]},{"name":"apollo-link","version":"1.2.14","files":["/packages/app-aco/package.json","/packages/app-trash-bin/package.json"]},{"name":"aws-sdk-client-mock","version":"4.1.0","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"axios","version":"1.7.9","files":["/package.json"]},{"name":"babel-jest","version":"29.7.0","files":["/package.json"]},{"name":"babel-loader","version":"9.2.1","files":["/package.json","/packages/ui/package.json"]},{"name":"babel-plugin-dynamic-import-node","version":"2.3.3","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"babel-plugin-macros","version":"3.1.0","files":["/package.json"]},{"name":"babel-plugin-module-resolver","version":"5.0.2","files":["/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"babel-plugin-named-asset-import","version":"1.0.0-next.3e165448","files":["/packages/app-admin-rmwc/package.json","/packages/app-serverless-cms/package.json","/packages/app-theme-manager/package.json"]},{"name":"bytes","version":"3.1.2","files":["/packages/api-page-builder/package.json"]},{"name":"chalk","version":"4.1.2","files":["/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/pulumi-aws/package.json"]},{"name":"cross-env","version":"5.2.1","files":["/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"cross-spawn","version":"6.0.6","files":["/package.json"]},{"name":"csvtojson","version":"2.0.10","files":["/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json"]},{"name":"cypress","version":"13.16.0","files":["/cypress-tests/package.json"]},{"name":"cypress-image-snapshot","version":"4.0.1","files":["/cypress-tests/package.json"]},{"name":"cypress-mailosaur","version":"2.7.0","files":["/cypress-tests/package.json"]},{"name":"cypress-wait-until","version":"1.7.1","files":["/cypress-tests/package.json"]},{"name":"deepmerge","version":"4.3.1","files":["/package.json"]},{"name":"del","version":"6.0.0","files":["/cypress-tests/package.json"]},{"name":"dotenv","version":"8.2.0","files":["/packages/cwp-template-aws/package.json"]},{"name":"elastic-ts","version":"0.12.0","files":["/packages/migrations/package.json"]},{"name":"elliptic","version":"6.6.1","files":["/package.json"]},{"name":"env-ci","version":"2.0.1","files":["/package.json"]},{"name":"eslint","version":"8.57.1","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-config-standard","version":"16.0.3","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-import-resolver-babel-module","version":"5.3.2","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-import","version":"2.27.5","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-jest","version":"25.7.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-lodash","version":"7.4.0","files":["/package.json"]},{"name":"eslint-plugin-node","version":"11.1.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-promise","version":"5.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-react","version":"7.32.2","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-standard","version":"5.0.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"execa","version":"5.1.1","files":["/package.json","/packages/app-audit-logs/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"fast-glob","version":"3.2.7","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json"]},{"name":"find-up","version":"5.0.0","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json"]},{"name":"folder-hash","version":"4.0.4","files":["/package.json"]},{"name":"fs-extra","version":"11.2.0","files":["/package.json","/packages/api-form-builder/package.json"]},{"name":"get-stream","version":"3.0.0","files":["/package.json"]},{"name":"get-yarn-workspaces","version":"1.0.2","files":["/package.json"]},{"name":"git-cz","version":"1.7.1","files":["/package.json"]},{"name":"github-actions-wac","version":"1.4.1","files":["/package.json"]},{"name":"glob","version":"7.2.3","files":["/package.json","/packages/i18n/package.json"]},{"name":"graphql","version":"15.9.0","files":["/package.json","/packages/api-aco/package.json","/packages/api-apw/package.json","/packages/api-audit-logs/package.json","/packages/api-file-manager-aco/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-aco/package.json","/packages/api-headless-cms-bulk-actions/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-mailer/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-record-locking/package.json","/packages/api-serverless-cms/package.json","/packages/api-websockets/package.json"]},{"name":"graphql-request","version":"3.7.0","files":["/cypress-tests/package.json","/apps/api/graphql/package.json"]},{"name":"husky","version":"4.2.5","files":["/package.json"]},{"name":"identity-obj-proxy","version":"3.0.0","files":["/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"inquirer","version":"8.2.6","files":["/package.json"]},{"name":"inquirer-autocomplete-prompt","version":"1.0.1","files":["/package.json"]},{"name":"inquirer-checkbox-plus-prompt","version":"1.0.1","files":["/package.json"]},{"name":"inquirer-maxlength-input-prompt","version":"1.0.0","files":["/package.json"]},{"name":"jest","version":"29.7.0","files":["/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-security-so-ddb/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/data-migration/package.json","/packages/db-dynamodb/package.json","/packages/handler-client/package.json","/packages/handler-graphql/package.json","/packages/validation/package.json"]},{"name":"jest-dynalite","version":"3.6.1","files":["/packages/api-admin-settings/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-authentication/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-security-so-ddb/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-wcp/package.json","/packages/data-migration/package.json","/packages/db-dynamodb/package.json","/packages/migrations/package.json","/packages/project-utils/package.json"]},{"name":"jest-environment-jsdom","version":"29.7.0","files":["/package.json"]},{"name":"jest-extended","version":"4.0.2","files":["/package.json"]},{"name":"jest-mock-console","version":"2.0.0","files":["/packages/data-migration/package.json","/packages/handler-graphql/package.json"]},{"name":"jsdom","version":"25.0.1","files":["/packages/lexical-converter/package.json"]},{"name":"jsonpack","version":"1.1.5","files":["/packages/api-file-manager-ddb/package.json"]},{"name":"lerna","version":"8.1.2","files":["/package.json"]},{"name":"lexical","version":"0.23.1","files":["/package.json"]},{"name":"lint-staged","version":"15.3.0","files":["/package.json"]},{"name":"listr","version":"0.14.3","files":["/package.json"]},{"name":"listr2","version":"5.0.8","files":["/packages/project-utils/package.json"]},{"name":"load-json-file","version":"6.2.0","files":["/package.json","/packages/project-utils/package.json"]},{"name":"lodash","version":"4.17.21","files":["/package.json","/cypress-tests/package.json"]},{"name":"longest","version":"2.0.1","files":["/package.json"]},{"name":"md5","version":"2.3.0","files":["/packages/api-security-cognito/package.json"]},{"name":"merge","version":"2.1.1","files":["/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"micromatch","version":"4.0.8","files":["/package.json"]},{"name":"mime","version":"3.0.0","files":["/packages/pulumi-aws/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/package.json"]},{"name":"mobx","version":"6.9.0","files":["/packages/form/package.json"]},{"name":"mobx-react-lite","version":"3.4.3","files":["/packages/form/package.json"]},{"name":"monaco-editor","version":"0.52.2","files":["/packages/app-admin/package.json"]},{"name":"nanoid","version":"3.3.8","files":["/package.json","/cypress-tests/package.json"]},{"name":"ncp","version":"2.0.0","files":["/packages/ui/package.json"]},{"name":"node-fetch","version":"2.6.7","files":["/package.json","/cypress-tests/package.json"]},{"name":"pino","version":"8.21.0","files":["/packages/logger/package.json","/packages/project-utils/package.json"]},{"name":"pino-pretty","version":"9.4.0","files":["/packages/project-utils/package.json"]},{"name":"pm2","version":"5.4.3","files":["/package.json"]},{"name":"prettier","version":"2.8.8","files":["/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-apw/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"raw-loader","version":"4.0.2","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/lexical-nodes/package.json"]},{"name":"rimraf","version":"6.0.1","files":["/packages/api/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-authentication/package.json","/packages/api-authentication-cognito/package.json","/packages/api-background-tasks-ddb/package.json","/packages/api-background-tasks-es/package.json","/packages/api-background-tasks-os/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-elasticsearch/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-content/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-record-locking/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json","/packages/api-security-okta/package.json","/packages/api-security-so-ddb/package.json","/packages/api-serverless-cms/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/api-wcp/package.json","/packages/api-websockets/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/aws-sdk/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/data-migration/package.json","/packages/db/package.json","/packages/db-dynamodb/package.json","/packages/error/package.json","/packages/feature-flags/package.json","/packages/form/package.json","/packages/handler/package.json","/packages/handler-aws/package.json","/packages/handler-client/package.json","/packages/handler-db/package.json","/packages/handler-graphql/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/logger/package.json","/packages/plugins/package.json","/packages/pubsub/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/tasks/package.json","/packages/theme/package.json","/packages/ui/package.json","/packages/ui-composer/package.json","/packages/utils/package.json","/packages/validation/package.json","/packages/wcp/package.json"]},{"name":"semver","version":"7.6.3","files":["/package.json"]},{"name":"source-map-explorer","version":"2.5.3","files":["/apps/website/package.json"]},{"name":"ts-expect","version":"1.3.0","files":["/package.json"]},{"name":"ts-jest","version":"29.1.5","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"ts-node","version":"10.9.2","files":["/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"ttypescript","version":"1.5.15","files":["/packages/api-file-manager-aco/package.json","/packages/app-dynamic-pages/package.json"]},{"name":"type-fest","version":"4.14.0","files":["/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-record-locking/package.json","/packages/cli-plugin-dependencies/package.json","/packages/tasks/package.json","/scripts/prepublishOnly/package.json"]},{"name":"typescript","version":"5.3.3","files":["/package.json","/packages/api/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-audit-logs/package.json","/packages/api-authentication/package.json","/packages/api-authentication-cognito/package.json","/packages/api-background-tasks-ddb/package.json","/packages/api-background-tasks-es/package.json","/packages/api-background-tasks-os/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-dynamodb-to-elasticsearch/package.json","/packages/api-elasticsearch/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-aco/package.json","/packages/api-headless-cms-bulk-actions/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-headless-cms-es-tasks/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-headless-cms-tasks/package.json","/packages/api-headless-cms-tasks-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-content/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-record-locking/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json","/packages/api-security-okta/package.json","/packages/api-security-so-ddb/package.json","/packages/api-serverless-cms/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/api-wcp/package.json","/packages/api-websockets/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-utils/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/aws-sdk/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/data-migration/package.json","/packages/db/package.json","/packages/db-dynamodb/package.json","/packages/di-container/package.json","/packages/error/package.json","/packages/feature-flags/package.json","/packages/form/package.json","/packages/handler/package.json","/packages/handler-aws/package.json","/packages/handler-client/package.json","/packages/handler-db/package.json","/packages/handler-graphql/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/ioc/package.json","/packages/logger/package.json","/packages/migrations/package.json","/packages/plugins/package.json","/packages/pubsub/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/react-composition/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/serverless-cms-aws/package.json","/packages/tasks/package.json","/packages/theme/package.json","/packages/ui/package.json","/packages/ui-composer/package.json","/packages/utils/package.json","/packages/validation/package.json","/packages/wcp/package.json","/cypress-tests/package.json"]},{"name":"typescript","version":"4.9.5","files":["/packages/api-file-manager-aco/package.json"]},{"name":"typescript-transform-paths","version":"3.5.3","files":["/package.json"]},{"name":"uniqid","version":"5.4.0","files":["/cypress-tests/package.json"]},{"name":"verdaccio","version":"6.0.5","files":["/package.json"]},{"name":"write-json-file","version":"4.3.0","files":["/package.json","/packages/api-headless-cms/package.json"]},{"name":"yargs","version":"17.7.2","files":["/package.json","/packages/project-utils/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/ioc/package.json"]}],"peerDependencies":[{"name":"@editorjs/editorjs","version":"2.26.5","files":["/packages/app-page-builder-elements/package.json"]},{"name":"aos","version":"2.3.4","files":["/packages/app-page-builder-elements/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/app-audit-logs/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/react-router/package.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"react-columned","version":"1.1.3","files":["/packages/app-page-builder-elements/package.json"]},{"name":"react-dom","version":"18.2.0","files":["/packages/ui/package.json"]},{"name":"react-google-recaptcha","version":"1.1.0","files":["/packages/app-page-builder-elements/package.json"]},{"name":"react-images","version":"0.5.19","files":["/packages/app-page-builder-elements/package.json"]},{"name":"swiper","version":"9.3.2","files":["/packages/app-page-builder-elements/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/utils/package.json"]}],"resolutions":[{"name":"@babel/runtime","version":"7.26.0","files":["/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@grpc/grpc-js","version":"1.11.1","files":["/package.json"]},{"name":"@octokit/rest","version":"20.0.2","files":["/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/react-dom","version":"18.2.25","files":["/package.json"]},{"name":"@types/webpack","version":"5.28.0","files":["/package.json"]},{"name":"postcss","version":"8.4.35","files":["/package.json"]},{"name":"react","version":"18.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"react-dom","version":"18.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"semver","version":"7.6.3","files":["/package.json"]},{"name":"systeminformation","version":"5.23.18","files":["/package.json"]},{"name":"tar","version":"6.2.1","files":["/package.json"]}],"references":[{"name":"@types/hoist-non-react-statics","versions":[{"version":"3.3.5","files":[{"file":"/package.json","types":["dependencies"]}]}]},{"name":"@babel/cli","versions":[{"version":"7.26.4","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/code-frame","versions":[{"version":"7.26.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"@babel/compat-data","versions":[{"version":"7.26.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/core","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/helper-define-polyfill-provider","versions":[{"version":"0.6.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/helper-environment-visitor","versions":[{"version":"7.24.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/parser","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/plugin-proposal-class-properties","versions":[{"version":"7.18.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-proposal-object-rest-spread","versions":[{"version":"7.20.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-proposal-throw-expressions","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-syntax-object-rest-spread","versions":[{"version":"7.8.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-transform-modules-commonjs","versions":[{"version":"7.26.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/plugin-transform-runtime","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@babel/preset-env","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/preset-react","versions":[{"version":"7.26.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/preset-typescript","versions":[{"version":"7.26.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/register","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]}]}]},{"name":"@babel/runtime","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]},{"version":"7.26.0","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"@babel/template","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/traverse","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/types","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@commitlint/cli","versions":[{"version":"11.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@commitlint/config-conventional","versions":[{"version":"11.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@grpc/grpc-js","versions":[{"version":"1.11.1","files":[{"file":"/package.json","types":["devDependencies","resolutions"]}]}]},{"name":"@lexical/code","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/hashtag","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/headless","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]}]}]},{"name":"@lexical/history","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/html","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]}]}]},{"name":"@lexical/list","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/mark","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/overflow","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/react","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/rich-text","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/selection","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/text","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]}]}]},{"name":"@lexical/utils","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@octokit/rest","versions":[{"version":"20.0.2","files":[{"file":"/package.json","types":["devDependencies","resolutions"]}]}]},{"name":"@types/fs-extra","versions":[{"version":"11.0.4","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@types/jest","versions":[{"version":"29.5.14","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@types/node","versions":[{"version":"20.17.10","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@types/prettier","versions":[{"version":"2.7.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@types/react","versions":[{"version":"18.2.79","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"@types/react-dom","versions":[{"version":"18.2.25","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@typescript-eslint/eslint-plugin","versions":[{"version":"6.21.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@typescript-eslint/parser","versions":[{"version":"6.21.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"adio","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"axios","versions":[{"version":"1.7.9","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-jest","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-loader","versions":[{"version":"9.2.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-dynamic-import-node","versions":[{"version":"2.3.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-macros","versions":[{"version":"3.1.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-module-resolver","versions":[{"version":"5.0.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"chalk","versions":[{"version":"4.1.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/aws-layers/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"cross-env","versions":[{"version":"5.2.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/apps/admin/package.json","types":["devDependencies"]},{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"cross-spawn","versions":[{"version":"6.0.6","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"deepmerge","versions":[{"version":"4.3.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"elliptic","versions":[{"version":"6.6.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"env-ci","versions":[{"version":"2.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"eslint","versions":[{"version":"8.57.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-config-standard","versions":[{"version":"16.0.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-import-resolver-babel-module","versions":[{"version":"5.3.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-import","versions":[{"version":"2.27.5","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-jest","versions":[{"version":"25.7.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-lodash","versions":[{"version":"7.4.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-node","versions":[{"version":"11.1.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-promise","versions":[{"version":"5.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-react","versions":[{"version":"7.32.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-standard","versions":[{"version":"5.0.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"execa","versions":[{"version":"5.1.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"folder-hash","versions":[{"version":"4.0.4","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"fs-extra","versions":[{"version":"11.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"get-stream","versions":[{"version":"3.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"get-yarn-workspaces","versions":[{"version":"1.0.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"git-cz","versions":[{"version":"1.7.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"github-actions-wac","versions":[{"version":"1.4.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"glob","versions":[{"version":"7.2.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"graphql","versions":[{"version":"15.9.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/api-headless-cms-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-bulk-actions/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"husky","versions":[{"version":"4.2.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer","versions":[{"version":"8.2.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]}]}]},{"name":"inquirer-autocomplete-prompt","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer-checkbox-plus-prompt","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer-maxlength-input-prompt","versions":[{"version":"1.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"jest","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]}]}]},{"name":"jest-environment-jsdom","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"jest-extended","versions":[{"version":"4.0.2","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"lerna","versions":[{"version":"8.1.2","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"lexical","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]}]}]},{"name":"lint-staged","versions":[{"version":"15.3.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"listr","versions":[{"version":"0.14.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"load-json-file","versions":[{"version":"6.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"lodash","versions":[{"version":"4.17.21","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["dependencies"]},{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["dependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["dependencies"]},{"file":"/packages/i18n-react/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/packages/validation/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"longest","versions":[{"version":"2.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"micromatch","versions":[{"version":"4.0.8","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"minimatch","versions":[{"version":"5.1.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]}]}]},{"name":"nanoid","versions":[{"version":"3.3.8","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"node-fetch","versions":[{"version":"2.6.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]},{"file":"/packages/api-wcp/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/packages/wcp/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"pm2","versions":[{"version":"5.4.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"prettier","versions":[{"version":"2.8.8","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/react-properties/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]}]}]},{"name":"semver","versions":[{"version":"7.6.3","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]}]}]},{"name":"ts-expect","versions":[{"version":"1.3.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"ts-jest","versions":[{"version":"29.1.5","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"ts-node","versions":[{"version":"10.9.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["devDependencies"]}]}]},{"name":"type-fest","versions":[{"version":"4.14.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["devDependencies"]}]}]},{"name":"typescript","versions":[{"version":"5.3.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-es/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-os/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-dynamodb-to-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-bulk-actions/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-es-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["devDependencies"]},{"file":"/packages/app-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-utils/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["devDependencies"]},{"file":"/packages/app-website/package.json","types":["devDependencies"]},{"file":"/packages/app-websockets/package.json","types":["devDependencies"]},{"file":"/packages/aws-sdk/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/di-container/package.json","types":["devDependencies"]},{"file":"/packages/error/package.json","types":["devDependencies"]},{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/handler/package.json","types":["devDependencies"]},{"file":"/packages/handler-aws/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-db/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/i18n-react/package.json","types":["devDependencies"]},{"file":"/packages/ioc/package.json","types":["devDependencies"]},{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pubsub/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/react-composition/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]},{"file":"/packages/react-router/package.json","types":["devDependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["devDependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/packages/ui-composer/package.json","types":["devDependencies"]},{"file":"/packages/utils/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]},{"file":"/packages/wcp/package.json","types":["devDependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]},{"version":"4.9.5","files":[{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]}]}]},{"name":"typescript-transform-paths","versions":[{"version":"3.5.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"verdaccio","versions":[{"version":"6.0.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"write-json-file","versions":[{"version":"4.3.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"yargs","versions":[{"version":"17.7.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"systeminformation","versions":[{"version":"5.23.18","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"@emotion/react","versions":[{"version":"11.10.8","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@types/webpack","versions":[{"version":"5.28.0","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"react","versions":[{"version":"18.2.0","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["peerDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme/package.json","types":["peerDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/app-websockets/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/admin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/pbElement/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/website/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/form/package.json","types":["peerDependencies"]},{"file":"/packages/i18n/package.json","types":["peerDependencies"]},{"file":"/packages/i18n-react/package.json","types":["peerDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies","peerDependencies"]},{"file":"/packages/theme/package.json","types":["peerDependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]},{"file":"/packages/ui-composer/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"react-dom","versions":[{"version":"18.2.0","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/app-websockets/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]},{"file":"/packages/ui-composer/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"tar","versions":[{"version":"6.2.1","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]}]}]},{"name":"postcss","versions":[{"version":"8.4.35","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"rimraf","versions":[{"version":"6.0.1","files":[{"file":"/packages/api/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-es/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-os/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["devDependencies"]},{"file":"/packages/app-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["devDependencies"]},{"file":"/packages/app-website/package.json","types":["devDependencies"]},{"file":"/packages/app-websockets/package.json","types":["devDependencies"]},{"file":"/packages/aws-sdk/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/error/package.json","types":["devDependencies"]},{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/handler/package.json","types":["devDependencies"]},{"file":"/packages/handler-aws/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-db/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/i18n-react/package.json","types":["devDependencies"]},{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pubsub/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]},{"file":"/packages/react-router/package.json","types":["devDependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/packages/ui-composer/package.json","types":["devDependencies"]},{"file":"/packages/utils/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]},{"file":"/packages/wcp/package.json","types":["devDependencies"]}]}]},{"name":"apollo-graphql","versions":[{"version":"0.9.5","files":[{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]}]}]},{"name":"jest-dynalite","versions":[{"version":"3.6.1","files":[{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"dataloader","versions":[{"version":"2.2.2","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-tenancy/package.json","types":["dependencies"]}]}]},{"name":"md5","versions":[{"version":"2.3.0","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]}]}]},{"name":"zod","versions":[{"version":"3.23.8","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-tasks/package.json","types":["dependencies"]},{"file":"/packages/api-log/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-websockets/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/ioc/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["peerDependencies"]}]}]},{"name":"@types/jsonwebtoken","versions":[{"version":"9.0.2","files":[{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]}]}]},{"name":"@types/md5","versions":[{"version":"2.3.2","files":[{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]}]}]},{"name":"dayjs","versions":[{"version":"1.11.13","files":[{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"jsonwebtoken","versions":[{"version":"9.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]}]}]},{"name":"jwk-to-pem","versions":[{"version":"2.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]}]}]},{"name":"@types/jwk-to-pem","versions":[{"version":"2.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]}]}]},{"name":"@types/node-fetch","versions":[{"version":"2.6.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]}]}]},{"name":"p-retry","versions":[{"version":"4.6.2","files":[{"file":"/packages/api-dynamodb-to-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"@elastic/elasticsearch","versions":[{"version":"7.12.0","files":[{"file":"/packages/api-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"elastic-ts","versions":[{"version":"0.12.0","files":[{"file":"/packages/api-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]}]}]},{"name":"cache-control-parser","versions":[{"version":"2.0.6","files":[{"file":"/packages/api-file-manager/package.json","types":["dependencies"]}]}]},{"name":"object-hash","versions":[{"version":"3.0.0","files":[{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"ttypescript","versions":[{"version":"1.5.15","files":[{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]}]}]},{"name":"jsonpack","versions":[{"version":"1.1.5","files":[{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]}]}]},{"name":"form-data","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]}]}]},{"name":"mime","versions":[{"version":"3.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]}]}]},{"name":"p-map","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"p-reduce","versions":[{"version":"2.1.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"sanitize-filename","versions":[{"version":"1.6.3","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]}]}]},{"name":"sharp","versions":[{"version":"0.32.6","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]}]}]},{"name":"date-fns","versions":[{"version":"2.22.1","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"json2csv","versions":[{"version":"4.5.4","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"slugify","versions":[{"version":"1.6.6","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@types/json2csv","versions":[{"version":"4.5.1","files":[{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"csvtojson","versions":[{"version":"2.0.10","files":[{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]}]}]},{"name":"@graphql-tools/merge","versions":[{"version":"9.0.4","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/schema","versions":[{"version":"10.0.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"dot-prop","versions":[{"version":"6.0.1","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"graphql-tag","versions":[{"version":"2.12.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"jsdom","versions":[{"version":"25.0.1","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/lexical-converter/package.json","types":["devDependencies"]}]}]},{"name":"pluralize","versions":[{"version":"8.0.0","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]}]}]},{"name":"@types/babel__code-frame","versions":[{"version":"7.0.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]}]}]},{"name":"@types/jsonpack","versions":[{"version":"1.1.6","files":[{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]}]}]},{"name":"@faker-js/faker","versions":[{"version":"9.3.0","files":[{"file":"/packages/api-headless-cms-es-tasks/package.json","types":["devDependencies"]}]}]},{"name":"@smithy/node-http-handler","versions":[{"version":"2.1.6","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"archiver","versions":[{"version":"7.0.1","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"bytes","versions":[{"version":"3.1.2","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"uniqid","versions":[{"version":"5.4.0","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/plugins/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"unzipper","versions":[{"version":"0.12.3","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/adm-zip","versions":[{"version":"0.5.5","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@types/unzipper","versions":[{"version":"0.10.10","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"adm-zip","versions":[{"version":"0.5.14","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"aws-sdk-client-mock","versions":[{"version":"4.1.0","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"accept-language-parser","versions":[{"version":"1.5.0","files":[{"file":"/packages/api-i18n/package.json","types":["dependencies"]}]}]},{"name":"i18n-locales","versions":[{"version":"0.0.5","files":[{"file":"/packages/api-i18n/package.json","types":["dependencies"]}]}]},{"name":"@types/accept-language-parser","versions":[{"version":"1.5.3","files":[{"file":"/packages/api-i18n/package.json","types":["devDependencies"]}]}]},{"name":"crypto-js","versions":[{"version":"4.2.0","files":[{"file":"/packages/api-mailer/package.json","types":["dependencies"]}]}]},{"name":"nodemailer","versions":[{"version":"6.9.16","files":[{"file":"/packages/api-mailer/package.json","types":["dependencies"]}]}]},{"name":"@types/crypto-js","versions":[{"version":"4.2.2","files":[{"file":"/packages/api-mailer/package.json","types":["devDependencies"]}]}]},{"name":"@types/nodemailer","versions":[{"version":"6.4.17","files":[{"file":"/packages/api-mailer/package.json","types":["devDependencies"]}]}]},{"name":"extract-zip","versions":[{"version":"1.6.7","files":[{"file":"/packages/api-page-builder/package.json","types":["dependencies"]}]}]},{"name":"stream","versions":[{"version":"0.0.3","files":[{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/extract-zip","versions":[{"version":"1.6.2","files":[{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/rimraf","versions":[{"version":"3.0.2","files":[{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"dot-prop-immutable","versions":[{"version":"2.1.1","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"yauzl","versions":[{"version":"2.10.0","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/archiver","versions":[{"version":"5.3.1","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@types/yauzl","versions":[{"version":"2.9.2","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@sparticuz/chromium","versions":[{"version":"131.0.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml","versions":[{"version":"0.15.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml-noopener","versions":[{"version":"1.0.5","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml-plugin-link-preload","versions":[{"version":"1.0.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"puppeteer-core","versions":[{"version":"23.11.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"srcset","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/aws-helpers/package.json","types":["dependencies"]}]}]},{"name":"@types/object-hash","versions":[{"version":"2.2.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]}]}]},{"name":"deep-equal","versions":[{"version":"2.2.3","files":[{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"@apollo/react-hooks","versions":[{"version":"3.1.5","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@emotion/styled","versions":[{"version":"11.10.6","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"apollo-cache","versions":[{"version":"1.3.5","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]}]}]},{"name":"apollo-cache-inmemory","versions":[{"version":"1.6.6","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-client","versions":[{"version":"2.6.10","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"apollo-link","versions":[{"version":"1.2.14","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-context","versions":[{"version":"1.0.20","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-error","versions":[{"version":"1.1.13","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-http-common","versions":[{"version":"0.2.16","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-utilities","versions":[{"version":"1.3.4","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]}]}]},{"name":"boolean","versions":[{"version":"3.2.0","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"invariant","versions":[{"version":"2.2.4","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"ts-invariant","versions":[{"version":"0.10.3","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"warning","versions":[{"version":"4.0.2","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"@types/lodash","versions":[{"version":"4.17.13","files":[{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]}]}]},{"name":"@types/warning","versions":[{"version":"3.0.0","files":[{"file":"/packages/app/package.json","types":["devDependencies"]}]}]},{"name":"@material-design-icons/svg","versions":[{"version":"0.14.13","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@material-symbols/svg-400","versions":[{"version":"0.4.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@minoru/react-dnd-treeview","versions":[{"version":"3.2.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]}]}]},{"name":"mobx","versions":[{"version":"6.9.0","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-utils/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"mobx-react-lite","versions":[{"version":"3.4.3","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"pako","versions":[{"version":"2.1.0","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-dnd","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-hotkeyz","versions":[{"version":"1.0.4","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"store","versions":[{"version":"2.0.12","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]}]}]},{"name":"@apollo/react-components","versions":[{"version":"3.1.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/editorjs","versions":[{"version":"2.26.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@iconify/json","versions":[{"version":"2.2.142","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@monaco-editor/react","versions":[{"version":"4.7.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@svgr/webpack","versions":[{"version":"6.1.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@types/mime","versions":[{"version":"2.0.3","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"classnames","versions":[{"version":"2.5.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"downshift","versions":[{"version":"3.1.2","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]},{"version":"2.1.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"emotion","versions":[{"version":"10.0.27","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"graphlib","versions":[{"version":"2.1.8","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"is-hotkey","versions":[{"version":"0.2.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"prop-types","versions":[{"version":"15.8.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"react-draggable","versions":[{"version":"4.4.6","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-resizable","versions":[{"version":"3.0.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-resizable-panels","versions":[{"version":"2.0.19","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-transition-group","versions":[{"version":"4.4.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-virtualized","versions":[{"version":"9.22.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"reset-css","versions":[{"version":"5.0.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"unicode-emoji-json","versions":[{"version":"0.4.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@emotion/babel-plugin","versions":[{"version":"11.11.0","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/bytes","versions":[{"version":"3.1.4","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/graphlib","versions":[{"version":"2.1.12","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/is-hotkey","versions":[{"version":"0.1.10","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-resizable","versions":[{"version":"3.0.8","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/store","versions":[{"version":"2.0.2","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"monaco-editor","versions":[{"version":"0.52.2","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@auth0/auth0-react","versions":[{"version":"2.2.4","files":[{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]}]}]},{"name":"react-helmet","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@aws-amplify/auth","versions":[{"version":"5.6.15","files":[{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-auth-js","versions":[{"version":"5.3.1","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-react","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-signin-widget","versions":[{"version":"5.9.4","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/base","versions":[{"version":"14.3.5","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/provider","versions":[{"version":"14.3.5","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]}]}]},{"name":"@types/react-helmet","versions":[{"version":"6.1.11","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["devDependencies"]},{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-named-asset-import","versions":[{"version":"1.0.0-next.3e165448","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]}]}]},{"name":"@emotion/is-prop-valid","versions":[{"version":"1.1.1","files":[{"file":"/packages/app-apw/package.json","types":["dependencies"]}]}]},{"name":"react-spinner-material","versions":[{"version":"1.1.4","files":[{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/fontawesome-svg-core","versions":[{"version":"1.3.0","files":[{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/react-fontawesome","versions":[{"version":"0.1.17","files":[{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@apollo/react-common","versions":[{"version":"3.1.4","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"dataurl-to-blob","versions":[{"version":"0.0.1","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"react-butterfiles","versions":[{"version":"1.3.3","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-custom-scrollbars","versions":[{"version":"4.2.1","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-lazy-load","versions":[{"version":"3.1.14","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/core","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/sortable","versions":[{"version":"8.0.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/utilities","versions":[{"version":"3.2.2","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"dnd-core","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"history","versions":[{"version":"5.3.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]}]}]},{"name":"react-dnd-html5-backend","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-google-recaptcha","versions":[{"version":"1.1.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"@types/gtag.js","versions":[{"version":"0.0.20","files":[{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-google-recaptcha","versions":[{"version":"1.1.2","files":[{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"load-script","versions":[{"version":"1.0.0","files":[{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/fontawesome-common-types","versions":[{"version":"0.3.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-brands-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-regular-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-solid-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"raw.macro","versions":[{"version":"0.4.2","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"use-deep-compare-effect","versions":[{"version":"1.8.1","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"@types/medium-editor","versions":[{"version":"5.0.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"aos","versions":[{"version":"2.3.4","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"dnd-kit-sortable-tree","versions":[{"version":"0.1.73","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"medium-editor","versions":[{"version":"5.23.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"platform","versions":[{"version":"1.3.5","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-color","versions":[{"version":"2.19.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-images","versions":[{"version":"0.5.19","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"react-in-viewport","versions":[{"version":"1.0.0-alpha.30","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-sortable","versions":[{"version":"2.0.0","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"recoil","versions":[{"version":"0.7.7","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"swiper","versions":[{"version":"9.3.2","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"@types/aos","versions":[{"version":"3.0.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/pako","versions":[{"version":"2.0.3","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/platform","versions":[{"version":"1.3.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-images","versions":[{"version":"0.5.3","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-virtualized","versions":[{"version":"9.21.16","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/resize-observer-browser","versions":[{"version":"0.1.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"facepaint","versions":[{"version":"1.2.1","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]}]}]},{"name":"@types/facepaint","versions":[{"version":"1.2.2","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]}]}]},{"name":"react-columned","versions":[{"version":"1.1.3","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"crypto-hash","versions":[{"version":"3.0.0","files":[{"file":"/packages/app-record-locking/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-batch-http","versions":[{"version":"1.2.14","files":[{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@emotion/cache","versions":[{"version":"11.10.5","files":[{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"lz-string","versions":[{"version":"1.5.0","files":[{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@types/aws-lambda","versions":[{"version":"8.10.145","files":[{"file":"/packages/aws-helpers/package.json","types":["dependencies"]},{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"cheerio","versions":[{"version":"1.0.0-rc.10","files":[{"file":"/packages/aws-helpers/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-apigatewaymanagementapi","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudfront","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudwatch-events","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudwatch-logs","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cognito-identity-provider","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-dynamodb-streams","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-eventbridge","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-iam","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-iot","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-lambda","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-s3","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sfn","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sqs","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sts","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/credential-providers","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/lib-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/lib-storage","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/s3-presigned-post","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/s3-request-presigner","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/util-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"camelcase","versions":[{"version":"6.3.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ci-info","versions":[{"version":"4.1.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"dotenv","versions":[{"version":"8.2.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["devDependencies"]}]}]},{"name":"fast-glob","versions":[{"version":"3.2.7","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"find-up","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"graphql-request","versions":[{"version":"3.7.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]},{"file":"/apps/api/graphql/package.json","types":["devDependencies"]}]}]},{"name":"ncp","versions":[{"version":"2.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"open","versions":[{"version":"8.4.2","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]}]}]},{"name":"pirates","versions":[{"version":"4.0.6","files":[{"file":"/packages/cli/package.json","types":["dependencies"]}]}]},{"name":"ts-morph","versions":[{"version":"11.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]}]}]},{"name":"exit-hook","versions":[{"version":"4.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"humanize-duration","versions":[{"version":"3.32.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"log-update","versions":[{"version":"4.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"mqtt","versions":[{"version":"5.10.3","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"node-notifier","versions":[{"version":"10.0.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"ora","versions":[{"version":"4.1.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"replace-in-path","versions":[{"version":"1.1.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]}]}]},{"name":"serialize-error","versions":[{"version":"8.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"@types/humanize-duration","versions":[{"version":"3.27.4","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"@types/listr","versions":[{"version":"0.14.9","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"@types/node-notifier","versions":[{"version":"8.0.5","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"case","versions":[{"version":"1.6.3","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]}]}]},{"name":"validate-npm-package-name","versions":[{"version":"3.0.0","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"@types/inquirer","versions":[{"version":"8.2.10","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"terminal-link","versions":[{"version":"2.1.1","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]}]}]},{"name":"@types/ncp","versions":[{"version":"2.0.4","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"@types/pluralize","versions":[{"version":"0.0.29","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"js-base64","versions":[{"version":"3.7.7","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]}]}]},{"name":"octokit","versions":[{"version":"3.1.2","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]}]}]},{"name":"@types/validate-npm-package-name","versions":[{"version":"3.0.3","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"indent-string","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]}]}]},{"name":"archy","versions":[{"version":"1.0.0","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"color","versions":[{"version":"4.2.3","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"multimatch","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"js-yaml","versions":[{"version":"3.14.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"os","versions":[{"version":"0.1.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"uuid","versions":[{"version":"9.0.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]}]}]},{"name":"yesno","versions":[{"version":"0.4.0","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/delimiter","versions":[{"version":"1.4.2","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/list","versions":[{"version":"1.10.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/quote","versions":[{"version":"2.7.2","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/underline","versions":[{"version":"1.2.1","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"core-js","versions":[{"version":"3.39.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"cross-fetch","versions":[{"version":"3.1.5","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"regenerator-runtime","versions":[{"version":"0.13.11","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"theme","versions":[{"version":"1.0.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"tslib","versions":[{"version":"2.8.1","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"react-hamburger-menu","versions":[{"version":"1.2.1","files":[{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@types/react-hamburger-menu","versions":[{"version":"0.0.4","files":[{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["devDependencies"]},{"file":"/extensions/theme/package.json","types":["devDependencies"]}]}]},{"name":"merge","versions":[{"version":"2.1.1","files":[{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"center-align","versions":[{"version":"1.0.1","files":[{"file":"/packages/data-migration/package.json","types":["dependencies"]}]}]},{"name":"pino-pretty","versions":[{"version":"9.4.0","files":[{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"@types/center-align","versions":[{"version":"1.0.0","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]}]}]},{"name":"@types/semver","versions":[{"version":"7.3.4","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]}]}]},{"name":"jest-mock-console","versions":[{"version":"2.0.0","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]}]}]},{"name":"dynamodb-toolbox","versions":[{"version":"0.9.2","files":[{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"fuse.js","versions":[{"version":"7.0.0","files":[{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"@types/is-number","versions":[{"version":"7.0.5","files":[{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]}]}]},{"name":"reflect-metadata","versions":[{"version":"0.2.2","files":[{"file":"/packages/di-container/package.json","types":["dependencies"]},{"file":"/packages/ioc/package.json","types":["dependencies"]}]}]},{"name":"@types/uniqid","versions":[{"version":"5.3.2","files":[{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/react","versions":[{"version":"15.0.7","files":[{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/react-composition/package.json","types":["devDependencies"]},{"file":"/packages/react-properties/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/user-event","versions":[{"version":"14.5.2","files":[{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"@types/invariant","versions":[{"version":"2.2.35","files":[{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"@fastify/compress","versions":[{"version":"7.0.3","files":[{"file":"/packages/handler/package.json","types":["dependencies"]}]}]},{"name":"@fastify/cookie","versions":[{"version":"9.4.0","files":[{"file":"/packages/handler/package.json","types":["dependencies"]}]}]},{"name":"fastify","versions":[{"version":"4.29.0","files":[{"file":"/packages/handler/package.json","types":["dependencies"]},{"file":"/packages/handler-aws/package.json","types":["dependencies"]}]}]},{"name":"@fastify/aws-lambda","versions":[{"version":"4.1.0","files":[{"file":"/packages/handler-aws/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/resolvers-composition","versions":[{"version":"7.0.1","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/utils","versions":[{"version":"10.3.1","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"graphql-scalars","versions":[{"version":"1.12.0","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"accounting","versions":[{"version":"0.4.1","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"fecha","versions":[{"version":"2.3.3","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"short-hash","versions":[{"version":"1.0.0","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"@types/accounting","versions":[{"version":"0.4.2","files":[{"file":"/packages/i18n/package.json","types":["devDependencies"]}]}]},{"name":"inversify","versions":[{"version":"6.1.6","files":[{"file":"/packages/ioc/package.json","types":["dependencies"]}]}]},{"name":"@types/jsdom","versions":[{"version":"21.1.6","files":[{"file":"/packages/lexical-converter/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-color","versions":[{"version":"2.17.11","files":[{"file":"/packages/lexical-editor-actions/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/prismjs","versions":[{"version":"1.26.4","files":[{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"react-style-object-to-css","versions":[{"version":"1.1.2","files":[{"file":"/packages/lexical-theme/package.json","types":["dependencies"]}]}]},{"name":"pino","versions":[{"version":"8.21.0","files":[{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"@pmmmwh/react-refresh-webpack-plugin","versions":[{"version":"0.5.15","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@rspack/core","versions":[{"version":"1.2.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@types/webpack-env","versions":[{"version":"1.18.5","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"assert-browserify","versions":[{"version":"2.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"buffer","versions":[{"version":"6.0.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"bufferutil","versions":[{"version":"4.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"case-sensitive-paths-webpack-plugin","versions":[{"version":"2.4.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"crypto-browserify","versions":[{"version":"3.12.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"css-loader","versions":[{"version":"6.10.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"css-minimizer-webpack-plugin","versions":[{"version":"7.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-config-react-app","versions":[{"version":"6.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-webpack-plugin","versions":[{"version":"4.2.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"file-loader","versions":[{"version":"6.2.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"fork-ts-checker-webpack-plugin","versions":[{"version":"9.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"html-webpack-plugin","versions":[{"version":"5.6.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"mini-css-extract-plugin","versions":[{"version":"2.4.5","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"null-loader","versions":[{"version":"4.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"os-browserify","versions":[{"version":"0.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"path-browserify","versions":[{"version":"1.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-flexbugs-fixes","versions":[{"version":"5.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-loader","versions":[{"version":"6.2.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-normalize","versions":[{"version":"10.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-preset-env","versions":[{"version":"9.4.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"process","versions":[{"version":"0.11.10","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"raw-loader","versions":[{"version":"4.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"react-dev-utils","versions":[{"version":"12.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"react-refresh","versions":[{"version":"0.11.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"read-json-sync","versions":[{"version":"2.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"resolve","versions":[{"version":"1.22.8","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"resolve-url-loader","versions":[{"version":"5.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"sass","versions":[{"version":"1.44.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"sass-loader","versions":[{"version":"12.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"scheduler","versions":[{"version":"0.19.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"source-map-loader","versions":[{"version":"1.1.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"source-map-support","versions":[{"version":"0.5.21","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"style-loader","versions":[{"version":"3.3.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"terser-webpack-plugin","versions":[{"version":"5.3.10","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ts-checker-rspack-plugin","versions":[{"version":"1.0.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ts-patch","versions":[{"version":"3.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"url","versions":[{"version":"0.11.4","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"url-loader","versions":[{"version":"4.1.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"utf-8-validate","versions":[{"version":"5.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"vm-browserify","versions":[{"version":"1.1.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpack","versions":[{"version":"5.97.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"webpack-dev-server","versions":[{"version":"4.15.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpack-manifest-plugin","versions":[{"version":"5.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpackbar","versions":[{"version":"7.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"listr2","versions":[{"version":"5.0.8","files":[{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/pulumi","versions":[{"version":"3.147.0","files":[{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/aws","versions":[{"version":"6.67.0","files":[{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/random","versions":[{"version":"4.17.0","files":[{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]}]}]},{"name":"decompress","versions":[{"version":"4.2.1","files":[{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]}]}]},{"name":"identity-obj-proxy","versions":[{"version":"3.0.0","files":[{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]}]}]},{"name":"sanitize-html","versions":[{"version":"2.12.1","files":[{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]}]}]},{"name":"@types/sanitize-html","versions":[{"version":"2.9.0","files":[{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]}]}]},{"name":"react-router-dom","versions":[{"version":"6.3.0","files":[{"file":"/packages/react-router/package.json","types":["dependencies"]}]}]},{"name":"cli-table3","versions":[{"version":"0.6.5","files":[{"file":"/packages/system-requirements/package.json","types":["dependencies"]}]}]},{"name":"object-merge-advanced","versions":[{"version":"12.1.0","files":[{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"object-sizeof","versions":[{"version":"2.6.4","files":[{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"jsesc","versions":[{"version":"3.0.2","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"strip-ansi","versions":[{"version":"6.0.1","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"wts-client","versions":[{"version":"1.0.1","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/button","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/checkbox","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/chip","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/data-table","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/dialog","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/drawer","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/elevation","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/fab","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/grid","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/icon-button","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/list","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/menu","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/radio","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/ripple","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/select","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/slider","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/snackbar","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/switch","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/tabs","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/textfield","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/top-app-bar","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/touch-target","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/typography","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@tanstack/react-table","versions":[{"version":"8.5.22","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"brace","versions":[{"version":"0.11.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"cropperjs","versions":[{"version":"1.4.3","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"keycode","versions":[{"version":"2.2.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"material-components-web","versions":[{"version":"14.0.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"nprogress","versions":[{"version":"0.2.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"nuka-carousel","versions":[{"version":"4.7.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"rc-tooltip","versions":[{"version":"5.3.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-ace","versions":[{"version":"6.1.4","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-loading-skeleton","versions":[{"version":"3.1.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"timeago-react","versions":[{"version":"3.0.6","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@types/nprogress","versions":[{"version":"0.2.0","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-custom-scrollbars","versions":[{"version":"4.0.10","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-transition-group","versions":[{"version":"4.4.4","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"p-wait-for","versions":[{"version":"4.1.0","files":[{"file":"/packages/ui-composer/package.json","types":["dependencies"]}]}]},{"name":"mdbid","versions":[{"version":"1.0.0","files":[{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"nanoid-dictionary","versions":[{"version":"4.3.0","files":[{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"isnumeric","versions":[{"version":"0.3.3","files":[{"file":"/packages/validation/package.json","types":["dependencies"]}]}]},{"name":"@4tw/cypress-drag-drop","versions":[{"version":"1.4.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/cypress","versions":[{"version":"10.0.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"amazon-cognito-identity-js","versions":[{"version":"4.5.3","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress","versions":[{"version":"13.16.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-image-snapshot","versions":[{"version":"4.0.1","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-mailosaur","versions":[{"version":"2.7.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-wait-until","versions":[{"version":"1.7.1","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"del","versions":[{"version":"6.0.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"source-map-explorer","versions":[{"version":"2.5.3","files":[{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"@types/folder-hash","versions":[{"version":"4.0.4","files":[{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]}]}]},{"name":"@types/yargs","versions":[{"version":"17.0.8","files":[{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]}]}]}]} +{"dependencies":[{"name":"@apollo/react-common","version":"3.1.4","files":["/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@apollo/react-components","version":"3.1.5","files":["/packages/app-admin/package.json","/packages/app-file-manager/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json"]},{"name":"@apollo/react-hooks","version":"3.1.5","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"@auth0/auth0-react","version":"2.2.4","files":["/packages/app-admin-auth0/package.json"]},{"name":"@aws-amplify/auth","version":"5.6.15","files":["/packages/app-admin-cognito/package.json","/packages/app-cognito-authenticator/package.json"]},{"name":"@aws-sdk/client-apigatewaymanagementapi","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudfront","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudwatch-events","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cloudwatch-logs","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-cognito-identity-provider","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-dynamodb-streams","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-eventbridge","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-iam","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-iot","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-lambda","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-s3","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sfn","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sqs","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/client-sts","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/credential-providers","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/lib-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/lib-storage","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/s3-presigned-post","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/s3-request-presigner","version":"3.735.0","files":["/packages/aws-sdk/package.json"]},{"name":"@aws-sdk/util-dynamodb","version":"3.734.0","files":["/packages/aws-sdk/package.json"]},{"name":"@babel/cli","version":"7.26.4","files":["/packages/project-utils/package.json"]},{"name":"@babel/code-frame","version":"7.26.2","files":["/packages/api-headless-cms/package.json"]},{"name":"@babel/core","version":"7.26.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-class-properties","version":"7.18.6","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-object-rest-spread","version":"7.20.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-proposal-throw-expressions","version":"7.25.9","files":["/packages/project-utils/package.json"]},{"name":"@babel/plugin-syntax-object-rest-spread","version":"7.8.3","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-env","version":"7.26.7","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-react","version":"7.26.3","files":["/packages/project-utils/package.json"]},{"name":"@babel/preset-typescript","version":"7.26.0","files":["/packages/project-utils/package.json"]},{"name":"@babel/runtime","version":"7.26.7","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/project-utils/package.json"]},{"name":"@dnd-kit/core","version":"6.1.0","files":["/packages/app-form-builder/package.json"]},{"name":"@dnd-kit/sortable","version":"8.0.0","files":["/packages/app-form-builder/package.json"]},{"name":"@dnd-kit/utilities","version":"3.2.2","files":["/packages/app-form-builder/package.json"]},{"name":"@editorjs/delimiter","version":"1.4.2","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/editorjs","version":"2.26.5","files":["/packages/app-admin/package.json","/packages/app-form-builder/package.json","/packages/react-rich-text-renderer/package.json","/packages/ui/package.json"]},{"name":"@editorjs/list","version":"1.10.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/quote","version":"2.7.2","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@editorjs/underline","version":"1.2.1","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"@elastic/elasticsearch","version":"7.12.0","files":["/packages/api-elasticsearch/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/data-migration/package.json","/packages/migrations/package.json"]},{"name":"@emotion/cache","version":"11.10.5","files":["/packages/app-website/package.json"]},{"name":"@emotion/is-prop-valid","version":"1.1.1","files":["/packages/app-apw/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor/package.json","/packages/lexical-theme/package.json","/packages/theme/package.json","/packages/ui/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"@emotion/styled","version":"11.10.6","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/ui/package.json","/extensions/theme/package.json"]},{"name":"@fastify/aws-lambda","version":"4.1.0","files":["/packages/handler-aws/package.json"]},{"name":"@fastify/compress","version":"7.0.3","files":["/packages/handler/package.json"]},{"name":"@fastify/cookie","version":"9.4.0","files":["/packages/handler/package.json"]},{"name":"@fortawesome/fontawesome-common-types","version":"0.3.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/fontawesome-svg-core","version":"1.3.0","files":["/packages/app-dynamic-pages/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-brands-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-regular-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/free-solid-svg-icons","version":"6.0.0","files":["/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@fortawesome/react-fontawesome","version":"0.1.17","files":["/packages/app-dynamic-pages/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"@graphql-tools/merge","version":"9.0.4","files":["/packages/api-headless-cms/package.json","/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/resolvers-composition","version":"7.0.1","files":["/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/schema","version":"10.0.6","files":["/packages/api-headless-cms/package.json","/packages/handler-graphql/package.json"]},{"name":"@graphql-tools/utils","version":"10.3.1","files":["/packages/handler-graphql/package.json"]},{"name":"@iconify/json","version":"2.2.142","files":["/packages/app-admin/package.json"]},{"name":"@lexical/code","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/hashtag","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/headless","version":"0.23.1","files":["/packages/lexical-converter/package.json"]},{"name":"@lexical/history","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/html","version":"0.23.1","files":["/packages/lexical-converter/package.json"]},{"name":"@lexical/list","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/mark","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/overflow","version":"0.23.1","files":["/packages/lexical-nodes/package.json"]},{"name":"@lexical/react","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/rich-text","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/selection","version":"0.23.1","files":["/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-nodes/package.json"]},{"name":"@lexical/text","version":"0.23.1","files":["/packages/lexical-editor/package.json"]},{"name":"@lexical/utils","version":"0.23.1","files":["/packages/app-headless-cms/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-pb-element/package.json","/packages/lexical-nodes/package.json"]},{"name":"@material-design-icons/svg","version":"0.14.13","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-trash-bin/package.json","/packages/lexical-editor-pb-element/package.json","/packages/ui/package.json"]},{"name":"@material-symbols/svg-400","version":"0.4.1","files":["/packages/app-aco/package.json","/packages/app-form-builder/package.json"]},{"name":"@minoru/react-dnd-treeview","version":"3.2.1","files":["/packages/app-aco/package.json"]},{"name":"@monaco-editor/react","version":"4.7.0","files":["/packages/app-admin/package.json"]},{"name":"@okta/okta-auth-js","version":"5.3.1","files":["/packages/app-admin-okta/package.json"]},{"name":"@okta/okta-react","version":"6.1.0","files":["/packages/app-admin-okta/package.json"]},{"name":"@okta/okta-signin-widget","version":"5.9.4","files":["/packages/app-admin-okta/package.json"]},{"name":"@pmmmwh/react-refresh-webpack-plugin","version":"0.5.15","files":["/packages/project-utils/package.json"]},{"name":"@pulumi/aws","version":"6.67.0","files":["/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"@pulumi/pulumi","version":"3.147.0","files":["/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"@pulumi/random","version":"4.17.0","files":["/packages/pulumi-aws/package.json"]},{"name":"@rmwc/base","version":"14.3.5","files":["/packages/app-admin-rmwc/package.json"]},{"name":"@rmwc/button","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/checkbox","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/chip","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/data-table","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/dialog","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/drawer","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/elevation","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/fab","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/grid","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/icon-button","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/list","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/menu","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/provider","version":"14.3.5","files":["/packages/app-admin-rmwc/package.json"]},{"name":"@rmwc/radio","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/ripple","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/select","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/slider","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/snackbar","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/switch","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/tabs","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/textfield","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/top-app-bar","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/touch-target","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rmwc/typography","version":"14.3.5","files":["/packages/ui/package.json"]},{"name":"@rspack/core","version":"1.2.2","files":["/packages/project-utils/package.json"]},{"name":"@smithy/node-http-handler","version":"2.1.6","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"@sparticuz/chromium","version":"131.0.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"@svgr/webpack","version":"6.1.1","files":["/packages/app-admin/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/project-utils/package.json","/packages/ui/package.json"]},{"name":"@tanstack/react-table","version":"8.5.22","files":["/packages/ui/package.json"]},{"name":"@types/aws-lambda","version":"8.10.145","files":["/packages/aws-helpers/package.json","/packages/aws-sdk/package.json"]},{"name":"@types/medium-editor","version":"5.0.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/mime","version":"2.0.3","files":["/packages/app-admin/package.json"]},{"name":"@types/prismjs","version":"1.26.4","files":["/packages/lexical-nodes/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/react-rich-text-renderer/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"@types/webpack-env","version":"1.18.5","files":["/packages/project-utils/package.json"]},{"name":"accept-language-parser","version":"1.5.0","files":["/packages/api-i18n/package.json"]},{"name":"accounting","version":"0.4.1","files":["/packages/i18n/package.json"]},{"name":"aos","version":"2.3.4","files":["/packages/app-page-builder/package.json"]},{"name":"apollo-cache","version":"1.3.5","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json"]},{"name":"apollo-cache-inmemory","version":"1.6.6","files":["/packages/app/package.json"]},{"name":"apollo-client","version":"2.6.10","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/react-router/package.json","/apps/website/package.json"]},{"name":"apollo-link","version":"1.2.14","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/website/package.json"]},{"name":"apollo-link-batch-http","version":"1.2.14","files":["/packages/app-serverless-cms/package.json","/packages/app-website/package.json"]},{"name":"apollo-link-context","version":"1.0.20","files":["/packages/app/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-graphql-playground/package.json","/packages/app-i18n/package.json"]},{"name":"apollo-link-error","version":"1.1.13","files":["/packages/app/package.json"]},{"name":"apollo-link-http-common","version":"0.2.16","files":["/packages/app/package.json"]},{"name":"apollo-utilities","version":"1.3.4","files":["/packages/app/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json"]},{"name":"archiver","version":"7.0.1","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"archy","version":"1.0.0","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"assert-browserify","version":"2.0.0","files":["/packages/project-utils/package.json"]},{"name":"babel-loader","version":"9.2.1","files":["/packages/project-utils/package.json"]},{"name":"boolean","version":"3.2.0","files":["/packages/app/package.json","/packages/cli/package.json","/packages/handler-graphql/package.json"]},{"name":"brace","version":"0.11.1","files":["/packages/ui/package.json"]},{"name":"buffer","version":"6.0.3","files":["/packages/project-utils/package.json"]},{"name":"bufferutil","version":"4.0.1","files":["/packages/project-utils/package.json"]},{"name":"bytes","version":"3.1.2","files":["/packages/api-headless-cms-import-export/package.json","/packages/app/package.json","/packages/app-file-manager/package.json"]},{"name":"cache-control-parser","version":"2.0.6","files":["/packages/api-file-manager/package.json"]},{"name":"camelcase","version":"6.3.0","files":["/packages/cli/package.json","/packages/project-utils/package.json"]},{"name":"case","version":"1.6.3","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"case-sensitive-paths-webpack-plugin","version":"2.4.0","files":["/packages/project-utils/package.json"]},{"name":"center-align","version":"1.0.1","files":["/packages/data-migration/package.json"]},{"name":"chalk","version":"4.1.2","files":["/packages/aws-layers/package.json","/packages/cli/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/data-migration/package.json","/packages/project-utils/package.json","/packages/serverless-cms-aws/package.json","/packages/system-requirements/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"cheerio","version":"1.0.0-rc.10","files":["/packages/aws-helpers/package.json"]},{"name":"ci-info","version":"4.1.0","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/packages/telemetry/package.json"]},{"name":"classnames","version":"2.5.1","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json","/packages/react-rich-text-renderer/package.json","/packages/ui/package.json"]},{"name":"cli-table3","version":"0.6.5","files":["/packages/system-requirements/package.json"]},{"name":"color","version":"4.2.3","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"core-js","version":"3.39.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"cropperjs","version":"1.4.3","files":["/packages/ui/package.json"]},{"name":"cross-fetch","version":"3.1.5","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"crypto-browserify","version":"3.12.0","files":["/packages/project-utils/package.json"]},{"name":"crypto-hash","version":"3.0.0","files":["/packages/app-record-locking/package.json"]},{"name":"crypto-js","version":"4.2.0","files":["/packages/api-mailer/package.json"]},{"name":"css-loader","version":"6.10.0","files":["/packages/project-utils/package.json"]},{"name":"css-minimizer-webpack-plugin","version":"7.0.0","files":["/packages/project-utils/package.json"]},{"name":"dataloader","version":"2.2.2","files":["/packages/api-admin-users/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-tenancy/package.json"]},{"name":"dataurl-to-blob","version":"0.0.1","files":["/packages/app-file-manager/package.json"]},{"name":"date-fns","version":"2.22.1","files":["/packages/api-form-builder/package.json","/packages/app-audit-logs/package.json","/packages/db-dynamodb/package.json"]},{"name":"dayjs","version":"1.11.13","files":["/packages/api-apw/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json"]},{"name":"decompress","version":"4.2.1","files":["/packages/pulumi-sdk/package.json"]},{"name":"deep-equal","version":"2.2.3","files":["/packages/api-security/package.json","/packages/api-security-cognito/package.json","/packages/tasks/package.json"]},{"name":"dnd-core","version":"16.0.1","files":["/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-page-builder/package.json"]},{"name":"dnd-kit-sortable-tree","version":"0.1.73","files":["/packages/app-page-builder/package.json"]},{"name":"dot-prop","version":"6.0.1","files":["/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/db-dynamodb/package.json"]},{"name":"dot-prop-immutable","version":"2.1.1","files":["/packages/api-page-builder-import-export/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/ui/package.json"]},{"name":"dotenv","version":"8.2.0","files":["/packages/cli/package.json"]},{"name":"downshift","version":"3.1.2","files":["/packages/app-admin/package.json"]},{"name":"downshift","version":"2.1.5","files":["/packages/ui/package.json"]},{"name":"dynamodb-toolbox","version":"0.9.2","files":["/packages/db-dynamodb/package.json"]},{"name":"elastic-ts","version":"0.12.0","files":["/packages/api-elasticsearch/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-page-builder-so-ddb-es/package.json"]},{"name":"emotion","version":"10.0.27","files":["/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n-content/package.json","/packages/app-page-builder/package.json","/packages/app-security-access-management/package.json","/packages/app-tenant-manager/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-theme/package.json","/packages/ui/package.json"]},{"name":"eslint","version":"8.57.1","files":["/packages/project-utils/package.json"]},{"name":"eslint-config-react-app","version":"6.0.0","files":["/packages/project-utils/package.json"]},{"name":"eslint-webpack-plugin","version":"4.2.0","files":["/packages/project-utils/package.json"]},{"name":"execa","version":"5.1.1","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/cli-plugin-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/pulumi-sdk/package.json","/packages/system-requirements/package.json","/scripts/buildPackages/package.json"]},{"name":"exit-hook","version":"4.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"extract-zip","version":"1.6.7","files":["/packages/api-page-builder/package.json"]},{"name":"facepaint","version":"1.2.1","files":["/packages/app-page-builder-elements/package.json"]},{"name":"fast-glob","version":"3.2.7","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cwp-template-aws/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"fastify","version":"4.29.0","files":["/packages/handler/package.json","/packages/handler-aws/package.json"]},{"name":"fecha","version":"2.3.3","files":["/packages/i18n/package.json"]},{"name":"file-loader","version":"6.2.0","files":["/packages/project-utils/package.json"]},{"name":"find-up","version":"5.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/create-webiny-project/package.json","/packages/pulumi/package.json","/packages/serverless-cms-aws/package.json","/scripts/prepublishOnly/package.json"]},{"name":"folder-hash","version":"4.0.4","files":["/scripts/buildPackages/package.json"]},{"name":"fork-ts-checker-webpack-plugin","version":"9.0.2","files":["/packages/project-utils/package.json"]},{"name":"form-data","version":"4.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/pulumi-aws/package.json"]},{"name":"fs-extra","version":"11.2.0","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/cli/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/packages/pulumi-sdk/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"fuse.js","version":"7.0.0","files":["/packages/db-dynamodb/package.json"]},{"name":"get-yarn-workspaces","version":"1.0.2","files":["/packages/cli-plugin-dependencies/package.json","/packages/cwp-template-aws/package.json","/packages/project-utils/package.json","/scripts/prepublishOnly/package.json"]},{"name":"glob","version":"7.2.3","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/project-utils/package.json"]},{"name":"graphlib","version":"2.1.8","files":["/packages/app-admin/package.json","/packages/cli-plugin-workspaces/package.json"]},{"name":"graphql","version":"15.9.0","files":["/packages/api-headless-cms/package.json","/packages/api-i18n-content/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/handler-graphql/package.json","/packages/react-router/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"graphql-request","version":"3.7.0","files":["/packages/cli/package.json"]},{"name":"graphql-scalars","version":"1.12.0","files":["/packages/handler-graphql/package.json"]},{"name":"graphql-tag","version":"2.12.6","files":["/packages/api-headless-cms/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-record-locking/package.json","/packages/app-security-access-management/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/handler-graphql/package.json"]},{"name":"history","version":"5.3.0","files":["/packages/app-form-builder/package.json","/packages/app-page-builder/package.json","/packages/react-router/package.json"]},{"name":"html-webpack-plugin","version":"5.6.3","files":["/packages/project-utils/package.json"]},{"name":"humanize-duration","version":"3.32.1","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"i18n-locales","version":"0.0.5","files":["/packages/api-i18n/package.json"]},{"name":"indent-string","version":"5.0.0","files":["/packages/cli-plugin-scaffold-react-component/package.json"]},{"name":"inquirer","version":"8.2.6","files":["/packages/cli/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cwp-template-aws/package.json"]},{"name":"invariant","version":"2.2.4","files":["/packages/app/package.json","/packages/app-page-builder/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"inversify","version":"6.1.6","files":["/packages/ioc/package.json"]},{"name":"is-hotkey","version":"0.2.0","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"isnumeric","version":"0.3.3","files":["/packages/validation/package.json"]},{"name":"js-base64","version":"3.7.7","files":["/packages/cli-plugin-scaffold-ci/package.json"]},{"name":"js-yaml","version":"3.14.1","files":["/packages/create-webiny-project/package.json"]},{"name":"jsdom","version":"25.0.1","files":["/packages/api-headless-cms/package.json"]},{"name":"jsesc","version":"3.0.2","files":["/packages/telemetry/package.json"]},{"name":"json2csv","version":"4.5.4","files":["/packages/api-form-builder/package.json","/packages/app-form-builder/package.json"]},{"name":"jsonpack","version":"1.1.5","files":["/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json"]},{"name":"jsonwebtoken","version":"9.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"jwk-to-pem","version":"2.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"keycode","version":"2.2.0","files":["/packages/ui/package.json"]},{"name":"lexical","version":"0.23.1","files":["/packages/lexical-converter/package.json","/packages/lexical-editor/package.json","/packages/lexical-nodes/package.json","/packages/lexical-theme/package.json"]},{"name":"listr","version":"0.14.3","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json"]},{"name":"listr2","version":"5.0.8","files":["/scripts/buildPackages/package.json"]},{"name":"load-json-file","version":"6.2.0","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/global-config/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"load-script","version":"1.0.0","files":["/packages/app-graphql-playground/package.json","/packages/ui/package.json"]},{"name":"lodash","version":"4.17.21","files":["/packages/api-aco/package.json","/packages/api-admin-users/package.json","/packages/api-apw/package.json","/packages/api-file-manager/package.json","/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/api-sync-system/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-security-access-management/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cwp-template-aws/package.json","/packages/db-dynamodb/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/lexical-editor/package.json","/packages/migrations/package.json","/packages/project-utils/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/tasks/package.json","/packages/ui/package.json","/packages/validation/package.json","/scripts/prepublishOnly/package.json"]},{"name":"log-update","version":"4.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"lz-string","version":"1.5.0","files":["/packages/app-website/package.json"]},{"name":"material-components-web","version":"14.0.0","files":["/packages/ui/package.json"]},{"name":"md5","version":"2.3.0","files":["/packages/api-admin-users/package.json"]},{"name":"mdbid","version":"1.0.0","files":["/packages/utils/package.json"]},{"name":"medium-editor","version":"5.23.3","files":["/packages/app-page-builder/package.json"]},{"name":"mime","version":"3.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/app-file-manager/package.json","/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"mini-css-extract-plugin","version":"2.4.5","files":["/packages/project-utils/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/packages/api-security/package.json","/packages/app/package.json","/packages/app-file-manager/package.json","/packages/app-security/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/data-migration/package.json"]},{"name":"mobx","version":"6.9.0","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-trash-bin/package.json","/packages/app-utils/package.json"]},{"name":"mobx-react-lite","version":"3.4.3","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json","/packages/app-trash-bin/package.json"]},{"name":"mqtt","version":"5.10.3","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"multimatch","version":"5.0.0","files":["/packages/cli-plugin-workspaces/package.json"]},{"name":"nanoid","version":"3.3.8","files":["/packages/app/package.json","/packages/app-page-builder/package.json","/packages/react-properties/package.json","/packages/utils/package.json"]},{"name":"nanoid-dictionary","version":"4.3.0","files":["/packages/utils/package.json"]},{"name":"ncp","version":"2.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"node-fetch","version":"2.6.7","files":["/packages/api-cognito-authenticator/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json","/packages/api-wcp/package.json","/packages/create-webiny-project/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/serverless-cms-aws/package.json","/packages/wcp/package.json"]},{"name":"node-notifier","version":"10.0.1","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"nodemailer","version":"6.9.16","files":["/packages/api-mailer/package.json"]},{"name":"nprogress","version":"0.2.0","files":["/packages/ui/package.json"]},{"name":"nuka-carousel","version":"4.7.1","files":["/packages/ui/package.json"]},{"name":"null-loader","version":"4.0.1","files":["/packages/project-utils/package.json"]},{"name":"object-hash","version":"3.0.0","files":["/packages/api-file-manager/package.json","/packages/api-file-manager-s3/package.json","/packages/api-prerendering-service/package.json"]},{"name":"object-merge-advanced","version":"12.1.0","files":["/packages/tasks/package.json"]},{"name":"object-sizeof","version":"2.6.4","files":["/packages/tasks/package.json"]},{"name":"octokit","version":"3.1.2","files":["/packages/cli-plugin-scaffold-ci/package.json"]},{"name":"open","version":"8.4.2","files":["/packages/cli/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cwp-template-aws/package.json"]},{"name":"ora","version":"4.1.1","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"os","version":"0.1.1","files":["/packages/create-webiny-project/package.json"]},{"name":"os-browserify","version":"0.3.0","files":["/packages/project-utils/package.json"]},{"name":"p-map","version":"4.0.0","files":["/packages/api-file-manager-s3/package.json","/packages/api-headless-cms/package.json","/packages/cli-plugin-workspaces/package.json"]},{"name":"p-reduce","version":"2.1.0","files":["/packages/api-file-manager-s3/package.json","/packages/api-headless-cms/package.json"]},{"name":"p-retry","version":"4.6.2","files":["/packages/api-dynamodb-to-elasticsearch/package.json","/packages/app-file-manager-s3/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json","/packages/utils/package.json"]},{"name":"p-wait-for","version":"4.1.0","files":["/packages/ui-composer/package.json"]},{"name":"pako","version":"2.1.0","files":["/packages/app-aco/package.json","/packages/app-page-builder/package.json"]},{"name":"path-browserify","version":"1.0.1","files":["/packages/project-utils/package.json"]},{"name":"pino-pretty","version":"9.4.0","files":["/packages/data-migration/package.json"]},{"name":"pirates","version":"4.0.6","files":["/packages/cli/package.json"]},{"name":"platform","version":"1.3.5","files":["/packages/app-page-builder/package.json"]},{"name":"pluralize","version":"8.0.0","files":["/packages/api-headless-cms/package.json","/packages/api-prerendering-service/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json"]},{"name":"postcss-flexbugs-fixes","version":"5.0.2","files":["/packages/project-utils/package.json"]},{"name":"postcss-loader","version":"6.2.1","files":["/packages/project-utils/package.json"]},{"name":"postcss-normalize","version":"10.0.1","files":["/packages/project-utils/package.json"]},{"name":"postcss-preset-env","version":"9.4.0","files":["/packages/project-utils/package.json"]},{"name":"posthtml","version":"0.15.0","files":["/packages/api-prerendering-service/package.json"]},{"name":"posthtml-noopener","version":"1.0.5","files":["/packages/api-prerendering-service/package.json"]},{"name":"posthtml-plugin-link-preload","version":"1.0.0","files":["/packages/api-prerendering-service/package.json"]},{"name":"process","version":"0.11.10","files":["/packages/project-utils/package.json"]},{"name":"prop-types","version":"15.8.1","files":["/packages/app-admin/package.json","/packages/app-apw/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"puppeteer-core","version":"23.11.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"raw-loader","version":"4.0.2","files":["/packages/project-utils/package.json"]},{"name":"raw.macro","version":"0.4.2","files":["/packages/app-headless-cms/package.json"]},{"name":"rc-tooltip","version":"5.3.1","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/cli-plugin-extensions/templates/admin/package.json","/packages/cli-plugin-extensions/templates/pbElement/package.json","/packages/cli-plugin-extensions/templates/website/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/common/extensions/theme/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/project-utils/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/ui-composer/package.json","/apps/admin/package.json","/apps/website/package.json","/extensions/theme/package.json"]},{"name":"react-ace","version":"6.1.4","files":["/packages/ui/package.json"]},{"name":"react-butterfiles","version":"1.3.3","files":["/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/ui/package.json"]},{"name":"react-color","version":"2.19.3","files":["/packages/app-page-builder/package.json","/packages/lexical-editor-actions/package.json","/packages/ui/package.json"]},{"name":"react-columned","version":"1.1.3","files":["/packages/ui/package.json"]},{"name":"react-custom-scrollbars","version":"4.2.1","files":["/packages/app-file-manager/package.json","/packages/app-headless-cms/package.json","/packages/ui/package.json"]},{"name":"react-dev-utils","version":"12.0.1","files":["/packages/project-utils/package.json"]},{"name":"react-dnd","version":"16.0.1","files":["/packages/app-aco/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"react-dnd-html5-backend","version":"16.0.1","files":["/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"react-dom","version":"18.2.0","files":["/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/lexical-editor/package.json","/packages/lexical-editor-actions/package.json","/packages/lexical-editor-pb-element/package.json","/packages/project-utils/package.json","/packages/react-composition/package.json","/packages/react-router/package.json","/packages/ui-composer/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"react-draggable","version":"4.4.6","files":["/packages/app-admin/package.json"]},{"name":"react-google-recaptcha","version":"1.1.0","files":["/packages/app-form-builder/package.json"]},{"name":"react-hamburger-menu","version":"1.2.1","files":["/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"react-helmet","version":"6.1.0","files":["/packages/app-admin-auth0/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-headless-cms/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-security-access-management/package.json","/packages/app-website/package.json"]},{"name":"react-hotkeyz","version":"1.0.4","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-file-manager/package.json","/packages/app-form-builder/package.json","/packages/app-headless-cms/package.json"]},{"name":"react-images","version":"0.5.19","files":["/packages/app-page-builder/package.json"]},{"name":"react-in-viewport","version":"1.0.0-alpha.30","files":["/packages/app-page-builder/package.json"]},{"name":"react-lazy-load","version":"3.1.14","files":["/packages/app-file-manager/package.json"]},{"name":"react-loading-skeleton","version":"3.1.0","files":["/packages/ui/package.json"]},{"name":"react-refresh","version":"0.11.0","files":["/packages/project-utils/package.json"]},{"name":"react-resizable","version":"3.0.5","files":["/packages/app-admin/package.json"]},{"name":"react-resizable-panels","version":"2.0.19","files":["/packages/app-admin/package.json"]},{"name":"react-router-dom","version":"6.3.0","files":["/packages/react-router/package.json"]},{"name":"react-sortable","version":"2.0.0","files":["/packages/app-page-builder/package.json"]},{"name":"react-spinner-material","version":"1.1.4","files":["/packages/app-apw/package.json","/packages/ui/package.json"]},{"name":"react-style-object-to-css","version":"1.1.2","files":["/packages/lexical-theme/package.json"]},{"name":"react-transition-group","version":"4.4.5","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/ui/package.json"]},{"name":"react-virtualized","version":"9.22.5","files":["/packages/app-admin/package.json","/packages/app-headless-cms/package.json","/packages/app-page-builder/package.json"]},{"name":"read-json-sync","version":"2.0.1","files":["/packages/project-utils/package.json"]},{"name":"recoil","version":"0.7.7","files":["/packages/app-page-builder/package.json"]},{"name":"reflect-metadata","version":"0.2.2","files":["/packages/di-container/package.json","/packages/ioc/package.json"]},{"name":"regenerator-runtime","version":"0.13.11","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"replace-in-path","version":"1.1.0","files":["/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"reset-css","version":"5.0.1","files":["/packages/app-admin/package.json","/packages/app-website/package.json"]},{"name":"resolve","version":"1.22.8","files":["/packages/project-utils/package.json"]},{"name":"resolve-url-loader","version":"5.0.0","files":["/packages/project-utils/package.json"]},{"name":"rimraf","version":"6.0.1","files":["/packages/create-webiny-project/package.json","/packages/project-utils/package.json"]},{"name":"sanitize-filename","version":"1.6.3","files":["/packages/api-file-manager-s3/package.json"]},{"name":"sanitize-html","version":"2.12.1","files":["/packages/react-rich-text-renderer/package.json"]},{"name":"sass","version":"1.44.0","files":["/packages/project-utils/package.json"]},{"name":"sass-loader","version":"12.3.0","files":["/packages/project-utils/package.json"]},{"name":"scheduler","version":"0.19.1","files":["/packages/project-utils/package.json"]},{"name":"semver","version":"7.6.3","files":["/packages/api-headless-cms/package.json","/packages/cli/package.json","/packages/cli-plugin-dependencies/package.json","/packages/create-webiny-project/package.json","/packages/data-migration/package.json","/packages/pulumi-sdk/package.json","/packages/system-requirements/package.json"]},{"name":"serialize-error","version":"8.0.0","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"sharp","version":"0.32.6","files":["/packages/api-file-manager-s3/package.json"]},{"name":"short-hash","version":"1.0.0","files":["/packages/i18n/package.json"]},{"name":"slugify","version":"1.6.6","files":["/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/app-aco/package.json","/packages/app-dynamic-pages/package.json","/packages/app-page-builder/package.json"]},{"name":"source-map-loader","version":"1.1.3","files":["/packages/project-utils/package.json"]},{"name":"source-map-support","version":"0.5.21","files":["/packages/project-utils/package.json"]},{"name":"srcset","version":"4.0.0","files":["/packages/api-prerendering-service/package.json","/packages/aws-helpers/package.json"]},{"name":"store","version":"2.0.12","files":["/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-page-builder/package.json","/packages/app-tenancy/package.json"]},{"name":"stream","version":"0.0.3","files":["/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json"]},{"name":"strip-ansi","version":"6.0.1","files":["/packages/telemetry/package.json"]},{"name":"style-loader","version":"3.3.1","files":["/packages/project-utils/package.json"]},{"name":"swiper","version":"9.3.2","files":["/packages/app-page-builder/package.json"]},{"name":"tar","version":"6.2.1","files":["/packages/pulumi-sdk/package.json"]},{"name":"terminal-link","version":"2.1.1","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json"]},{"name":"terser-webpack-plugin","version":"5.3.10","files":["/packages/project-utils/package.json"]},{"name":"theme","version":"1.0.0","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"timeago-react","version":"3.0.6","files":["/packages/ui/package.json"]},{"name":"ts-checker-rspack-plugin","version":"1.0.3","files":["/packages/project-utils/package.json"]},{"name":"ts-invariant","version":"0.10.3","files":["/packages/app/package.json"]},{"name":"ts-morph","version":"11.0.0","files":["/packages/cli/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json"]},{"name":"ts-patch","version":"3.3.0","files":["/packages/project-utils/package.json"]},{"name":"tslib","version":"2.8.1","files":["/packages/cwp-template-aws/template/common/apps/admin/package.json","/apps/admin/package.json"]},{"name":"type-fest","version":"4.14.0","files":["/packages/api-websockets/package.json","/packages/db/package.json"]},{"name":"typescript","version":"5.3.3","files":["/packages/cli/package.json","/packages/project-utils/package.json"]},{"name":"unicode-emoji-json","version":"0.4.0","files":["/packages/app-admin/package.json"]},{"name":"uniqid","version":"5.4.0","files":["/packages/api-headless-cms-import-export/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/app-page-builder/package.json","/packages/cli/package.json","/packages/plugins/package.json"]},{"name":"unzipper","version":"0.12.3","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"url","version":"0.11.4","files":["/packages/project-utils/package.json"]},{"name":"url-loader","version":"4.1.1","files":["/packages/project-utils/package.json"]},{"name":"use-deep-compare-effect","version":"1.8.1","files":["/packages/app-headless-cms/package.json"]},{"name":"utf-8-validate","version":"5.0.2","files":["/packages/project-utils/package.json"]},{"name":"uuid","version":"9.0.1","files":["/packages/create-webiny-project/package.json","/packages/global-config/package.json"]},{"name":"validate-npm-package-name","version":"3.0.0","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json"]},{"name":"vm-browserify","version":"1.1.2","files":["/packages/project-utils/package.json"]},{"name":"warning","version":"4.0.2","files":["/packages/app/package.json"]},{"name":"webpack","version":"5.97.0","files":["/packages/project-utils/package.json","/packages/serverless-cms-aws/package.json"]},{"name":"webpack-dev-server","version":"4.15.2","files":["/packages/project-utils/package.json"]},{"name":"webpack-manifest-plugin","version":"5.0.0","files":["/packages/project-utils/package.json"]},{"name":"webpackbar","version":"7.0.0","files":["/packages/project-utils/package.json"]},{"name":"write-json-file","version":"4.3.0","files":["/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/create-webiny-project/package.json","/packages/cwp-template-aws/package.json","/packages/global-config/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"wts-client","version":"1.0.1","files":["/packages/telemetry/package.json"]},{"name":"yargs","version":"17.7.2","files":["/packages/cli/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/create-webiny-project/package.json","/packages/i18n/package.json","/scripts/buildPackages/package.json"]},{"name":"yauzl","version":"2.10.0","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"yesno","version":"0.4.0","files":["/packages/create-webiny-project/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/api-admin-users/package.json","/packages/api-apw/package.json","/packages/api-file-manager/package.json","/packages/api-form-builder/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-headless-cms-tasks/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security/package.json","/packages/api-sync-system/package.json","/packages/api-websockets/package.json","/packages/app-aco/package.json","/packages/app-file-manager/package.json","/packages/pulumi-aws/package.json","/packages/tasks/package.json"]}],"devDependencies":[{"name":"@4tw/cypress-drag-drop","version":"1.4.0","files":["/cypress-tests/package.json"]},{"name":"@babel/cli","version":"7.26.4","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/code-frame","version":"7.26.2","files":["/package.json"]},{"name":"@babel/compat-data","version":"7.26.5","files":["/package.json"]},{"name":"@babel/core","version":"7.26.7","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/helper-define-polyfill-provider","version":"0.6.3","files":["/package.json"]},{"name":"@babel/helper-environment-visitor","version":"7.24.7","files":["/package.json"]},{"name":"@babel/parser","version":"7.26.7","files":["/package.json"]},{"name":"@babel/plugin-proposal-class-properties","version":"7.18.6","files":["/package.json"]},{"name":"@babel/plugin-proposal-object-rest-spread","version":"7.20.7","files":["/package.json"]},{"name":"@babel/plugin-proposal-throw-expressions","version":"7.25.9","files":["/package.json"]},{"name":"@babel/plugin-syntax-object-rest-spread","version":"7.8.3","files":["/package.json"]},{"name":"@babel/plugin-transform-modules-commonjs","version":"7.26.3","files":["/package.json"]},{"name":"@babel/plugin-transform-runtime","version":"7.25.9","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/preset-env","version":"7.26.7","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/preset-react","version":"7.26.3","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json"]},{"name":"@babel/preset-typescript","version":"7.26.0","files":["/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@babel/register","version":"7.25.9","files":["/package.json","/packages/i18n/package.json"]},{"name":"@babel/runtime","version":"7.26.7","files":["/package.json"]},{"name":"@babel/template","version":"7.25.9","files":["/package.json"]},{"name":"@babel/traverse","version":"7.26.7","files":["/package.json"]},{"name":"@babel/types","version":"7.26.7","files":["/package.json"]},{"name":"@commitlint/cli","version":"11.0.0","files":["/package.json"]},{"name":"@commitlint/config-conventional","version":"11.0.0","files":["/package.json"]},{"name":"@elastic/elasticsearch","version":"7.12.0","files":["/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/project-utils/package.json"]},{"name":"@emotion/babel-plugin","version":"11.11.0","files":["/packages/app-admin/package.json","/packages/app-admin-rmwc/package.json","/packages/app-apw/package.json","/packages/app-dynamic-pages/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"@faker-js/faker","version":"9.3.0","files":["/packages/api-headless-cms-es-tasks/package.json"]},{"name":"@grpc/grpc-js","version":"1.11.1","files":["/package.json"]},{"name":"@lexical/code","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/hashtag","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/headless","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/history","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/html","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/list","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/mark","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/overflow","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/react","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/rich-text","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/selection","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/text","version":"0.23.1","files":["/package.json"]},{"name":"@lexical/utils","version":"0.23.1","files":["/package.json"]},{"name":"@material-design-icons/svg","version":"0.14.13","files":["/packages/app-audit-logs/package.json"]},{"name":"@material-symbols/svg-400","version":"0.4.1","files":["/packages/app-audit-logs/package.json"]},{"name":"@octokit/rest","version":"20.0.2","files":["/package.json"]},{"name":"@svgr/webpack","version":"6.1.1","files":["/packages/app-file-manager/package.json"]},{"name":"@testing-library/cypress","version":"10.0.0","files":["/cypress-tests/package.json"]},{"name":"@testing-library/react","version":"15.0.7","files":["/packages/form/package.json","/packages/react-composition/package.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json","/packages/ui/package.json"]},{"name":"@testing-library/user-event","version":"14.5.2","files":["/packages/form/package.json"]},{"name":"@types/accept-language-parser","version":"1.5.3","files":["/packages/api-i18n/package.json"]},{"name":"@types/accounting","version":"0.4.2","files":["/packages/i18n/package.json"]},{"name":"@types/adm-zip","version":"0.5.5","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"@types/aos","version":"3.0.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/archiver","version":"5.3.1","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"@types/babel__code-frame","version":"7.0.6","files":["/packages/api-headless-cms/package.json"]},{"name":"@types/bytes","version":"3.1.4","files":["/packages/app-admin/package.json"]},{"name":"@types/center-align","version":"1.0.0","files":["/packages/data-migration/package.json"]},{"name":"@types/crypto-js","version":"4.2.2","files":["/packages/api-mailer/package.json"]},{"name":"@types/extract-zip","version":"1.6.2","files":["/packages/api-page-builder/package.json"]},{"name":"@types/facepaint","version":"1.2.2","files":["/packages/app-page-builder-elements/package.json"]},{"name":"@types/folder-hash","version":"4.0.4","files":["/scripts/buildPackages/package.json"]},{"name":"@types/fs-extra","version":"11.0.4","files":["/package.json"]},{"name":"@types/graphlib","version":"2.1.12","files":["/packages/app-admin/package.json"]},{"name":"@types/gtag.js","version":"0.0.20","files":["/packages/app-form-builder/package.json"]},{"name":"@types/hoist-non-react-statics","version":"3.3.5","files":["/package.json"]},{"name":"@types/humanize-duration","version":"3.27.4","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/inquirer","version":"8.2.10","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/invariant","version":"2.2.35","files":["/packages/form/package.json"]},{"name":"@types/is-hotkey","version":"0.1.10","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"@types/is-number","version":"7.0.5","files":["/packages/db-dynamodb/package.json"]},{"name":"@types/jest","version":"29.5.14","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/jsdom","version":"21.1.6","files":["/packages/lexical-converter/package.json"]},{"name":"@types/json2csv","version":"4.5.1","files":["/packages/api-form-builder/package.json","/packages/app-form-builder/package.json"]},{"name":"@types/jsonpack","version":"1.1.6","files":["/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json"]},{"name":"@types/jsonwebtoken","version":"9.0.2","files":["/packages/api-admin-users/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json"]},{"name":"@types/jwk-to-pem","version":"2.0.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-security-auth0/package.json"]},{"name":"@types/listr","version":"0.14.9","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/lodash","version":"4.17.13","files":["/packages/api-sync-system/package.json","/packages/app/package.json","/packages/app-cognito-authenticator/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/pulumi/package.json","/packages/pulumi-sdk/package.json","/packages/validation/package.json"]},{"name":"@types/md5","version":"2.3.2","files":["/packages/api-admin-users/package.json"]},{"name":"@types/ncp","version":"2.0.4","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/node","version":"20.17.10","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/node-fetch","version":"2.6.1","files":["/packages/api-cognito-authenticator/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-security-auth0/package.json","/packages/api-security-okta/package.json"]},{"name":"@types/node-notifier","version":"8.0.5","files":["/packages/cli-plugin-deploy-pulumi/package.json"]},{"name":"@types/nodemailer","version":"6.4.17","files":["/packages/api-mailer/package.json"]},{"name":"@types/nprogress","version":"0.2.0","files":["/packages/ui/package.json"]},{"name":"@types/object-hash","version":"2.2.1","files":["/packages/api-prerendering-service/package.json"]},{"name":"@types/pako","version":"2.0.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/platform","version":"1.3.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/pluralize","version":"0.0.29","files":["/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/prettier","version":"2.7.3","files":["/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/package.json","/packages/app-aco/package.json","/packages/app-audit-logs/package.json","/packages/app-headless-cms-common/package.json","/packages/app-mailer/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/app-trash-bin/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/theme/package.json"]},{"name":"@types/react-color","version":"2.17.11","files":["/packages/lexical-editor-actions/package.json","/packages/ui/package.json"]},{"name":"@types/react-custom-scrollbars","version":"4.0.10","files":["/packages/ui/package.json"]},{"name":"@types/react-dom","version":"18.2.25","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/react-google-recaptcha","version":"1.1.2","files":["/packages/app-form-builder/package.json"]},{"name":"@types/react-hamburger-menu","version":"0.0.4","files":["/packages/cwp-template-aws/template/common/extensions/theme/package.json","/extensions/theme/package.json"]},{"name":"@types/react-helmet","version":"6.1.11","files":["/packages/app-admin-rmwc/package.json","/packages/app-security-access-management/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/apps/website/package.json"]},{"name":"@types/react-images","version":"0.5.3","files":["/packages/app-page-builder/package.json"]},{"name":"@types/react-resizable","version":"3.0.8","files":["/packages/app-admin/package.json"]},{"name":"@types/react-transition-group","version":"4.4.4","files":["/packages/ui/package.json"]},{"name":"@types/react-virtualized","version":"9.21.16","files":["/packages/app-page-builder/package.json"]},{"name":"@types/resize-observer-browser","version":"0.1.4","files":["/packages/app-page-builder/package.json"]},{"name":"@types/rimraf","version":"3.0.2","files":["/packages/api-page-builder/package.json"]},{"name":"@types/sanitize-html","version":"2.9.0","files":["/packages/react-rich-text-renderer/package.json"]},{"name":"@types/semver","version":"7.3.4","files":["/packages/data-migration/package.json"]},{"name":"@types/store","version":"2.0.2","files":["/packages/app-admin/package.json","/packages/app-page-builder/package.json"]},{"name":"@types/uniqid","version":"5.3.2","files":["/packages/feature-flags/package.json","/packages/plugins/package.json"]},{"name":"@types/unzipper","version":"0.10.10","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"@types/validate-npm-package-name","version":"3.0.3","files":["/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-workspaces/package.json"]},{"name":"@types/warning","version":"3.0.0","files":["/packages/app/package.json"]},{"name":"@types/yargs","version":"17.0.8","files":["/scripts/buildPackages/package.json"]},{"name":"@types/yauzl","version":"2.9.2","files":["/packages/api-page-builder-import-export/package.json"]},{"name":"@typescript-eslint/eslint-plugin","version":"6.21.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@typescript-eslint/parser","version":"6.21.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"adio","version":"1.0.1","files":["/package.json"]},{"name":"adm-zip","version":"0.5.14","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"amazon-cognito-identity-js","version":"4.5.3","files":["/cypress-tests/package.json"]},{"name":"apollo-client","version":"2.6.10","files":["/packages/app-aco/package.json","/packages/app-trash-bin/package.json"]},{"name":"apollo-graphql","version":"0.9.5","files":["/packages/api-admin-settings/package.json","/packages/api-headless-cms/package.json"]},{"name":"apollo-link","version":"1.2.14","files":["/packages/app-aco/package.json","/packages/app-trash-bin/package.json"]},{"name":"aws-sdk-client-mock","version":"4.1.0","files":["/packages/api-headless-cms-import-export/package.json"]},{"name":"axios","version":"1.7.9","files":["/package.json"]},{"name":"babel-jest","version":"29.7.0","files":["/package.json"]},{"name":"babel-loader","version":"9.2.1","files":["/package.json","/packages/ui/package.json"]},{"name":"babel-plugin-dynamic-import-node","version":"2.3.3","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"babel-plugin-macros","version":"3.1.0","files":["/package.json"]},{"name":"babel-plugin-module-resolver","version":"5.0.2","files":["/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"babel-plugin-named-asset-import","version":"1.0.0-next.3e165448","files":["/packages/app-admin-rmwc/package.json","/packages/app-serverless-cms/package.json","/packages/app-theme-manager/package.json"]},{"name":"bytes","version":"3.1.2","files":["/packages/api-page-builder/package.json"]},{"name":"chalk","version":"4.1.2","files":["/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/pulumi-aws/package.json"]},{"name":"cross-env","version":"5.2.1","files":["/package.json","/packages/cwp-template-aws/template/common/apps/admin/package.json","/packages/cwp-template-aws/template/common/apps/website/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/apps/admin/package.json","/apps/website/package.json"]},{"name":"cross-spawn","version":"6.0.6","files":["/package.json"]},{"name":"csvtojson","version":"2.0.10","files":["/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json"]},{"name":"cypress","version":"13.16.0","files":["/cypress-tests/package.json"]},{"name":"cypress-image-snapshot","version":"4.0.1","files":["/cypress-tests/package.json"]},{"name":"cypress-mailosaur","version":"2.7.0","files":["/cypress-tests/package.json"]},{"name":"cypress-wait-until","version":"1.7.1","files":["/cypress-tests/package.json"]},{"name":"deepmerge","version":"4.3.1","files":["/package.json"]},{"name":"del","version":"6.0.0","files":["/cypress-tests/package.json"]},{"name":"dotenv","version":"8.2.0","files":["/packages/cwp-template-aws/package.json"]},{"name":"elastic-ts","version":"0.12.0","files":["/packages/migrations/package.json"]},{"name":"elliptic","version":"6.6.1","files":["/package.json"]},{"name":"env-ci","version":"2.0.1","files":["/package.json"]},{"name":"eslint","version":"8.57.1","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-config-standard","version":"16.0.3","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-import-resolver-babel-module","version":"5.3.2","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-import","version":"2.27.5","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-jest","version":"25.7.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-lodash","version":"7.4.0","files":["/package.json"]},{"name":"eslint-plugin-node","version":"11.1.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-promise","version":"5.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-react","version":"7.32.2","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"eslint-plugin-standard","version":"5.0.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"execa","version":"5.1.1","files":["/package.json","/packages/app-audit-logs/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"fast-glob","version":"3.2.7","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json"]},{"name":"find-up","version":"5.0.0","files":["/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json"]},{"name":"folder-hash","version":"4.0.4","files":["/package.json"]},{"name":"fs-extra","version":"11.2.0","files":["/package.json","/packages/api-form-builder/package.json"]},{"name":"get-stream","version":"3.0.0","files":["/package.json"]},{"name":"get-yarn-workspaces","version":"1.0.2","files":["/package.json"]},{"name":"git-cz","version":"1.7.1","files":["/package.json"]},{"name":"github-actions-wac","version":"1.4.1","files":["/package.json"]},{"name":"glob","version":"7.2.3","files":["/package.json","/packages/i18n/package.json"]},{"name":"graphql","version":"15.9.0","files":["/package.json","/packages/api-aco/package.json","/packages/api-apw/package.json","/packages/api-audit-logs/package.json","/packages/api-file-manager-aco/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-aco/package.json","/packages/api-headless-cms-bulk-actions/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-mailer/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-record-locking/package.json","/packages/api-serverless-cms/package.json","/packages/api-websockets/package.json"]},{"name":"graphql-request","version":"3.7.0","files":["/cypress-tests/package.json","/apps/api/graphql/package.json"]},{"name":"husky","version":"4.2.5","files":["/package.json"]},{"name":"identity-obj-proxy","version":"3.0.0","files":["/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"inquirer","version":"8.2.6","files":["/package.json"]},{"name":"inquirer-autocomplete-prompt","version":"1.0.1","files":["/package.json"]},{"name":"inquirer-checkbox-plus-prompt","version":"1.0.1","files":["/package.json"]},{"name":"inquirer-maxlength-input-prompt","version":"1.0.0","files":["/package.json"]},{"name":"jest","version":"29.7.0","files":["/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-security-so-ddb/package.json","/packages/api-sync-system/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/data-migration/package.json","/packages/db-dynamodb/package.json","/packages/handler-client/package.json","/packages/handler-graphql/package.json","/packages/validation/package.json"]},{"name":"jest-dynalite","version":"3.6.1","files":["/packages/api-admin-settings/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-authentication/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-security-so-ddb/package.json","/packages/api-sync-system/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-wcp/package.json","/packages/data-migration/package.json","/packages/db-dynamodb/package.json","/packages/migrations/package.json","/packages/project-utils/package.json"]},{"name":"jest-environment-jsdom","version":"29.7.0","files":["/package.json"]},{"name":"jest-extended","version":"4.0.2","files":["/package.json"]},{"name":"jest-mock-console","version":"2.0.0","files":["/packages/data-migration/package.json","/packages/handler-graphql/package.json"]},{"name":"jsdom","version":"25.0.1","files":["/packages/lexical-converter/package.json"]},{"name":"jsonpack","version":"1.1.5","files":["/packages/api-file-manager-ddb/package.json"]},{"name":"lerna","version":"8.1.2","files":["/package.json"]},{"name":"lexical","version":"0.23.1","files":["/package.json"]},{"name":"lint-staged","version":"15.3.0","files":["/package.json"]},{"name":"listr","version":"0.14.3","files":["/package.json"]},{"name":"listr2","version":"5.0.8","files":["/packages/project-utils/package.json"]},{"name":"load-json-file","version":"6.2.0","files":["/package.json","/packages/project-utils/package.json"]},{"name":"lodash","version":"4.17.21","files":["/package.json","/cypress-tests/package.json"]},{"name":"longest","version":"2.0.1","files":["/package.json"]},{"name":"md5","version":"2.3.0","files":["/packages/api-security-cognito/package.json"]},{"name":"merge","version":"2.1.1","files":["/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"micromatch","version":"4.0.8","files":["/package.json"]},{"name":"mime","version":"3.0.0","files":["/packages/pulumi-aws/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/package.json"]},{"name":"mobx","version":"6.9.0","files":["/packages/form/package.json"]},{"name":"mobx-react-lite","version":"3.4.3","files":["/packages/form/package.json"]},{"name":"monaco-editor","version":"0.52.2","files":["/packages/app-admin/package.json"]},{"name":"nanoid","version":"3.3.8","files":["/package.json","/cypress-tests/package.json"]},{"name":"ncp","version":"2.0.0","files":["/packages/ui/package.json"]},{"name":"node-fetch","version":"2.6.7","files":["/package.json","/cypress-tests/package.json"]},{"name":"pino","version":"8.21.0","files":["/packages/logger/package.json","/packages/project-utils/package.json"]},{"name":"pino-pretty","version":"9.4.0","files":["/packages/project-utils/package.json"]},{"name":"pm2","version":"5.4.3","files":["/package.json"]},{"name":"prettier","version":"2.8.8","files":["/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-apw/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-page-builder/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/react-properties/package.json","/packages/react-rich-text-lexical-renderer/package.json"]},{"name":"raw-loader","version":"4.0.2","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/lexical-nodes/package.json"]},{"name":"rimraf","version":"6.0.1","files":["/packages/api/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-authentication/package.json","/packages/api-authentication-cognito/package.json","/packages/api-background-tasks-ddb/package.json","/packages/api-background-tasks-es/package.json","/packages/api-background-tasks-os/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-elasticsearch/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-content/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-record-locking/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json","/packages/api-security-okta/package.json","/packages/api-security-so-ddb/package.json","/packages/api-serverless-cms/package.json","/packages/api-sync-system/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/api-wcp/package.json","/packages/api-websockets/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/aws-sdk/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/data-migration/package.json","/packages/db/package.json","/packages/db-dynamodb/package.json","/packages/error/package.json","/packages/feature-flags/package.json","/packages/form/package.json","/packages/handler/package.json","/packages/handler-aws/package.json","/packages/handler-client/package.json","/packages/handler-db/package.json","/packages/handler-graphql/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/logger/package.json","/packages/plugins/package.json","/packages/pubsub/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/tasks/package.json","/packages/theme/package.json","/packages/ui/package.json","/packages/ui-composer/package.json","/packages/utils/package.json","/packages/validation/package.json","/packages/wcp/package.json"]},{"name":"semver","version":"7.6.3","files":["/package.json"]},{"name":"source-map-explorer","version":"2.5.3","files":["/apps/website/package.json"]},{"name":"ts-expect","version":"1.3.0","files":["/package.json"]},{"name":"ts-jest","version":"29.1.5","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"ts-jest-resolver","version":"2.0.1","files":["/package.json"]},{"name":"ts-node","version":"10.9.2","files":["/package.json","/scripts/buildPackages/package.json","/scripts/prepublishOnly/package.json"]},{"name":"ttypescript","version":"1.5.15","files":["/packages/api-file-manager-aco/package.json","/packages/app-dynamic-pages/package.json"]},{"name":"type-fest","version":"4.14.0","files":["/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-record-locking/package.json","/packages/cli-plugin-dependencies/package.json","/packages/tasks/package.json","/scripts/prepublishOnly/package.json"]},{"name":"typescript","version":"5.3.3","files":["/package.json","/packages/api/package.json","/packages/api-aco/package.json","/packages/api-admin-settings/package.json","/packages/api-admin-users/package.json","/packages/api-admin-users-so-ddb/package.json","/packages/api-apw/package.json","/packages/api-apw-scheduler-so-ddb/package.json","/packages/api-audit-logs/package.json","/packages/api-authentication/package.json","/packages/api-authentication-cognito/package.json","/packages/api-background-tasks-ddb/package.json","/packages/api-background-tasks-es/package.json","/packages/api-background-tasks-os/package.json","/packages/api-cognito-authenticator/package.json","/packages/api-dynamodb-to-elasticsearch/package.json","/packages/api-elasticsearch/package.json","/packages/api-elasticsearch-tasks/package.json","/packages/api-file-manager/package.json","/packages/api-file-manager-aco/package.json","/packages/api-file-manager-ddb/package.json","/packages/api-file-manager-s3/package.json","/packages/api-form-builder/package.json","/packages/api-form-builder-so-ddb/package.json","/packages/api-form-builder-so-ddb-es/package.json","/packages/api-headless-cms/package.json","/packages/api-headless-cms-aco/package.json","/packages/api-headless-cms-bulk-actions/package.json","/packages/api-headless-cms-ddb/package.json","/packages/api-headless-cms-ddb-es/package.json","/packages/api-headless-cms-es-tasks/package.json","/packages/api-headless-cms-import-export/package.json","/packages/api-headless-cms-tasks/package.json","/packages/api-headless-cms-tasks-ddb-es/package.json","/packages/api-i18n/package.json","/packages/api-i18n-content/package.json","/packages/api-i18n-ddb/package.json","/packages/api-log/package.json","/packages/api-mailer/package.json","/packages/api-page-builder/package.json","/packages/api-page-builder-aco/package.json","/packages/api-page-builder-import-export/package.json","/packages/api-page-builder-import-export-so-ddb/package.json","/packages/api-page-builder-so-ddb/package.json","/packages/api-page-builder-so-ddb-es/package.json","/packages/api-prerendering-service/package.json","/packages/api-prerendering-service-aws/package.json","/packages/api-prerendering-service-so-ddb/package.json","/packages/api-record-locking/package.json","/packages/api-security/package.json","/packages/api-security-auth0/package.json","/packages/api-security-cognito/package.json","/packages/api-security-okta/package.json","/packages/api-security-so-ddb/package.json","/packages/api-serverless-cms/package.json","/packages/api-sync-system/package.json","/packages/api-tenancy/package.json","/packages/api-tenancy-so-ddb/package.json","/packages/api-tenant-manager/package.json","/packages/api-theme-manager/package.json","/packages/api-wcp/package.json","/packages/api-websockets/package.json","/packages/app/package.json","/packages/app-aco/package.json","/packages/app-admin/package.json","/packages/app-admin-auth0/package.json","/packages/app-admin-cognito/package.json","/packages/app-admin-okta/package.json","/packages/app-admin-rmwc/package.json","/packages/app-admin-users-cognito/package.json","/packages/app-apw/package.json","/packages/app-audit-logs/package.json","/packages/app-cognito-authenticator/package.json","/packages/app-dynamic-pages/package.json","/packages/app-file-manager/package.json","/packages/app-file-manager-s3/package.json","/packages/app-form-builder/package.json","/packages/app-graphql-playground/package.json","/packages/app-headless-cms/package.json","/packages/app-headless-cms-common/package.json","/packages/app-i18n/package.json","/packages/app-i18n-content/package.json","/packages/app-mailer/package.json","/packages/app-page-builder/package.json","/packages/app-page-builder-elements/package.json","/packages/app-plugin-admin-welcome-screen/package.json","/packages/app-record-locking/package.json","/packages/app-security/package.json","/packages/app-security-access-management/package.json","/packages/app-serverless-cms/package.json","/packages/app-tenancy/package.json","/packages/app-tenant-manager/package.json","/packages/app-theme/package.json","/packages/app-theme-manager/package.json","/packages/app-trash-bin/package.json","/packages/app-utils/package.json","/packages/app-wcp/package.json","/packages/app-website/package.json","/packages/app-websockets/package.json","/packages/aws-sdk/package.json","/packages/cli-plugin-dependencies/package.json","/packages/cli-plugin-deploy-pulumi/package.json","/packages/cli-plugin-extensions/package.json","/packages/cli-plugin-scaffold/package.json","/packages/cli-plugin-scaffold-admin-app-module/package.json","/packages/cli-plugin-scaffold-ci/package.json","/packages/cli-plugin-scaffold-extensions/package.json","/packages/cli-plugin-scaffold-graphql-service/package.json","/packages/cli-plugin-scaffold-react-component/package.json","/packages/cli-plugin-scaffold-react-component/template/package.json","/packages/cli-plugin-scaffold-workspaces/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json","/packages/data-migration/package.json","/packages/db/package.json","/packages/db-dynamodb/package.json","/packages/di-container/package.json","/packages/error/package.json","/packages/feature-flags/package.json","/packages/form/package.json","/packages/handler/package.json","/packages/handler-aws/package.json","/packages/handler-client/package.json","/packages/handler-db/package.json","/packages/handler-graphql/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/ioc/package.json","/packages/logger/package.json","/packages/migrations/package.json","/packages/plugins/package.json","/packages/pubsub/package.json","/packages/pulumi/package.json","/packages/pulumi-aws/package.json","/packages/pulumi-sdk/package.json","/packages/react-composition/package.json","/packages/react-rich-text-renderer/package.json","/packages/react-router/package.json","/packages/serverless-cms-aws/package.json","/packages/tasks/package.json","/packages/theme/package.json","/packages/ui/package.json","/packages/ui-composer/package.json","/packages/utils/package.json","/packages/validation/package.json","/packages/wcp/package.json","/cypress-tests/package.json"]},{"name":"typescript-transform-paths","version":"3.5.3","files":["/package.json"]},{"name":"uniqid","version":"5.4.0","files":["/cypress-tests/package.json"]},{"name":"verdaccio","version":"6.0.5","files":["/package.json"]},{"name":"write-json-file","version":"4.3.0","files":["/package.json","/packages/api-headless-cms/package.json"]},{"name":"yargs","version":"17.7.2","files":["/package.json","/packages/project-utils/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/ioc/package.json"]}],"peerDependencies":[{"name":"@editorjs/editorjs","version":"2.26.5","files":["/packages/app-page-builder-elements/package.json"]},{"name":"aos","version":"2.3.4","files":["/packages/app-page-builder-elements/package.json"]},{"name":"minimatch","version":"5.1.6","files":["/packages/ui/package.json"]},{"name":"react","version":"18.2.0","files":["/packages/app-audit-logs/package.json","/packages/app-page-builder-elements/package.json","/packages/app-theme/package.json","/packages/form/package.json","/packages/i18n/package.json","/packages/i18n-react/package.json","/packages/react-router/package.json","/packages/theme/package.json","/packages/ui/package.json"]},{"name":"react-columned","version":"1.1.3","files":["/packages/app-page-builder-elements/package.json"]},{"name":"react-dom","version":"18.2.0","files":["/packages/ui/package.json"]},{"name":"react-google-recaptcha","version":"1.1.0","files":["/packages/app-page-builder-elements/package.json"]},{"name":"react-images","version":"0.5.19","files":["/packages/app-page-builder-elements/package.json"]},{"name":"swiper","version":"9.3.2","files":["/packages/app-page-builder-elements/package.json"]},{"name":"zod","version":"3.23.8","files":["/packages/utils/package.json"]}],"resolutions":[{"name":"@babel/runtime","version":"7.26.7","files":["/package.json"]},{"name":"@emotion/react","version":"11.10.8","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@grpc/grpc-js","version":"1.11.1","files":["/package.json"]},{"name":"@octokit/rest","version":"20.0.2","files":["/package.json"]},{"name":"@types/react","version":"18.2.79","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"@types/react-dom","version":"18.2.25","files":["/package.json"]},{"name":"@types/webpack","version":"5.28.0","files":["/package.json"]},{"name":"postcss","version":"8.4.35","files":["/package.json"]},{"name":"react","version":"18.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"react-dom","version":"18.2.0","files":["/package.json","/packages/cwp-template-aws/template/ddb-es/dependencies.json","/packages/cwp-template-aws/template/ddb-os/dependencies.json","/packages/cwp-template-aws/template/ddb/dependencies.json"]},{"name":"semver","version":"7.6.3","files":["/package.json"]},{"name":"systeminformation","version":"5.23.18","files":["/package.json"]},{"name":"tar","version":"6.2.1","files":["/package.json"]}],"references":[{"name":"@babel/cli","versions":[{"version":"7.26.4","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/code-frame","versions":[{"version":"7.26.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"@babel/compat-data","versions":[{"version":"7.26.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/core","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/helper-define-polyfill-provider","versions":[{"version":"0.6.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/helper-environment-visitor","versions":[{"version":"7.24.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/parser","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/plugin-proposal-class-properties","versions":[{"version":"7.18.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-proposal-object-rest-spread","versions":[{"version":"7.20.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-proposal-throw-expressions","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-syntax-object-rest-spread","versions":[{"version":"7.8.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/plugin-transform-modules-commonjs","versions":[{"version":"7.26.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/plugin-transform-runtime","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@babel/preset-env","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/preset-react","versions":[{"version":"7.26.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/preset-typescript","versions":[{"version":"7.26.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/register","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]}]}]},{"name":"@babel/runtime","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@babel/template","versions":[{"version":"7.25.9","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/traverse","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@babel/types","versions":[{"version":"7.26.7","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@commitlint/cli","versions":[{"version":"11.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@commitlint/config-conventional","versions":[{"version":"11.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@grpc/grpc-js","versions":[{"version":"1.11.1","files":[{"file":"/package.json","types":["devDependencies","resolutions"]}]}]},{"name":"@lexical/code","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/hashtag","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/headless","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]}]}]},{"name":"@lexical/history","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/html","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]}]}]},{"name":"@lexical/list","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/mark","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/overflow","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/react","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/rich-text","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/selection","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@lexical/text","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]}]}]},{"name":"@lexical/utils","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"@octokit/rest","versions":[{"version":"20.0.2","files":[{"file":"/package.json","types":["devDependencies","resolutions"]}]}]},{"name":"@types/fs-extra","versions":[{"version":"11.0.4","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@types/hoist-non-react-statics","versions":[{"version":"3.3.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@types/jest","versions":[{"version":"29.5.14","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@types/node","versions":[{"version":"20.17.10","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@types/prettier","versions":[{"version":"2.7.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"@types/react","versions":[{"version":"18.2.79","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies","resolutions"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"@types/react-dom","versions":[{"version":"18.2.25","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@typescript-eslint/eslint-plugin","versions":[{"version":"6.21.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"@typescript-eslint/parser","versions":[{"version":"6.21.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"adio","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"axios","versions":[{"version":"1.7.9","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-jest","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-loader","versions":[{"version":"9.2.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-dynamic-import-node","versions":[{"version":"2.3.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-macros","versions":[{"version":"3.1.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-module-resolver","versions":[{"version":"5.0.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"chalk","versions":[{"version":"4.1.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/aws-layers/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"cross-env","versions":[{"version":"5.2.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/apps/admin/package.json","types":["devDependencies"]},{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"cross-spawn","versions":[{"version":"6.0.6","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"deepmerge","versions":[{"version":"4.3.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"elliptic","versions":[{"version":"6.6.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"env-ci","versions":[{"version":"2.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"eslint","versions":[{"version":"8.57.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-config-standard","versions":[{"version":"16.0.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-import-resolver-babel-module","versions":[{"version":"5.3.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-import","versions":[{"version":"2.27.5","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-jest","versions":[{"version":"25.7.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-lodash","versions":[{"version":"7.4.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-node","versions":[{"version":"11.1.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-promise","versions":[{"version":"5.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-react","versions":[{"version":"7.32.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"eslint-plugin-standard","versions":[{"version":"5.0.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"execa","versions":[{"version":"5.1.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"folder-hash","versions":[{"version":"4.0.4","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"fs-extra","versions":[{"version":"11.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"get-stream","versions":[{"version":"3.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"get-yarn-workspaces","versions":[{"version":"1.0.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"git-cz","versions":[{"version":"1.7.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"github-actions-wac","versions":[{"version":"1.4.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"glob","versions":[{"version":"7.2.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"graphql","versions":[{"version":"15.9.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/api-headless-cms-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-bulk-actions/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"husky","versions":[{"version":"4.2.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer","versions":[{"version":"8.2.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]}]}]},{"name":"inquirer-autocomplete-prompt","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer-checkbox-plus-prompt","versions":[{"version":"1.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"inquirer-maxlength-input-prompt","versions":[{"version":"1.0.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"jest","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-sync-system/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]}]}]},{"name":"jest-environment-jsdom","versions":[{"version":"29.7.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"jest-extended","versions":[{"version":"4.0.2","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"lerna","versions":[{"version":"8.1.2","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"lexical","versions":[{"version":"0.23.1","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/lexical-converter/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]}]}]},{"name":"lint-staged","versions":[{"version":"15.3.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"listr","versions":[{"version":"0.14.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"load-json-file","versions":[{"version":"6.2.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"lodash","versions":[{"version":"4.17.21","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["dependencies"]},{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["dependencies"]},{"file":"/packages/api-sync-system/package.json","types":["dependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["dependencies"]},{"file":"/packages/i18n-react/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/packages/validation/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"longest","versions":[{"version":"2.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"micromatch","versions":[{"version":"4.0.8","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"minimatch","versions":[{"version":"5.1.6","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]}]}]},{"name":"nanoid","versions":[{"version":"3.3.8","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"node-fetch","versions":[{"version":"2.6.7","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]},{"file":"/packages/api-wcp/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/packages/wcp/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"pm2","versions":[{"version":"5.4.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"prettier","versions":[{"version":"2.8.8","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/react-properties/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]}]}]},{"name":"semver","versions":[{"version":"7.6.3","files":[{"file":"/package.json","types":["devDependencies","resolutions"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/system-requirements/package.json","types":["dependencies"]}]}]},{"name":"ts-expect","versions":[{"version":"1.3.0","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"ts-jest","versions":[{"version":"29.1.5","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"ts-jest-resolver","versions":[{"version":"2.0.1","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"ts-node","versions":[{"version":"10.9.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["devDependencies"]}]}]},{"name":"type-fest","versions":[{"version":"4.14.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["devDependencies"]}]}]},{"name":"typescript","versions":[{"version":"5.3.3","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-es/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-os/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-dynamodb-to-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-bulk-actions/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-es-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-tasks-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-sync-system/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["devDependencies"]},{"file":"/packages/app-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-utils/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["devDependencies"]},{"file":"/packages/app-website/package.json","types":["devDependencies"]},{"file":"/packages/app-websockets/package.json","types":["devDependencies"]},{"file":"/packages/aws-sdk/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/di-container/package.json","types":["devDependencies"]},{"file":"/packages/error/package.json","types":["devDependencies"]},{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/handler/package.json","types":["devDependencies"]},{"file":"/packages/handler-aws/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-db/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/i18n-react/package.json","types":["devDependencies"]},{"file":"/packages/ioc/package.json","types":["devDependencies"]},{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pubsub/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/react-composition/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]},{"file":"/packages/react-router/package.json","types":["devDependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["devDependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/packages/ui-composer/package.json","types":["devDependencies"]},{"file":"/packages/utils/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]},{"file":"/packages/wcp/package.json","types":["devDependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"typescript-transform-paths","versions":[{"version":"3.5.3","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"verdaccio","versions":[{"version":"6.0.5","files":[{"file":"/package.json","types":["devDependencies"]}]}]},{"name":"write-json-file","versions":[{"version":"4.3.0","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"yargs","versions":[{"version":"17.7.2","files":[{"file":"/package.json","types":["devDependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/i18n/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"systeminformation","versions":[{"version":"5.23.18","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"@emotion/react","versions":[{"version":"11.10.8","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@types/webpack","versions":[{"version":"5.28.0","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"react","versions":[{"version":"18.2.0","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["peerDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme/package.json","types":["peerDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/app-websockets/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/admin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/pbElement/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/templates/website/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/form/package.json","types":["peerDependencies"]},{"file":"/packages/i18n/package.json","types":["peerDependencies"]},{"file":"/packages/i18n-react/package.json","types":["peerDependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/lexical-nodes/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-properties/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies","peerDependencies"]},{"file":"/packages/theme/package.json","types":["peerDependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]},{"file":"/packages/ui-composer/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"react-dom","versions":[{"version":"18.2.0","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/app-websockets/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["resolutions"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["resolutions"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/react-composition/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["peerDependencies"]},{"file":"/packages/ui-composer/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"tar","versions":[{"version":"6.2.1","files":[{"file":"/package.json","types":["resolutions"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]}]}]},{"name":"postcss","versions":[{"version":"8.4.35","files":[{"file":"/package.json","types":["resolutions"]}]}]},{"name":"rimraf","versions":[{"version":"6.0.1","files":[{"file":"/packages/api/package.json","types":["devDependencies"]},{"file":"/packages/api-aco/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-es/package.json","types":["devDependencies"]},{"file":"/packages/api-background-tasks-os/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch/package.json","types":["devDependencies"]},{"file":"/packages/api-elasticsearch-tasks/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-aws/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/api-sync-system/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/api-websockets/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]},{"file":"/packages/app-plugin-admin-welcome-screen/package.json","types":["devDependencies"]},{"file":"/packages/app-record-locking/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["devDependencies"]},{"file":"/packages/app-website/package.json","types":["devDependencies"]},{"file":"/packages/app-websockets/package.json","types":["devDependencies"]},{"file":"/packages/aws-sdk/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-dependencies/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/template/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/error/package.json","types":["devDependencies"]},{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/handler/package.json","types":["devDependencies"]},{"file":"/packages/handler-aws/package.json","types":["devDependencies"]},{"file":"/packages/handler-client/package.json","types":["devDependencies"]},{"file":"/packages/handler-db/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/i18n-react/package.json","types":["devDependencies"]},{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/pubsub/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]},{"file":"/packages/react-router/package.json","types":["devDependencies"]},{"file":"/packages/tasks/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]},{"file":"/packages/ui-composer/package.json","types":["devDependencies"]},{"file":"/packages/utils/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]},{"file":"/packages/wcp/package.json","types":["devDependencies"]}]}]},{"name":"apollo-graphql","versions":[{"version":"0.9.5","files":[{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]}]}]},{"name":"jest-dynalite","versions":[{"version":"3.6.1","files":[{"file":"/packages/api-admin-settings/package.json","types":["devDependencies"]},{"file":"/packages/api-admin-users-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-apw-scheduler-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-authentication/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-i18n-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-log/package.json","types":["devDependencies"]},{"file":"/packages/api-mailer/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-prerendering-service-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-security-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-sync-system/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/api-tenancy-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/api-wcp/package.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"dataloader","versions":[{"version":"2.2.2","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-tenancy/package.json","types":["dependencies"]}]}]},{"name":"md5","versions":[{"version":"2.3.0","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]}]}]},{"name":"zod","versions":[{"version":"3.23.8","files":[{"file":"/packages/api-admin-users/package.json","types":["dependencies"]},{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-tasks/package.json","types":["dependencies"]},{"file":"/packages/api-log/package.json","types":["dependencies"]},{"file":"/packages/api-mailer/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-sync-system/package.json","types":["dependencies"]},{"file":"/packages/api-websockets/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/ioc/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["peerDependencies"]}]}]},{"name":"@types/jsonwebtoken","versions":[{"version":"9.0.2","files":[{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]},{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-security/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["devDependencies"]}]}]},{"name":"@types/md5","versions":[{"version":"2.3.2","files":[{"file":"/packages/api-admin-users/package.json","types":["devDependencies"]}]}]},{"name":"dayjs","versions":[{"version":"1.11.13","files":[{"file":"/packages/api-apw/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"jsonwebtoken","versions":[{"version":"9.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]}]}]},{"name":"jwk-to-pem","versions":[{"version":"2.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["dependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["dependencies"]},{"file":"/packages/api-security-okta/package.json","types":["dependencies"]}]}]},{"name":"@types/jwk-to-pem","versions":[{"version":"2.0.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]}]}]},{"name":"@types/node-fetch","versions":[{"version":"2.6.1","files":[{"file":"/packages/api-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]},{"file":"/packages/api-security-auth0/package.json","types":["devDependencies"]},{"file":"/packages/api-security-okta/package.json","types":["devDependencies"]}]}]},{"name":"p-retry","versions":[{"version":"4.6.2","files":[{"file":"/packages/api-dynamodb-to-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"@elastic/elasticsearch","versions":[{"version":"7.12.0","files":[{"file":"/packages/api-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["devDependencies"]},{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"elastic-ts","versions":[{"version":"0.12.0","files":[{"file":"/packages/api-elasticsearch/package.json","types":["dependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-so-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/migrations/package.json","types":["devDependencies"]}]}]},{"name":"cache-control-parser","versions":[{"version":"2.0.6","files":[{"file":"/packages/api-file-manager/package.json","types":["dependencies"]}]}]},{"name":"object-hash","versions":[{"version":"3.0.0","files":[{"file":"/packages/api-file-manager/package.json","types":["dependencies"]},{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"ttypescript","versions":[{"version":"1.5.15","files":[{"file":"/packages/api-file-manager-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]}]}]},{"name":"jsonpack","versions":[{"version":"1.1.5","files":[{"file":"/packages/api-file-manager-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]}]}]},{"name":"form-data","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]}]}]},{"name":"mime","versions":[{"version":"3.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["devDependencies"]}]}]},{"name":"p-map","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"p-reduce","versions":[{"version":"2.1.0","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"sanitize-filename","versions":[{"version":"1.6.3","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]}]}]},{"name":"sharp","versions":[{"version":"0.32.6","files":[{"file":"/packages/api-file-manager-s3/package.json","types":["dependencies"]}]}]},{"name":"date-fns","versions":[{"version":"2.22.1","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"json2csv","versions":[{"version":"4.5.4","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"slugify","versions":[{"version":"1.6.6","files":[{"file":"/packages/api-form-builder/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@types/json2csv","versions":[{"version":"4.5.1","files":[{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"csvtojson","versions":[{"version":"2.0.10","files":[{"file":"/packages/api-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-form-builder-so-ddb-es/package.json","types":["devDependencies"]}]}]},{"name":"@graphql-tools/merge","versions":[{"version":"9.0.4","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/schema","versions":[{"version":"10.0.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"dot-prop","versions":[{"version":"6.0.1","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-headless-cms-ddb/package.json","types":["dependencies"]},{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"graphql-tag","versions":[{"version":"2.12.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager-s3/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"jsdom","versions":[{"version":"25.0.1","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/lexical-converter/package.json","types":["devDependencies"]}]}]},{"name":"pluralize","versions":[{"version":"8.0.0","files":[{"file":"/packages/api-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]}]}]},{"name":"@types/babel__code-frame","versions":[{"version":"7.0.6","files":[{"file":"/packages/api-headless-cms/package.json","types":["devDependencies"]}]}]},{"name":"@types/jsonpack","versions":[{"version":"1.1.6","files":[{"file":"/packages/api-headless-cms-ddb/package.json","types":["devDependencies"]},{"file":"/packages/api-headless-cms-ddb-es/package.json","types":["devDependencies"]}]}]},{"name":"@faker-js/faker","versions":[{"version":"9.3.0","files":[{"file":"/packages/api-headless-cms-es-tasks/package.json","types":["devDependencies"]}]}]},{"name":"@smithy/node-http-handler","versions":[{"version":"2.1.6","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"archiver","versions":[{"version":"7.0.1","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"bytes","versions":[{"version":"3.1.2","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"uniqid","versions":[{"version":"5.4.0","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/plugins/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"unzipper","versions":[{"version":"0.12.3","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/adm-zip","versions":[{"version":"0.5.5","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@types/unzipper","versions":[{"version":"0.10.10","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"adm-zip","versions":[{"version":"0.5.14","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"aws-sdk-client-mock","versions":[{"version":"4.1.0","files":[{"file":"/packages/api-headless-cms-import-export/package.json","types":["devDependencies"]}]}]},{"name":"accept-language-parser","versions":[{"version":"1.5.0","files":[{"file":"/packages/api-i18n/package.json","types":["dependencies"]}]}]},{"name":"i18n-locales","versions":[{"version":"0.0.5","files":[{"file":"/packages/api-i18n/package.json","types":["dependencies"]}]}]},{"name":"@types/accept-language-parser","versions":[{"version":"1.5.3","files":[{"file":"/packages/api-i18n/package.json","types":["devDependencies"]}]}]},{"name":"crypto-js","versions":[{"version":"4.2.0","files":[{"file":"/packages/api-mailer/package.json","types":["dependencies"]}]}]},{"name":"nodemailer","versions":[{"version":"6.9.16","files":[{"file":"/packages/api-mailer/package.json","types":["dependencies"]}]}]},{"name":"@types/crypto-js","versions":[{"version":"4.2.2","files":[{"file":"/packages/api-mailer/package.json","types":["devDependencies"]}]}]},{"name":"@types/nodemailer","versions":[{"version":"6.4.17","files":[{"file":"/packages/api-mailer/package.json","types":["devDependencies"]}]}]},{"name":"extract-zip","versions":[{"version":"1.6.7","files":[{"file":"/packages/api-page-builder/package.json","types":["dependencies"]}]}]},{"name":"stream","versions":[{"version":"0.0.3","files":[{"file":"/packages/api-page-builder/package.json","types":["dependencies"]},{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/extract-zip","versions":[{"version":"1.6.2","files":[{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/rimraf","versions":[{"version":"3.0.2","files":[{"file":"/packages/api-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"dot-prop-immutable","versions":[{"version":"2.1.1","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"yauzl","versions":[{"version":"2.10.0","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["dependencies"]}]}]},{"name":"@types/archiver","versions":[{"version":"5.3.1","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@types/yauzl","versions":[{"version":"2.9.2","files":[{"file":"/packages/api-page-builder-import-export/package.json","types":["devDependencies"]}]}]},{"name":"@sparticuz/chromium","versions":[{"version":"131.0.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml","versions":[{"version":"0.15.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml-noopener","versions":[{"version":"1.0.5","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"posthtml-plugin-link-preload","versions":[{"version":"1.0.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"puppeteer-core","versions":[{"version":"23.11.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]}]}]},{"name":"srcset","versions":[{"version":"4.0.0","files":[{"file":"/packages/api-prerendering-service/package.json","types":["dependencies"]},{"file":"/packages/aws-helpers/package.json","types":["dependencies"]}]}]},{"name":"@types/object-hash","versions":[{"version":"2.2.1","files":[{"file":"/packages/api-prerendering-service/package.json","types":["devDependencies"]}]}]},{"name":"deep-equal","versions":[{"version":"2.2.3","files":[{"file":"/packages/api-security/package.json","types":["dependencies"]},{"file":"/packages/api-security-cognito/package.json","types":["dependencies"]},{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"@types/lodash","versions":[{"version":"4.17.13","files":[{"file":"/packages/api-sync-system/package.json","types":["devDependencies"]},{"file":"/packages/app/package.json","types":["devDependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["devDependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/i18n/package.json","types":["devDependencies"]},{"file":"/packages/pulumi/package.json","types":["devDependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["devDependencies"]},{"file":"/packages/validation/package.json","types":["devDependencies"]}]}]},{"name":"@apollo/react-hooks","versions":[{"version":"3.1.5","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@emotion/styled","versions":[{"version":"11.10.6","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"apollo-cache","versions":[{"version":"1.3.5","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]}]}]},{"name":"apollo-cache-inmemory","versions":[{"version":"1.6.6","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-client","versions":[{"version":"2.6.10","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"apollo-link","versions":[{"version":"1.2.14","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-aco/package.json","types":["devDependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["devDependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-context","versions":[{"version":"1.0.20","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-error","versions":[{"version":"1.1.13","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-http-common","versions":[{"version":"0.2.16","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"apollo-utilities","versions":[{"version":"1.3.4","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/app-wcp/package.json","types":["dependencies"]}]}]},{"name":"boolean","versions":[{"version":"3.2.0","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"invariant","versions":[{"version":"2.2.4","files":[{"file":"/packages/app/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"ts-invariant","versions":[{"version":"0.10.3","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"warning","versions":[{"version":"4.0.2","files":[{"file":"/packages/app/package.json","types":["dependencies"]}]}]},{"name":"@types/warning","versions":[{"version":"3.0.0","files":[{"file":"/packages/app/package.json","types":["devDependencies"]}]}]},{"name":"@material-design-icons/svg","versions":[{"version":"0.14.13","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-record-locking/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-pb-element/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@material-symbols/svg-400","versions":[{"version":"0.4.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@minoru/react-dnd-treeview","versions":[{"version":"3.2.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]}]}]},{"name":"mobx","versions":[{"version":"6.9.0","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/app-utils/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"mobx-react-lite","versions":[{"version":"3.4.3","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-trash-bin/package.json","types":["dependencies"]},{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"pako","versions":[{"version":"2.1.0","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-dnd","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-hotkeyz","versions":[{"version":"1.0.4","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"store","versions":[{"version":"2.0.12","files":[{"file":"/packages/app-aco/package.json","types":["dependencies"]},{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenancy/package.json","types":["dependencies"]}]}]},{"name":"@apollo/react-components","versions":[{"version":"3.1.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/editorjs","versions":[{"version":"2.26.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@iconify/json","versions":[{"version":"2.2.142","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@monaco-editor/react","versions":[{"version":"4.7.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@svgr/webpack","versions":[{"version":"6.1.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@types/mime","versions":[{"version":"2.0.3","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"classnames","versions":[{"version":"2.5.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"downshift","versions":[{"version":"3.1.2","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]},{"version":"2.1.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"emotion","versions":[{"version":"10.0.27","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-audit-logs/package.json","types":["dependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/lexical-theme/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"graphlib","versions":[{"version":"2.1.8","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"is-hotkey","versions":[{"version":"0.2.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"prop-types","versions":[{"version":"15.8.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-i18n/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["dependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"react-draggable","versions":[{"version":"4.4.6","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-resizable","versions":[{"version":"3.0.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-resizable-panels","versions":[{"version":"2.0.19","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"react-transition-group","versions":[{"version":"4.4.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-virtualized","versions":[{"version":"9.22.5","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"reset-css","versions":[{"version":"5.0.1","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"unicode-emoji-json","versions":[{"version":"0.4.0","files":[{"file":"/packages/app-admin/package.json","types":["dependencies"]}]}]},{"name":"@emotion/babel-plugin","versions":[{"version":"11.11.0","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-apw/package.json","types":["devDependencies"]},{"file":"/packages/app-dynamic-pages/package.json","types":["devDependencies"]},{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-graphql-playground/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n/package.json","types":["devDependencies"]},{"file":"/packages/app-i18n-content/package.json","types":["devDependencies"]},{"file":"/packages/app-mailer/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]},{"file":"/packages/app-security/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-tenancy/package.json","types":["devDependencies"]},{"file":"/packages/app-tenant-manager/package.json","types":["devDependencies"]},{"file":"/packages/app-theme/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]},{"file":"/packages/theme/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/bytes","versions":[{"version":"3.1.4","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/graphlib","versions":[{"version":"2.1.12","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/is-hotkey","versions":[{"version":"0.1.10","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-resizable","versions":[{"version":"3.0.8","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@types/store","versions":[{"version":"2.0.2","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]},{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"monaco-editor","versions":[{"version":"0.52.2","files":[{"file":"/packages/app-admin/package.json","types":["devDependencies"]}]}]},{"name":"@auth0/auth0-react","versions":[{"version":"2.2.4","files":[{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]}]}]},{"name":"react-helmet","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-admin-auth0/package.json","types":["dependencies"]},{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]},{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]},{"file":"/packages/app-admin-users-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-mailer/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@aws-amplify/auth","versions":[{"version":"5.6.15","files":[{"file":"/packages/app-admin-cognito/package.json","types":["dependencies"]},{"file":"/packages/app-cognito-authenticator/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-auth-js","versions":[{"version":"5.3.1","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-react","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@okta/okta-signin-widget","versions":[{"version":"5.9.4","files":[{"file":"/packages/app-admin-okta/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/base","versions":[{"version":"14.3.5","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/provider","versions":[{"version":"14.3.5","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["dependencies"]}]}]},{"name":"@types/react-helmet","versions":[{"version":"6.1.11","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-security-access-management/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["devDependencies"]},{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"babel-plugin-named-asset-import","versions":[{"version":"1.0.0-next.3e165448","files":[{"file":"/packages/app-admin-rmwc/package.json","types":["devDependencies"]},{"file":"/packages/app-serverless-cms/package.json","types":["devDependencies"]},{"file":"/packages/app-theme-manager/package.json","types":["devDependencies"]}]}]},{"name":"@emotion/is-prop-valid","versions":[{"version":"1.1.1","files":[{"file":"/packages/app-apw/package.json","types":["dependencies"]}]}]},{"name":"react-spinner-material","versions":[{"version":"1.1.4","files":[{"file":"/packages/app-apw/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/fontawesome-svg-core","versions":[{"version":"1.3.0","files":[{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/react-fontawesome","versions":[{"version":"0.1.17","files":[{"file":"/packages/app-dynamic-pages/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@apollo/react-common","versions":[{"version":"3.1.4","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"dataurl-to-blob","versions":[{"version":"0.0.1","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"react-butterfiles","versions":[{"version":"1.3.3","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-custom-scrollbars","versions":[{"version":"4.2.1","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-lazy-load","versions":[{"version":"3.1.14","files":[{"file":"/packages/app-file-manager/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/core","versions":[{"version":"6.1.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/sortable","versions":[{"version":"8.0.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"@dnd-kit/utilities","versions":[{"version":"3.2.2","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]}]}]},{"name":"dnd-core","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms-common/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"history","versions":[{"version":"5.3.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/react-router/package.json","types":["dependencies"]}]}]},{"name":"react-dnd-html5-backend","versions":[{"version":"16.0.1","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-google-recaptcha","versions":[{"version":"1.1.0","files":[{"file":"/packages/app-form-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"@types/gtag.js","versions":[{"version":"0.0.20","files":[{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-google-recaptcha","versions":[{"version":"1.1.2","files":[{"file":"/packages/app-form-builder/package.json","types":["devDependencies"]}]}]},{"name":"load-script","versions":[{"version":"1.0.0","files":[{"file":"/packages/app-graphql-playground/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/fontawesome-common-types","versions":[{"version":"0.3.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-brands-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-regular-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"@fortawesome/free-solid-svg-icons","versions":[{"version":"6.0.0","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"raw.macro","versions":[{"version":"0.4.2","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"use-deep-compare-effect","versions":[{"version":"1.8.1","files":[{"file":"/packages/app-headless-cms/package.json","types":["dependencies"]}]}]},{"name":"@types/medium-editor","versions":[{"version":"5.0.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"aos","versions":[{"version":"2.3.4","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"dnd-kit-sortable-tree","versions":[{"version":"0.1.73","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"medium-editor","versions":[{"version":"5.23.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"platform","versions":[{"version":"1.3.5","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-color","versions":[{"version":"2.19.3","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/lexical-editor-actions/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-images","versions":[{"version":"0.5.19","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"react-in-viewport","versions":[{"version":"1.0.0-alpha.30","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"react-sortable","versions":[{"version":"2.0.0","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"recoil","versions":[{"version":"0.7.7","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]}]}]},{"name":"swiper","versions":[{"version":"9.3.2","files":[{"file":"/packages/app-page-builder/package.json","types":["dependencies"]},{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]}]}]},{"name":"@types/aos","versions":[{"version":"3.0.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/pako","versions":[{"version":"2.0.3","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/platform","versions":[{"version":"1.3.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-images","versions":[{"version":"0.5.3","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-virtualized","versions":[{"version":"9.21.16","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"@types/resize-observer-browser","versions":[{"version":"0.1.4","files":[{"file":"/packages/app-page-builder/package.json","types":["devDependencies"]}]}]},{"name":"facepaint","versions":[{"version":"1.2.1","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["dependencies"]}]}]},{"name":"@types/facepaint","versions":[{"version":"1.2.2","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["devDependencies"]}]}]},{"name":"react-columned","versions":[{"version":"1.1.3","files":[{"file":"/packages/app-page-builder-elements/package.json","types":["peerDependencies"]},{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"crypto-hash","versions":[{"version":"3.0.0","files":[{"file":"/packages/app-record-locking/package.json","types":["dependencies"]}]}]},{"name":"apollo-link-batch-http","versions":[{"version":"1.2.14","files":[{"file":"/packages/app-serverless-cms/package.json","types":["dependencies"]},{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@emotion/cache","versions":[{"version":"11.10.5","files":[{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"lz-string","versions":[{"version":"1.5.0","files":[{"file":"/packages/app-website/package.json","types":["dependencies"]}]}]},{"name":"@types/aws-lambda","versions":[{"version":"8.10.145","files":[{"file":"/packages/aws-helpers/package.json","types":["dependencies"]},{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"cheerio","versions":[{"version":"1.0.0-rc.10","files":[{"file":"/packages/aws-helpers/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-apigatewaymanagementapi","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudfront","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudwatch-events","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cloudwatch-logs","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-cognito-identity-provider","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-dynamodb-streams","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-eventbridge","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-iam","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-iot","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-lambda","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-s3","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sfn","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sqs","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/client-sts","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/credential-providers","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/lib-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/lib-storage","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/s3-presigned-post","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/s3-request-presigner","versions":[{"version":"3.735.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"@aws-sdk/util-dynamodb","versions":[{"version":"3.734.0","files":[{"file":"/packages/aws-sdk/package.json","types":["dependencies"]}]}]},{"name":"camelcase","versions":[{"version":"6.3.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ci-info","versions":[{"version":"4.1.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"dotenv","versions":[{"version":"8.2.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["devDependencies"]}]}]},{"name":"fast-glob","versions":[{"version":"3.2.7","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies","devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"find-up","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]},{"file":"/scripts/prepublishOnly/package.json","types":["dependencies"]}]}]},{"name":"graphql-request","versions":[{"version":"3.7.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/cypress-tests/package.json","types":["devDependencies"]},{"file":"/apps/api/graphql/package.json","types":["devDependencies"]}]}]},{"name":"ncp","versions":[{"version":"2.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"open","versions":[{"version":"8.4.2","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]}]}]},{"name":"pirates","versions":[{"version":"4.0.6","files":[{"file":"/packages/cli/package.json","types":["dependencies"]}]}]},{"name":"ts-morph","versions":[{"version":"11.0.0","files":[{"file":"/packages/cli/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]}]}]},{"name":"exit-hook","versions":[{"version":"4.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"humanize-duration","versions":[{"version":"3.32.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"log-update","versions":[{"version":"4.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"mqtt","versions":[{"version":"5.10.3","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"node-notifier","versions":[{"version":"10.0.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"ora","versions":[{"version":"4.1.1","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"replace-in-path","versions":[{"version":"1.1.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]}]}]},{"name":"serialize-error","versions":[{"version":"8.0.0","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["dependencies"]}]}]},{"name":"@types/humanize-duration","versions":[{"version":"3.27.4","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"@types/listr","versions":[{"version":"0.14.9","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"@types/node-notifier","versions":[{"version":"8.0.5","files":[{"file":"/packages/cli-plugin-deploy-pulumi/package.json","types":["devDependencies"]}]}]},{"name":"case","versions":[{"version":"1.6.3","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]}]}]},{"name":"validate-npm-package-name","versions":[{"version":"3.0.0","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["dependencies"]},{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"@types/inquirer","versions":[{"version":"8.2.10","files":[{"file":"/packages/cli-plugin-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"terminal-link","versions":[{"version":"2.1.1","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["dependencies"]}]}]},{"name":"@types/ncp","versions":[{"version":"2.0.4","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"@types/pluralize","versions":[{"version":"0.0.29","files":[{"file":"/packages/cli-plugin-scaffold-admin-app-module/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-graphql-service/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"js-base64","versions":[{"version":"3.7.7","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]}]}]},{"name":"octokit","versions":[{"version":"3.1.2","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["dependencies"]}]}]},{"name":"@types/validate-npm-package-name","versions":[{"version":"3.0.3","files":[{"file":"/packages/cli-plugin-scaffold-ci/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-extensions/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["devDependencies"]},{"file":"/packages/cli-plugin-scaffold-workspaces/package.json","types":["devDependencies"]}]}]},{"name":"indent-string","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli-plugin-scaffold-react-component/package.json","types":["dependencies"]}]}]},{"name":"archy","versions":[{"version":"1.0.0","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"color","versions":[{"version":"4.2.3","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"multimatch","versions":[{"version":"5.0.0","files":[{"file":"/packages/cli-plugin-workspaces/package.json","types":["dependencies"]}]}]},{"name":"js-yaml","versions":[{"version":"3.14.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"os","versions":[{"version":"0.1.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"uuid","versions":[{"version":"9.0.1","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]},{"file":"/packages/global-config/package.json","types":["dependencies"]}]}]},{"name":"yesno","versions":[{"version":"0.4.0","files":[{"file":"/packages/create-webiny-project/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/delimiter","versions":[{"version":"1.4.2","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/list","versions":[{"version":"1.10.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/quote","versions":[{"version":"2.7.2","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"@editorjs/underline","versions":[{"version":"1.2.1","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"core-js","versions":[{"version":"3.39.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"cross-fetch","versions":[{"version":"3.1.5","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"regenerator-runtime","versions":[{"version":"0.13.11","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"theme","versions":[{"version":"1.0.0","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/packages/cwp-template-aws/template/common/apps/website/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/website/package.json","types":["dependencies"]}]}]},{"name":"tslib","versions":[{"version":"2.8.1","files":[{"file":"/packages/cwp-template-aws/template/common/apps/admin/package.json","types":["dependencies"]},{"file":"/apps/admin/package.json","types":["dependencies"]}]}]},{"name":"react-hamburger-menu","versions":[{"version":"1.2.1","files":[{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["dependencies"]},{"file":"/extensions/theme/package.json","types":["dependencies"]}]}]},{"name":"@types/react-hamburger-menu","versions":[{"version":"0.0.4","files":[{"file":"/packages/cwp-template-aws/template/common/extensions/theme/package.json","types":["devDependencies"]},{"file":"/extensions/theme/package.json","types":["devDependencies"]}]}]},{"name":"merge","versions":[{"version":"2.1.1","files":[{"file":"/packages/cwp-template-aws/template/ddb-es/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb-os/dependencies.json","types":["devDependencies"]},{"file":"/packages/cwp-template-aws/template/ddb/dependencies.json","types":["devDependencies"]}]}]},{"name":"center-align","versions":[{"version":"1.0.1","files":[{"file":"/packages/data-migration/package.json","types":["dependencies"]}]}]},{"name":"pino-pretty","versions":[{"version":"9.4.0","files":[{"file":"/packages/data-migration/package.json","types":["dependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"@types/center-align","versions":[{"version":"1.0.0","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]}]}]},{"name":"@types/semver","versions":[{"version":"7.3.4","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]}]}]},{"name":"jest-mock-console","versions":[{"version":"2.0.0","files":[{"file":"/packages/data-migration/package.json","types":["devDependencies"]},{"file":"/packages/handler-graphql/package.json","types":["devDependencies"]}]}]},{"name":"dynamodb-toolbox","versions":[{"version":"0.9.2","files":[{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"fuse.js","versions":[{"version":"7.0.0","files":[{"file":"/packages/db-dynamodb/package.json","types":["dependencies"]}]}]},{"name":"@types/is-number","versions":[{"version":"7.0.5","files":[{"file":"/packages/db-dynamodb/package.json","types":["devDependencies"]}]}]},{"name":"reflect-metadata","versions":[{"version":"0.2.2","files":[{"file":"/packages/di-container/package.json","types":["dependencies"]},{"file":"/packages/ioc/package.json","types":["dependencies"]}]}]},{"name":"@types/uniqid","versions":[{"version":"5.3.2","files":[{"file":"/packages/feature-flags/package.json","types":["devDependencies"]},{"file":"/packages/plugins/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/react","versions":[{"version":"15.0.7","files":[{"file":"/packages/form/package.json","types":["devDependencies"]},{"file":"/packages/react-composition/package.json","types":["devDependencies"]},{"file":"/packages/react-properties/package.json","types":["devDependencies"]},{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/user-event","versions":[{"version":"14.5.2","files":[{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"@types/invariant","versions":[{"version":"2.2.35","files":[{"file":"/packages/form/package.json","types":["devDependencies"]}]}]},{"name":"@fastify/compress","versions":[{"version":"7.0.3","files":[{"file":"/packages/handler/package.json","types":["dependencies"]}]}]},{"name":"@fastify/cookie","versions":[{"version":"9.4.0","files":[{"file":"/packages/handler/package.json","types":["dependencies"]}]}]},{"name":"fastify","versions":[{"version":"4.29.0","files":[{"file":"/packages/handler/package.json","types":["dependencies"]},{"file":"/packages/handler-aws/package.json","types":["dependencies"]}]}]},{"name":"@fastify/aws-lambda","versions":[{"version":"4.1.0","files":[{"file":"/packages/handler-aws/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/resolvers-composition","versions":[{"version":"7.0.1","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"@graphql-tools/utils","versions":[{"version":"10.3.1","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"graphql-scalars","versions":[{"version":"1.12.0","files":[{"file":"/packages/handler-graphql/package.json","types":["dependencies"]}]}]},{"name":"accounting","versions":[{"version":"0.4.1","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"fecha","versions":[{"version":"2.3.3","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"short-hash","versions":[{"version":"1.0.0","files":[{"file":"/packages/i18n/package.json","types":["dependencies"]}]}]},{"name":"@types/accounting","versions":[{"version":"0.4.2","files":[{"file":"/packages/i18n/package.json","types":["devDependencies"]}]}]},{"name":"inversify","versions":[{"version":"6.1.6","files":[{"file":"/packages/ioc/package.json","types":["dependencies"]}]}]},{"name":"@types/jsdom","versions":[{"version":"21.1.6","files":[{"file":"/packages/lexical-converter/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-color","versions":[{"version":"2.17.11","files":[{"file":"/packages/lexical-editor-actions/package.json","types":["devDependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/prismjs","versions":[{"version":"1.26.4","files":[{"file":"/packages/lexical-nodes/package.json","types":["dependencies"]}]}]},{"name":"react-style-object-to-css","versions":[{"version":"1.1.2","files":[{"file":"/packages/lexical-theme/package.json","types":["dependencies"]}]}]},{"name":"pino","versions":[{"version":"8.21.0","files":[{"file":"/packages/logger/package.json","types":["devDependencies"]},{"file":"/packages/project-utils/package.json","types":["devDependencies"]}]}]},{"name":"@pmmmwh/react-refresh-webpack-plugin","versions":[{"version":"0.5.15","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@rspack/core","versions":[{"version":"1.2.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"@types/webpack-env","versions":[{"version":"1.18.5","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"assert-browserify","versions":[{"version":"2.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"buffer","versions":[{"version":"6.0.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"bufferutil","versions":[{"version":"4.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"case-sensitive-paths-webpack-plugin","versions":[{"version":"2.4.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"crypto-browserify","versions":[{"version":"3.12.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"css-loader","versions":[{"version":"6.10.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"css-minimizer-webpack-plugin","versions":[{"version":"7.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-config-react-app","versions":[{"version":"6.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"eslint-webpack-plugin","versions":[{"version":"4.2.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"file-loader","versions":[{"version":"6.2.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"fork-ts-checker-webpack-plugin","versions":[{"version":"9.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"html-webpack-plugin","versions":[{"version":"5.6.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"mini-css-extract-plugin","versions":[{"version":"2.4.5","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"null-loader","versions":[{"version":"4.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"os-browserify","versions":[{"version":"0.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"path-browserify","versions":[{"version":"1.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-flexbugs-fixes","versions":[{"version":"5.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-loader","versions":[{"version":"6.2.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-normalize","versions":[{"version":"10.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"postcss-preset-env","versions":[{"version":"9.4.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"process","versions":[{"version":"0.11.10","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"raw-loader","versions":[{"version":"4.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"react-dev-utils","versions":[{"version":"12.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"react-refresh","versions":[{"version":"0.11.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"read-json-sync","versions":[{"version":"2.0.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"resolve","versions":[{"version":"1.22.8","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"resolve-url-loader","versions":[{"version":"5.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"sass","versions":[{"version":"1.44.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"sass-loader","versions":[{"version":"12.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"scheduler","versions":[{"version":"0.19.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"source-map-loader","versions":[{"version":"1.1.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"source-map-support","versions":[{"version":"0.5.21","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"style-loader","versions":[{"version":"3.3.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"terser-webpack-plugin","versions":[{"version":"5.3.10","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ts-checker-rspack-plugin","versions":[{"version":"1.0.3","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"ts-patch","versions":[{"version":"3.3.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"url","versions":[{"version":"0.11.4","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"url-loader","versions":[{"version":"4.1.1","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"utf-8-validate","versions":[{"version":"5.0.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"vm-browserify","versions":[{"version":"1.1.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpack","versions":[{"version":"5.97.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"webpack-dev-server","versions":[{"version":"4.15.2","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpack-manifest-plugin","versions":[{"version":"5.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"webpackbar","versions":[{"version":"7.0.0","files":[{"file":"/packages/project-utils/package.json","types":["dependencies"]}]}]},{"name":"listr2","versions":[{"version":"5.0.8","files":[{"file":"/packages/project-utils/package.json","types":["devDependencies"]},{"file":"/scripts/buildPackages/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/pulumi","versions":[{"version":"3.147.0","files":[{"file":"/packages/pulumi/package.json","types":["dependencies"]},{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/aws","versions":[{"version":"6.67.0","files":[{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]},{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]},{"file":"/packages/serverless-cms-aws/package.json","types":["dependencies"]}]}]},{"name":"@pulumi/random","versions":[{"version":"4.17.0","files":[{"file":"/packages/pulumi-aws/package.json","types":["dependencies"]}]}]},{"name":"decompress","versions":[{"version":"4.2.1","files":[{"file":"/packages/pulumi-sdk/package.json","types":["dependencies"]}]}]},{"name":"identity-obj-proxy","versions":[{"version":"3.0.0","files":[{"file":"/packages/react-rich-text-lexical-renderer/package.json","types":["devDependencies"]}]}]},{"name":"sanitize-html","versions":[{"version":"2.12.1","files":[{"file":"/packages/react-rich-text-renderer/package.json","types":["dependencies"]}]}]},{"name":"@types/sanitize-html","versions":[{"version":"2.9.0","files":[{"file":"/packages/react-rich-text-renderer/package.json","types":["devDependencies"]}]}]},{"name":"react-router-dom","versions":[{"version":"6.3.0","files":[{"file":"/packages/react-router/package.json","types":["dependencies"]}]}]},{"name":"cli-table3","versions":[{"version":"0.6.5","files":[{"file":"/packages/system-requirements/package.json","types":["dependencies"]}]}]},{"name":"object-merge-advanced","versions":[{"version":"12.1.0","files":[{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"object-sizeof","versions":[{"version":"2.6.4","files":[{"file":"/packages/tasks/package.json","types":["dependencies"]}]}]},{"name":"jsesc","versions":[{"version":"3.0.2","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"strip-ansi","versions":[{"version":"6.0.1","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"wts-client","versions":[{"version":"1.0.1","files":[{"file":"/packages/telemetry/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/button","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/checkbox","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/chip","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/data-table","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/dialog","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/drawer","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/elevation","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/fab","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/grid","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/icon-button","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/list","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/menu","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/radio","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/ripple","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/select","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/slider","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/snackbar","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/switch","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/tabs","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/textfield","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/top-app-bar","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/touch-target","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@rmwc/typography","versions":[{"version":"14.3.5","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@tanstack/react-table","versions":[{"version":"8.5.22","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"brace","versions":[{"version":"0.11.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"cropperjs","versions":[{"version":"1.4.3","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"keycode","versions":[{"version":"2.2.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"material-components-web","versions":[{"version":"14.0.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"nprogress","versions":[{"version":"0.2.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"nuka-carousel","versions":[{"version":"4.7.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"rc-tooltip","versions":[{"version":"5.3.1","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-ace","versions":[{"version":"6.1.4","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"react-loading-skeleton","versions":[{"version":"3.1.0","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"timeago-react","versions":[{"version":"3.0.6","files":[{"file":"/packages/ui/package.json","types":["dependencies"]}]}]},{"name":"@types/nprogress","versions":[{"version":"0.2.0","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-custom-scrollbars","versions":[{"version":"4.0.10","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"@types/react-transition-group","versions":[{"version":"4.4.4","files":[{"file":"/packages/ui/package.json","types":["devDependencies"]}]}]},{"name":"p-wait-for","versions":[{"version":"4.1.0","files":[{"file":"/packages/ui-composer/package.json","types":["dependencies"]}]}]},{"name":"mdbid","versions":[{"version":"1.0.0","files":[{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"nanoid-dictionary","versions":[{"version":"4.3.0","files":[{"file":"/packages/utils/package.json","types":["dependencies"]}]}]},{"name":"isnumeric","versions":[{"version":"0.3.3","files":[{"file":"/packages/validation/package.json","types":["dependencies"]}]}]},{"name":"@4tw/cypress-drag-drop","versions":[{"version":"1.4.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"@testing-library/cypress","versions":[{"version":"10.0.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"amazon-cognito-identity-js","versions":[{"version":"4.5.3","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress","versions":[{"version":"13.16.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-image-snapshot","versions":[{"version":"4.0.1","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-mailosaur","versions":[{"version":"2.7.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"cypress-wait-until","versions":[{"version":"1.7.1","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"del","versions":[{"version":"6.0.0","files":[{"file":"/cypress-tests/package.json","types":["devDependencies"]}]}]},{"name":"source-map-explorer","versions":[{"version":"2.5.3","files":[{"file":"/apps/website/package.json","types":["devDependencies"]}]}]},{"name":"@types/folder-hash","versions":[{"version":"4.0.4","files":[{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]}]}]},{"name":"@types/yargs","versions":[{"version":"17.0.8","files":[{"file":"/scripts/buildPackages/package.json","types":["devDependencies"]}]}]}]} diff --git a/packages/handler/src/PreHandler/IPreHandler.ts b/packages/handler/src/PreHandler/IPreHandler.ts index 476100dfef4..10e1e85c5d4 100644 --- a/packages/handler/src/PreHandler/IPreHandler.ts +++ b/packages/handler/src/PreHandler/IPreHandler.ts @@ -1,4 +1,5 @@ import type { FastifyReply, FastifyRequest } from "fastify"; +import type { Context } from "~/types"; export enum Action { CONTINUE = "continue", @@ -6,5 +7,9 @@ export enum Action { } export interface IPreHandler { - execute(request: FastifyRequest, reply: FastifyReply): Promise | Action; + execute( + request: FastifyRequest, + reply: FastifyReply, + context: Context + ): Promise | Action; } diff --git a/packages/handler/src/PreHandler/IfNotOptionsRequest.ts b/packages/handler/src/PreHandler/IfNotOptionsRequest.ts index 4699ca1e3e3..227692dd3bd 100644 --- a/packages/handler/src/PreHandler/IfNotOptionsRequest.ts +++ b/packages/handler/src/PreHandler/IfNotOptionsRequest.ts @@ -1,5 +1,6 @@ import type { FastifyReply, FastifyRequest } from "fastify"; import { Action, IPreHandler } from "./IPreHandler"; +import type { Context } from "~/types"; export class IfNotOptionsRequest implements IPreHandler { private readonly handlers: IPreHandler[]; @@ -8,14 +9,14 @@ export class IfNotOptionsRequest implements IPreHandler { this.handlers = handlers; } - async execute(request: FastifyRequest, reply: FastifyReply): Promise { + async execute(request: FastifyRequest, reply: FastifyReply, context: Context): Promise { const isOptionsRequest = request.method === "OPTIONS"; if (isOptionsRequest) { return Action.CONTINUE; } for (const handler of this.handlers) { - const action = await handler.execute(request, reply); + const action = await handler.execute(request, reply, context); if (action === Action.DONE) { return Action.DONE; } diff --git a/packages/handler/src/PreHandler/IfOptionsRequest.ts b/packages/handler/src/PreHandler/IfOptionsRequest.ts index af939777b41..4b748f7d07d 100644 --- a/packages/handler/src/PreHandler/IfOptionsRequest.ts +++ b/packages/handler/src/PreHandler/IfOptionsRequest.ts @@ -1,5 +1,6 @@ import type { FastifyReply, FastifyRequest } from "fastify"; import { Action, IPreHandler } from "./IPreHandler"; +import type { Context } from "~/types"; export class IfOptionsRequest implements IPreHandler { private readonly handlers: IPreHandler[]; @@ -8,14 +9,14 @@ export class IfOptionsRequest implements IPreHandler { this.handlers = handlers; } - async execute(request: FastifyRequest, reply: FastifyReply): Promise { + async execute(request: FastifyRequest, reply: FastifyReply, context: Context): Promise { const isOptionsRequest = request.method === "OPTIONS"; if (!isOptionsRequest) { return Action.CONTINUE; } for (const handler of this.handlers) { - const action = await handler.execute(request, reply); + const action = await handler.execute(request, reply, context); if (action === Action.DONE) { return Action.DONE; } diff --git a/packages/handler/src/PreHandler/PreHandler.ts b/packages/handler/src/PreHandler/PreHandler.ts index dda2b1ba9de..55ae6707ff5 100644 --- a/packages/handler/src/PreHandler/PreHandler.ts +++ b/packages/handler/src/PreHandler/PreHandler.ts @@ -1,5 +1,6 @@ import { FastifyReply, FastifyRequest } from "fastify"; import { Action, IPreHandler } from "~/PreHandler/IPreHandler"; +import type { Context } from "~/types"; export class PreHandler implements IPreHandler { private readonly handlers: IPreHandler[]; @@ -8,9 +9,9 @@ export class PreHandler implements IPreHandler { this.handlers = handlers; } - async execute(request: FastifyRequest, reply: FastifyReply): Promise { + async execute(request: FastifyRequest, reply: FastifyReply, context: Context): Promise { for (const handler of this.handlers) { - const action = await handler.execute(request, reply); + const action = await handler.execute(request, reply, context); if (action === Action.DONE) { return Action.DONE; } diff --git a/packages/handler/src/PreHandler/ProcessHandlerOnRequestPlugins.ts b/packages/handler/src/PreHandler/ProcessHandlerOnRequestPlugins.ts index bcbef49f114..348c4be96e3 100644 --- a/packages/handler/src/PreHandler/ProcessHandlerOnRequestPlugins.ts +++ b/packages/handler/src/PreHandler/ProcessHandlerOnRequestPlugins.ts @@ -1,7 +1,9 @@ import type { FastifyReply, FastifyRequest } from "fastify"; -import { Action, IPreHandler } from "~/PreHandler/IPreHandler"; +import type { IPreHandler } from "~/PreHandler/IPreHandler"; +import { Action } from "~/PreHandler/IPreHandler"; import { HandlerOnRequestPlugin } from "~/plugins/HandlerOnRequestPlugin"; import { stringifyError } from "~/stringifyError"; +import type { Context } from "~/types"; export class ProcessHandlerOnRequestPlugins implements IPreHandler { private readonly plugins: HandlerOnRequestPlugin[]; @@ -10,12 +12,12 @@ export class ProcessHandlerOnRequestPlugins implements IPreHandler { this.plugins = plugins; } - async execute(request: FastifyRequest, reply: FastifyReply): Promise { + async execute(request: FastifyRequest, reply: FastifyReply, context: Context): Promise { let name: string | undefined; try { for (const plugin of this.plugins) { name = plugin.name; - const result = await plugin.exec(request, reply); + const result = await plugin.exec(request, reply, context); if (result === false) { return Action.DONE; } diff --git a/packages/handler/src/fastify.ts b/packages/handler/src/fastify.ts index b987a1d7079..c17336cf916 100644 --- a/packages/handler/src/fastify.ts +++ b/packages/handler/src/fastify.ts @@ -32,6 +32,8 @@ import { IfNotOptionsRequest } from "./PreHandler/IfNotOptionsRequest"; import { ProcessBeforeHandlerPlugins } from "./PreHandler/ProcessBeforeHandlerPlugins"; import { IfOptionsRequest } from "./PreHandler/IfOptionsRequest"; import { SendEarlyOptionsResponse } from "./PreHandler/SendEarlyOptionsResponse"; +import { OnRequestResponsePlugin } from "~/plugins/OnRequestResponsePlugin.js"; +import { OnRequestTimeoutPlugin } from "~/plugins/OnRequestTimeoutPlugin.js"; const modifyResponseHeaders = (app: FastifyInstance, request: Request, reply: Reply) => { const modifyHeaders = app.webiny.plugins.byType( @@ -293,7 +295,7 @@ export const createHandler = (params: CreateHandlerParams) => { new IfOptionsRequest([new SendEarlyOptionsResponse(modifyHeadersPlugins)]) ]); - await preHandler.execute(request, reply); + await preHandler.execute(request, reply, app.webiny); }); app.addHook("preSerialization", async (_, __, payload) => { @@ -389,10 +391,22 @@ export const createHandler = (params: CreateHandlerParams) => { * We need to output the benchmark results at the end of the request in both response and timeout cases */ app.addHook("onResponse", async () => { + const plugins = app.webiny.plugins.byType( + OnRequestResponsePlugin.type + ); + for (const plugin of plugins) { + await plugin.exec(); + } await context.benchmark.output(); }); app.addHook("onTimeout", async () => { + const plugins = app.webiny.plugins.byType( + OnRequestTimeoutPlugin.type + ); + for (const plugin of plugins) { + await plugin.exec(); + } await context.benchmark.output(); }); diff --git a/packages/handler/src/index.ts b/packages/handler/src/index.ts index 9c3bf3c49fd..0da54b6b77b 100644 --- a/packages/handler/src/index.ts +++ b/packages/handler/src/index.ts @@ -12,4 +12,6 @@ export * from "~/plugins/HandlerResultPlugin"; export * from "~/plugins/HandlerOnRequestPlugin"; export * from "~/plugins/ModifyFastifyPlugin"; export * from "~/plugins/ModifyResponseHeadersPlugin"; +export * from "~/plugins/OnRequestResponsePlugin.js"; +export * from "~/plugins/OnRequestTimeoutPlugin.js"; export * from "./ResponseHeaders"; diff --git a/packages/handler/src/plugins/HandlerOnRequestPlugin.ts b/packages/handler/src/plugins/HandlerOnRequestPlugin.ts index 27a246fb8a7..17d7197dccb 100644 --- a/packages/handler/src/plugins/HandlerOnRequestPlugin.ts +++ b/packages/handler/src/plugins/HandlerOnRequestPlugin.ts @@ -1,5 +1,6 @@ +import type { Context } from "~/types"; import { Plugin } from "@webiny/plugins"; -import { FastifyReply, FastifyRequest } from "fastify"; +import type { FastifyReply, FastifyRequest } from "fastify"; /** * If the execution of the callable returns false, no more plugins will be executed after the given one. @@ -8,28 +9,35 @@ import { FastifyReply, FastifyRequest } from "fastify"; * This way users can prevent stopping of the request on our built-in OPTIONS request. */ export type HandlerOnRequestPluginCallableResponse = false | undefined | null | void; -interface HandlerOnRequestPluginCallable { - (request: FastifyRequest, reply: FastifyReply): Promise; +interface HandlerOnRequestPluginCallable { + ( + request: FastifyRequest, + reply: FastifyReply, + context: C + ): Promise; } -export class HandlerOnRequestPlugin extends Plugin { +export class HandlerOnRequestPlugin extends Plugin { public static override type = "handler.event.onRequest"; - private readonly cb: HandlerOnRequestPluginCallable; + private readonly cb: HandlerOnRequestPluginCallable; - public constructor(cb: HandlerOnRequestPluginCallable) { + public constructor(cb: HandlerOnRequestPluginCallable) { super(); this.cb = cb; } public async exec( request: FastifyRequest, - reply: FastifyReply + reply: FastifyReply, + context: C ): Promise { - return this.cb(request, reply); + return this.cb(request, reply, context); } } -export const createHandlerOnRequest = (cb: HandlerOnRequestPluginCallable) => { - return new HandlerOnRequestPlugin(cb); +export const createHandlerOnRequest = ( + cb: HandlerOnRequestPluginCallable +) => { + return new HandlerOnRequestPlugin(cb); }; diff --git a/packages/handler/src/plugins/OnRequestResponsePlugin.ts b/packages/handler/src/plugins/OnRequestResponsePlugin.ts new file mode 100644 index 00000000000..cd725ac9143 --- /dev/null +++ b/packages/handler/src/plugins/OnRequestResponsePlugin.ts @@ -0,0 +1,24 @@ +import { Plugin } from "@webiny/plugins"; + +export interface IOnRequestResponsePluginCallable { + (): Promise; +} + +export class OnRequestResponsePlugin extends Plugin { + public static override type: string = "handler.onRequestResponse"; + + private readonly cb: IOnRequestResponsePluginCallable; + + public constructor(cb: IOnRequestResponsePluginCallable) { + super(); + this.cb = cb; + } + + public async exec(): Promise { + return this.cb(); + } +} + +export const createOnRequestResponse = (cb: IOnRequestResponsePluginCallable) => { + return new OnRequestResponsePlugin(cb); +}; diff --git a/packages/handler/src/plugins/OnRequestTimeoutPlugin.ts b/packages/handler/src/plugins/OnRequestTimeoutPlugin.ts new file mode 100644 index 00000000000..14555d38f7b --- /dev/null +++ b/packages/handler/src/plugins/OnRequestTimeoutPlugin.ts @@ -0,0 +1,24 @@ +import { Plugin } from "@webiny/plugins"; + +export interface IOnRequestTimeoutPluginCallable { + (): Promise; +} + +export class OnRequestTimeoutPlugin extends Plugin { + public static override type: string = "handler.onRequestTimeout"; + + private readonly cb: IOnRequestTimeoutPluginCallable; + + public constructor(cb: IOnRequestTimeoutPluginCallable) { + super(); + this.cb = cb; + } + + public async exec(): Promise { + return this.cb(); + } +} + +export const createOnRequestTimeout = (cb: IOnRequestTimeoutPluginCallable) => { + return new OnRequestTimeoutPlugin(cb); +}; diff --git a/packages/pulumi-aws/src/apps/api/ApiFileManager.ts b/packages/pulumi-aws/src/apps/api/ApiFileManager.ts index 0a88d1b697c..2b6d94b7001 100644 --- a/packages/pulumi-aws/src/apps/api/ApiFileManager.ts +++ b/packages/pulumi-aws/src/apps/api/ApiFileManager.ts @@ -109,6 +109,12 @@ export const ApiFileManager = createAppModule({ }; return { + roles: { + manage: role + }, + policies: { + manage: policy + }, functions, bucketNotification }; diff --git a/packages/pulumi-aws/src/apps/api/ApiOutput.ts b/packages/pulumi-aws/src/apps/api/ApiOutput.ts index 24747eb9f1c..63a84788c3d 100644 --- a/packages/pulumi-aws/src/apps/api/ApiOutput.ts +++ b/packages/pulumi-aws/src/apps/api/ApiOutput.ts @@ -21,6 +21,7 @@ export const ApiOutput = createAppModule({ apiDomain: output["apiDomain"], apiUrl: output["apiUrl"], graphqlLambdaRole: output["graphqlLambdaRole"], + graphqlLambdaRoleName: output["graphqlLambdaRoleName"], apwSchedulerEventRule: output["apwSchedulerEventRule"], apwSchedulerEventTargetId: output["apwSchedulerEventTargetId"], apwSchedulerExecuteAction: output["apwSchedulerExecuteAction"], @@ -30,7 +31,16 @@ export const ApiOutput = createAppModule({ cognitoUserPoolPasswordPolicy: output["cognitoUserPoolPasswordPolicy"], dynamoDbTable: output["dynamoDbTable"], region: output["region"], - websocketApiUrl: output["websocketApiUrl"] + websocketApiId: output["websocketApiId"], + websocketApiUrl: output["websocketApiUrl"], + migrationLambdaArn: output["migrationLambdaArn"], + graphqlLambdaName: output["graphqlLambdaName"], + backgroundTaskLambdaArn: output["backgroundTaskLambdaArn"], + backgroundTaskStepFunctionArn: output["backgroundTaskStepFunctionArn"], + fileManagerManageLambdaArn: output["fileManagerManageLambdaArn"], + fileManagerManageLambdaRole: output["fileManagerManageLambdaRole"], + fileManagerManageLambdaRoleName: output["fileManagerManageLambdaRoleName"], + fileManagerDownloadLambdaArn: output["fileManagerDownloadLambdaArn"] }; }); } diff --git a/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts b/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts index 20835427910..01d6cfb66a4 100644 --- a/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts @@ -1,5 +1,10 @@ import * as aws from "@pulumi/aws"; -import { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi"; +import { + createPulumiApp, + type PulumiApp, + PulumiAppParam, + PulumiAppParamCallback +} from "@webiny/pulumi"; import { ApiApwScheduler, ApiBackgroundTask, @@ -26,6 +31,8 @@ import { getEnvVariableWebinyVariant } from "~/env/variant"; import { getEnvVariableWebinyEnv } from "~/env/env"; import { getEnvVariableWebinyProjectName } from "~/env/projectName"; import { getEnvVariableAwsRegion } from "~/env/awsRegion"; +import { attachSyncSystem } from "../syncSystem/api/index.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; export type ApiPulumiApp = ReturnType; @@ -87,7 +94,7 @@ export const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = name: "api", path: "apps/api", config: projectAppParams, - program: async app => { + program: async (app: PulumiApp & WithServiceManifest) => { let searchEngineParams: | CreateCorePulumiAppParams["openSearch"] | CreateCorePulumiAppParams["elasticSearch"] @@ -273,8 +280,13 @@ export const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = migrationLambdaArn: migration.function.output.arn, graphqlLambdaName: graphql.functions.graphql.output.name, graphqlLambdaRole: graphql.role.output.arn, + graphqlLambdaRoleName: graphql.role.output.name, backgroundTaskLambdaArn: backgroundTask.backgroundTask.output.arn, backgroundTaskStepFunctionArn: backgroundTask.stepFunction.output.arn, + fileManagerManageLambdaArn: fileManager.functions.manage.output.arn, + fileManagerManageLambdaRole: fileManager.roles.manage.output.arn, + fileManagerManageLambdaRoleName: fileManager.roles.manage.output.name, + fileManagerDownloadLambdaArn: fileManager.functions.download.output.arn, websocketApiId: websocket.websocketApi.output.id, websocketApiUrl: websocket.websocketApiUrl }); @@ -298,6 +310,14 @@ export const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = } }); }); + /** + * We need to attach the Sync System if it exists. + */ + attachSyncSystem({ + app, + core, + env: app.params.run.env + }); tagResources({ WbyProjectName: getEnvVariableWebinyProjectName(), diff --git a/packages/pulumi-aws/src/apps/blueGreen/createBlueGreenPulumiApp.ts b/packages/pulumi-aws/src/apps/blueGreen/createBlueGreenPulumiApp.ts index 112c941b3d0..23ec8a212cc 100644 --- a/packages/pulumi-aws/src/apps/blueGreen/createBlueGreenPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/blueGreen/createBlueGreenPulumiApp.ts @@ -33,6 +33,14 @@ export interface OpenSearchConfig { sharedIndexes: boolean; } +export interface IDeploymentsCallableParams { + env: string; +} + +export interface IDeploymentsCallable { + (params: IDeploymentsCallableParams): [IBlueGreenDeployment, IBlueGreenDeployment]; +} + export interface CreateBlueGreenPulumiAppParams { /** * Secures against deleting database by accident. @@ -79,7 +87,7 @@ export interface CreateBlueGreenPulumiAppParams { * Available deployments for the Blue / Green switch. * They will be validated before deploy. */ - deployments: () => [IBlueGreenDeployment, IBlueGreenDeployment]; + deployments: IDeploymentsCallable; /** * Attach domains to the Blue/Green CloudFront. */ @@ -95,7 +103,7 @@ export function createBlueGreenPulumiApp(projectAppParams: CreateBlueGreenPulumi const productionEnvironments = app.params.create.productionEnvironments || DEFAULT_PROD_ENV_NAMES; - const deployments = validateDeployments(projectAppParams.deployments()); + const deployments = validateDeployments(projectAppParams.deployments(app.params.run)); const applicationsDomains = await getApplicationDomains({ stacks: deployments @@ -105,7 +113,7 @@ export function createBlueGreenPulumiApp(projectAppParams: CreateBlueGreenPulumi input: applicationsDomains }); - const attachedDomains = projectAppParams.domains(); + const attachedDomains = projectAppParams.domains(app.params.run); const domains = resolveDomains({ attachedDomains, diff --git a/packages/pulumi-aws/src/apps/blueGreen/types.ts b/packages/pulumi-aws/src/apps/blueGreen/types.ts index b7ed29aa2ee..6048192ccc6 100644 --- a/packages/pulumi-aws/src/apps/blueGreen/types.ts +++ b/packages/pulumi-aws/src/apps/blueGreen/types.ts @@ -47,8 +47,12 @@ export interface IAttachedDomains { domains?: IAttachedDomainsTypes; } +export interface IAttachDomainsCallableParams { + env: string; +} + export interface IAttachDomainsCallable { - (): IAttachedDomains; + (params: IAttachDomainsCallableParams): IAttachedDomains; } export type IAttachedDomainKey = keyof IAttachedDomainsTypes; diff --git a/packages/pulumi-aws/src/apps/common/CoreOutput.ts b/packages/pulumi-aws/src/apps/common/CoreOutput.ts index ed9f6081f42..a72a4d7f0fb 100644 --- a/packages/pulumi-aws/src/apps/common/CoreOutput.ts +++ b/packages/pulumi-aws/src/apps/common/CoreOutput.ts @@ -19,6 +19,7 @@ export const CoreOutput = createAppModule({ return { fileManagerBucketId: output["fileManagerBucketId"], + fileManagerBucketArn: output["fileManagerBucketArn"], primaryDynamodbTableArn: output["primaryDynamodbTableArn"], primaryDynamodbTableName: output["primaryDynamodbTableName"], primaryDynamodbTableHashKey: output["primaryDynamodbTableHashKey"], diff --git a/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts b/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts index 387cd44182d..21e3c53bb45 100644 --- a/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts +++ b/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts @@ -172,7 +172,7 @@ export function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams // Setup file core bucket const { bucket: fileManagerBucket } = app.addModule(CoreFileManger, { protect }); - let elasticSearch; + let elasticSearch = undefined; if (searchEngineType === "openSearch") { elasticSearch = app.addModule(OpenSearch, { protect }); } else if (searchEngineType === "elasticSearch") { @@ -189,6 +189,7 @@ export function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams deploymentId: deploymentId.hex, region: aws.config.region, fileManagerBucketId: fileManagerBucket.output.id, + fileManagerBucketArn: fileManagerBucket.output.arn, primaryDynamodbTableArn: dynamoDbTable.output.arn, primaryDynamodbTableName: dynamoDbTable.output.name, primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey, diff --git a/packages/pulumi-aws/src/apps/lambdaUtils.ts b/packages/pulumi-aws/src/apps/lambdaUtils.ts index fab63b840f1..fd1d2f2627b 100644 --- a/packages/pulumi-aws/src/apps/lambdaUtils.ts +++ b/packages/pulumi-aws/src/apps/lambdaUtils.ts @@ -1,18 +1,17 @@ import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import { PulumiApp } from "@webiny/pulumi"; +import { VpcConfig } from "./common"; export * from "../utils/lambdaEnvVariables"; -import { VpcConfig } from "./common"; - interface LambdaRoleParams { name: string; policy?: pulumi.Output; executionRole?: pulumi.Input; } -export function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) { +const createLambdaRoleWithoutExecution = (app: PulumiApp, params: LambdaRoleParams) => { const role = app.addResource(aws.iam.Role, { name: params.name, config: { @@ -52,6 +51,11 @@ export function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) { } }); } + return role; +}; + +export function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) { + const role = createLambdaRoleWithoutExecution(app, params); // Add default execution role. const vpc = app.getModule(VpcConfig); @@ -70,3 +74,17 @@ export function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) { return role; } + +export const createLambdaRoleWithoutVpc = (app: PulumiApp, params: LambdaRoleParams) => { + const role = createLambdaRoleWithoutExecution(app, params); + + app.addResource(aws.iam.RolePolicyAttachment, { + name: `${params.name}-default-execution-role`, + config: { + role: role.output, + policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole + } + }); + + return role; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamo.ts b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamoDb.ts similarity index 77% rename from packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamo.ts rename to packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamoDb.ts index ecf332d480e..14747058f51 100644 --- a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamo.ts +++ b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemDynamoDb.ts @@ -1,13 +1,14 @@ import * as aws from "@pulumi/aws"; import { createAppModule, PulumiApp, PulumiAppModule } from "@webiny/pulumi"; +import { createSyncResourceName } from "~/apps/syncSystem/createSyncResourceName.js"; -export type SyncSystemDynamo = PulumiAppModule; +export type SyncSystemDynamoDb = PulumiAppModule; -export const SyncSystemDynamo = createAppModule({ +export const SyncSystemDynamoDb = createAppModule({ name: "SyncSystemDynamoDb", - config(app: PulumiApp, params: { protect: boolean }) { + config(app: PulumiApp) { return app.addResource(aws.dynamodb.Table, { - name: "sync-table", + name: createSyncResourceName("table"), config: { attributes: [ { name: "PK", type: "S" }, @@ -21,7 +22,6 @@ export const SyncSystemDynamo = createAppModule({ hashKey: "PK", rangeKey: "SK", globalSecondaryIndexes: [ - // TODO possibly add more indexes here { name: "GSI1", hashKey: "GSI1_PK", @@ -35,9 +35,6 @@ export const SyncSystemDynamo = createAppModule({ projectionType: "ALL" } ] - }, - opts: { - protect: params.protect } }); } diff --git a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemEventBus.ts b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemEventBus.ts new file mode 100644 index 00000000000..3b290a748a8 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemEventBus.ts @@ -0,0 +1,88 @@ +import * as aws from "@pulumi/aws"; +import type { PulumiApp } from "@webiny/pulumi"; +import { createAppModule } from "@webiny/pulumi"; +import { createSyncResourceName } from "./createSyncResourceName.js"; +import type { EventBusArgs } from "@pulumi/aws/cloudwatch/eventBus.js"; +import { SyncSystemSQS } from "~/apps/syncSystem/SyncSystemSQS.js"; +import type { EventRuleArgs } from "@pulumi/aws/cloudwatch/eventRule.js"; +import type { EventTargetArgs } from "@pulumi/aws/cloudwatch/eventTarget.js"; + +export const SyncSystemEventBus = createAppModule({ + name: "SyncSystemEventBus", + config: (app: PulumiApp) => { + const sqs = app.getModule(SyncSystemSQS); + + const eventBusName = createSyncResourceName("eventBus"); + + const config: EventBusArgs = { + name: eventBusName, + description: "Connect deployed systems to Sync SQS" + }; + const eventBus = app.addResource(aws.cloudwatch.EventBus, { + name: eventBusName, + config + }); + + const eventBusRuleConfig: EventRuleArgs = { + eventBusName: eventBus.output.arn, + eventPattern: JSON.stringify({ + "detail-type": ["synchronization-input"] + }) + }; + + const eventBusRule = app.addResource(aws.cloudwatch.EventRule, { + name: createSyncResourceName("eventBusRule"), + config: eventBusRuleConfig + }); + + const eventBusTargetConfig: EventTargetArgs = { + rule: eventBusRule.output.name, + eventBusName: eventBus.output.name, + arn: sqs.output.arn, + sqsTarget: { + messageGroupId: "default" + } + // TODO add dead letter queue + // deadLetterConfig: { + // arn: deadLetterQueue.output.arn + // } + }; + + const eventBusTarget = app.addResource(aws.cloudwatch.EventTarget, { + name: createSyncResourceName("eventBusEventTarget"), + config: eventBusTargetConfig + }); + + const eventBusPolicy = app.addResource(aws.sqs.QueuePolicy, { + name: createSyncResourceName("queuePolicy"), + config: { + queueUrl: sqs.output.id, + policy: sqs.output.arn.apply(arn => { + return JSON.stringify({ + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Principal: aws.iam.Principals.EventsPrincipal, + Action: "sqs:SendMessage", + Resource: arn, + Condition: { + ArnEquals: { + "aws:SourceArn": eventBusRule.output.arn + } + } + } + ] + }); + }) + } + }); + + return { + eventBus, + eventBusRule, + eventBusTarget, + eventBusPolicy + }; + } +}); diff --git a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemLambda.ts b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemLambda.ts index f3fcb7137be..486acce72da 100644 --- a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemLambda.ts +++ b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemLambda.ts @@ -1,183 +1,65 @@ import path from "path"; -import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; -import { createAppModule, PulumiApp, PulumiAppModule } from "@webiny/pulumi"; -import { createLambdaRole, getCommonLambdaEnvVariables } from "../lambdaUtils"; -import { VpcConfig } from "~/apps"; -import { getAwsAccountId, getAwsRegion } from "../awsUtils"; -import { LAMBDA_RUNTIME } from "~/constants"; -import { SyncSystemDynamo } from "./SyncSystemDynamo"; - -export interface SyncSystemLambdaParams { - protect: boolean; - config: Record; -} +import type { PulumiApp, PulumiAppModule } from "@webiny/pulumi"; +import { createAppModule } from "@webiny/pulumi"; +import { createLambdaRoleWithoutVpc } from "../lambdaUtils.js"; +import { LAMBDA_RUNTIME } from "~/constants.js"; +import { createSyncSystemInputLambdaPolicy } from "./lambda/createSyncSystemInputLambdaPolicy.js"; +import { createSyncResourceName } from "./createSyncResourceName.js"; +import { createAssetArchive } from "~/utils/createAssetArchive.js"; +import { SyncSystemSQS } from "./SyncSystemSQS.js"; export type SyncSystemLambda = PulumiAppModule; export const SyncSystemLambda = createAppModule({ name: "SyncSystemLambda", - // eslint-disable-next-line - config(app: PulumiApp, _: SyncSystemLambdaParams) { - const policy = createSyncSystemLambdaPolicy({ - app, - // TODO - get bucket ids and dynamodb tables from the FileManager app - primary: { - fileManagerBucketId: "primaryFileManagerBucketId", - dynamoDbTableArn: "" - }, - secondary: { - fileManagerBucketId: "secondaryFileManagerBucketId", - dynamoDbTableArn: "" - } + config(app: PulumiApp) { + const sqs = app.getModule(SyncSystemSQS); + + const roleName = createSyncResourceName("input-lambda-role"); + const policy = createSyncSystemInputLambdaPolicy({ + name: `${roleName}-policy`, + app }); - const role = createLambdaRole(app, { - name: "sync-system-lambda-role", + const role = createLambdaRoleWithoutVpc(app, { + name: roleName, policy: policy.output }); - const syncSystemLambda = app.addResource(aws.lambda.Function, { - name: "sync-system-lambda", + const lambda = app.addResource(aws.lambda.Function, { + name: createSyncResourceName("lambda"), config: { runtime: LAMBDA_RUNTIME, handler: "handler.handler", role: role.output.arn, timeout: 900, - memorySize: 1024, - code: new pulumi.asset.AssetArchive({ - ".": new pulumi.asset.FileArchive( - path.join(app.paths.workspace, "transfer/build") - ) - }), + memorySize: 512, + code: createAssetArchive(path.join(app.paths.workspace, "input/build")), environment: { - variables: getCommonLambdaEnvVariables().apply(value => ({ - ...value, + variables: { + DEBUG: String(process.env.DEBUG), + PULUMI_APPS: "true", AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" - })) - }, - vpcConfig: app.getModule(VpcConfig).functionVpcConfig + } + } + } + }); + + const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, { + name: createSyncResourceName("sqs-to-lambda"), + config: { + eventSourceArn: sqs.output.arn, + functionName: lambda.output.arn, + batchSize: 10 + // maximumBatchingWindowInSeconds: 2 } }); return { role, policy, - functions: { - syncSystem: syncSystemLambda - } + lambda, + eventSourceMapping }; } }); - -interface ICreateSyncSystemLambdaPolicyParamsType { - fileManagerBucketId: string; - dynamoDbTableArn: string; -} - -interface ICreateSyncSystemLambdaPolicyParams { - app: PulumiApp; - primary: ICreateSyncSystemLambdaPolicyParamsType; - secondary: ICreateSyncSystemLambdaPolicyParamsType; -} - -function createSyncSystemLambdaPolicy(params: ICreateSyncSystemLambdaPolicyParams) { - const { app, primary, secondary } = params; - const dynamoDbTable = app.getModule(SyncSystemDynamo); - const awsAccountId = getAwsAccountId(app); - const awsRegion = getAwsRegion(app); - - const policy: aws.iam.PolicyDocument = { - Version: "2012-10-17", - Statement: [ - { - Sid: "PermissionForDynamodb", - Effect: "Allow", - Action: [ - "dynamodb:BatchGetItem", - "dynamodb:BatchWriteItem", - "dynamodb:ConditionCheckItem", - "dynamodb:CreateBackup", - "dynamodb:CreateTable", - "dynamodb:CreateTableReplica", - "dynamodb:DeleteBackup", - "dynamodb:DeleteItem", - "dynamodb:DeleteTable", - "dynamodb:DeleteTableReplica", - "dynamodb:DescribeBackup", - "dynamodb:DescribeContinuousBackups", - "dynamodb:DescribeContributorInsights", - "dynamodb:DescribeExport", - "dynamodb:DescribeKinesisStreamingDestination", - "dynamodb:DescribeLimits", - "dynamodb:DescribeReservedCapacity", - "dynamodb:DescribeReservedCapacityOfferings", - "dynamodb:DescribeStream", - "dynamodb:DescribeTable", - "dynamodb:DescribeTableReplicaAutoScaling", - "dynamodb:DescribeTimeToLive", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:ExportTableToPointInTime", - "dynamodb:GetItem", - "dynamodb:GetRecords", - "dynamodb:GetShardIterator", - "dynamodb:ListBackups", - "dynamodb:ListContributorInsights", - "dynamodb:ListExports", - "dynamodb:ListStreams", - "dynamodb:ListTables", - "dynamodb:ListTagsOfResource", - "dynamodb:PartiQLDelete", - "dynamodb:PartiQLInsert", - "dynamodb:PartiQLSelect", - "dynamodb:PartiQLUpdate", - "dynamodb:PurchaseReservedCapacityOfferings", - "dynamodb:PutItem", - "dynamodb:Query", - "dynamodb:RestoreTableFromBackup", - "dynamodb:RestoreTableToPointInTime", - "dynamodb:Scan", - "dynamodb:UpdateContinuousBackups", - "dynamodb:UpdateContributorInsights", - "dynamodb:UpdateItem", - "dynamodb:UpdateTable", - "dynamodb:UpdateTableReplicaAutoScaling", - "dynamodb:UpdateTimeToLive" - ], - Resource: [`${dynamoDbTable.output.arn}`, `${dynamoDbTable.output.arn}/*`] - }, - { - Sid: "PermissionForS3", - Effect: "Allow", - Action: [ - "s3:ListBucket", - "s3:GetObjectAcl", - "s3:DeleteObject", - "s3:PutObjectAcl", - "s3:PutObject", - "s3:GetObject" - ], - Resource: [ - pulumi.interpolate`arn:aws:s3:::${primary.fileManagerBucketId}`, - pulumi.interpolate`arn:aws:s3:::${primary.fileManagerBucketId}/*`, - pulumi.interpolate`arn:aws:s3:::${secondary.fileManagerBucketId}`, - pulumi.interpolate`arn:aws:s3:::${secondary.fileManagerBucketId}/*` - ] - }, - { - Sid: "PermissionForLambda", - Effect: "Allow", - Action: ["lambda:InvokeFunction"], - Resource: pulumi.interpolate`arn:aws:lambda:${awsRegion}:${awsAccountId}:function:*` - } - ] - }; - - return app.addResource(aws.iam.Policy, { - name: "SyncSystemLambdaPolicy", - config: { - description: "This policy enables access to Dynamodb, S3 and Lambda.", - policy - } - }); -} diff --git a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemOutput.ts b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemOutput.ts new file mode 100644 index 00000000000..be18d07183c --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemOutput.ts @@ -0,0 +1,23 @@ +import { createAppModule, PulumiAppModule } from "@webiny/pulumi"; +import { getSyncSystemOutput } from "~/apps/syncSystem/getSyncSystemOutput.js"; + +export type SyncSystemOutput = PulumiAppModule; + +export const SyncSystemOutput = createAppModule({ + name: "SyncSystemOutput", + config(app) { + return app.addHandler(async () => { + const output = getSyncSystemOutput({ + env: app.params.run.env + }); + + const keys = Object.keys(output || {}); + + if (keys.length === 0) { + console.log("Sync System application is not deployed."); + return null; + } + return output; + }); + } +}); diff --git a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemSQS.ts b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemSQS.ts index c4d8890e810..400a2683aa6 100644 --- a/packages/pulumi-aws/src/apps/syncSystem/SyncSystemSQS.ts +++ b/packages/pulumi-aws/src/apps/syncSystem/SyncSystemSQS.ts @@ -2,36 +2,44 @@ import * as aws from "@pulumi/aws"; import type { QueueArgs } from "@pulumi/aws/sqs"; import type { PulumiApp } from "@webiny/pulumi"; import { createAppModule } from "@webiny/pulumi"; - -export interface ISyncSystemSQSParams { - protect: boolean; -} +import { createSyncResourceName } from "./createSyncResourceName.js"; export const SyncSystemSQS = createAppModule({ name: "SyncSystemSQS", - config: (app: PulumiApp, params: ISyncSystemSQSParams) => { + config: (app: PulumiApp) => { const config: QueueArgs = { delaySeconds: 0, + /** + * 5 minutes should be enough for the message to be processed. + */ visibilityTimeoutSeconds: 900, fifoQueue: true, receiveWaitTimeSeconds: 0, + deduplicationScope: "queue", /** * The maximum message size is 256 KB. - * Is it enough? If not, we can use S3 to store the message and only store the reference in the queue. + * Chunks are billed in 64KB increments, so let's keep the message size below that. */ - maxMessageSize: 262144, // max + maxMessageSize: 60 * 1024, // KB /** * How log do we keep the message in the queue? - * Something is very wrong if the message is not processed within 4 days... :/ */ - messageRetentionSeconds: 345600 // default - 4 days + messageRetentionSeconds: 4 /* days */ * 24 * 60 * 60, + /** + * No need to encrypt the message as nothing outside the system can actually read it. + */ + sqsManagedSseEnabled: false, + /** + * We want to make sure that no message is sent more than once. + * + * TODO: determine if the criteria by which will we create a hash for the ID. + * TODO: must set "MessageDeduplicationId" property when creating the message. + */ + contentBasedDeduplication: true }; return app.addResource(aws.sqs.Queue, { - name: "sync-sqs", - config, - opts: { - protect: params.protect - } + name: createSyncResourceName("sqs"), + config }); } }); diff --git a/packages/pulumi-aws/src/apps/syncSystem/addTableItems.ts b/packages/pulumi-aws/src/apps/syncSystem/addTableItems.ts deleted file mode 100644 index 8b3d1c3bfea..00000000000 --- a/packages/pulumi-aws/src/apps/syncSystem/addTableItems.ts +++ /dev/null @@ -1,60 +0,0 @@ -import * as aws from "@pulumi/aws"; -import * as pulumi from "@pulumi/pulumi"; -import type { PulumiApp } from "@webiny/pulumi"; -import type { SyncSystemDynamo } from "./SyncSystemDynamo"; - -export interface IAddTableItemsParams { - app: PulumiApp; - table: SyncSystemDynamo; - items: Record>; -} - -export const addTableItems = (params: IAddTableItemsParams): void => { - const { app, table, items } = params; - /** - * Store some settings in the table. - */ - app.addResource(aws.dynamodb.TableItem, { - name: "syncSystemSettings", - config: { - tableName: table.output.arn, - hashKey: table.output.hashKey, - rangeKey: pulumi.output(table.output.rangeKey).apply(key => key || "SK"), - item: pulumi.interpolate`{ - ${buildTableItems({ - PK: "syncSystem#SETTINGS", - SK: "default", - ...items - })} - }` - } - }); -}; - -const getTableItemType = (value: unknown) => { - if (value === null || value === undefined) { - return "S"; - } - switch (typeof value) { - case "string": - return "S"; - case "number": - return "N"; - case "object": - return "M"; - default: - throw new Error(`Unsupported type: ${typeof value}`); - } -}; - -const buildTableItems = ( - items: Record> -): string => { - return Object.keys(items) - .reduce((output, key) => { - const value = items[key]; - output.push(`"${key}": {"${getTableItemType(value)}": "${value}"}`); - return output; - }, []) - .join(","); -}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/api/addServiceManifest.ts b/packages/pulumi-aws/src/apps/syncSystem/api/addServiceManifest.ts new file mode 100644 index 00000000000..10246a48e7d --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/api/addServiceManifest.ts @@ -0,0 +1,25 @@ +import type { PulumiApp } from "@webiny/pulumi"; +import type { IGetSyncSystemOutputResult } from "~/apps/syncSystem/types.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; + +export interface IAddServiceManifestParams { + app: PulumiApp & WithServiceManifest; + syncSystem: IGetSyncSystemOutputResult; +} + +export const addServiceManifest = (params: IAddServiceManifestParams) => { + const { app, syncSystem } = params; + + app.addHandler(() => { + app.addServiceManifest({ + name: "sync", + manifest: { + sync: { + eventBusArn: syncSystem.eventBusArn, + eventBusName: syncSystem.eventBusName, + region: syncSystem.region + } + } + }); + }); +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/api/attachDynamoDbPermissions.ts b/packages/pulumi-aws/src/apps/syncSystem/api/attachDynamoDbPermissions.ts new file mode 100644 index 00000000000..a267def5a94 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/api/attachDynamoDbPermissions.ts @@ -0,0 +1,108 @@ +/** + * We need to attach Sync System Lambda policy to access DynamoDB in the Webiny system. + */ +import * as aws from "@pulumi/aws"; +import type { PulumiApp } from "@webiny/pulumi"; +import type { IGetSyncSystemOutputResult } from "~/apps/syncSystem/types.js"; +import { createSyncResourceName } from "~/apps/syncSystem/createSyncResourceName.js"; +import type { CoreOutput } from "~/apps/common/CoreOutput.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; + +export interface IAttachDynamoDbPermissionsParams { + app: PulumiApp & WithServiceManifest; + syncSystem: IGetSyncSystemOutputResult; + core: CoreOutput; +} + +export const attachDynamoDbPermissions = (params: IAttachDynamoDbPermissionsParams) => { + const { app, syncSystem, core } = params; + + const { lambdaRoleName } = syncSystem; + + const lambdaToDynamoDbResourceName = createSyncResourceName(`lambda-to-dynamodb`); + + const dynamoDbPolicy = app.addResource(aws.iam.Policy, { + name: `${lambdaToDynamoDbResourceName}-policy`, + config: { + description: "This policy enables access from Sync System Lambda to Webiny DynamoDB.", + policy: { + Version: "2012-10-17", + Statement: [ + { + Sid: "PermissionForLambdaToDynamoDb", + Effect: "Allow", + Action: [ + "dynamodb:BatchGetItem", + "dynamodb:BatchWriteItem", + "dynamodb:ConditionCheckItem", + "dynamodb:CreateBackup", + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:DeleteBackup", + "dynamodb:DeleteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:DescribeBackup", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeExport", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:DescribeLimits", + "dynamodb:DescribeReservedCapacity", + "dynamodb:DescribeReservedCapacityOfferings", + "dynamodb:DescribeStream", + "dynamodb:DescribeTable", + "dynamodb:DescribeTableReplicaAutoScaling", + "dynamodb:DescribeTimeToLive", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:ExportTableToPointInTime", + "dynamodb:GetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:ListBackups", + "dynamodb:ListContributorInsights", + "dynamodb:ListExports", + "dynamodb:ListStreams", + "dynamodb:ListTables", + "dynamodb:ListTagsOfResource", + "dynamodb:PartiQLDelete", + "dynamodb:PartiQLInsert", + "dynamodb:PartiQLSelect", + "dynamodb:PartiQLUpdate", + "dynamodb:PurchaseReservedCapacityOfferings", + "dynamodb:PutItem", + "dynamodb:Query", + "dynamodb:RestoreTableFromBackup", + "dynamodb:RestoreTableToPointInTime", + "dynamodb:Scan", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateItem", + "dynamodb:UpdateTable", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateTimeToLive" + ], + Resource: [ + core.primaryDynamodbTableArn.apply(arn => arn), + core.primaryDynamodbTableArn.apply(arn => `${arn}/*`) + ] + } + ] + } + } + }); + + const lambdaRolePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, { + name: `${lambdaToDynamoDbResourceName}-role-policy-attachment`, + config: { + role: lambdaRoleName, + policyArn: dynamoDbPolicy.output.arn + } + }); + + return { + dynamoDbPolicy, + lambdaRolePolicyAttachment + }; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/api/attachEventBusPermissions.ts b/packages/pulumi-aws/src/apps/syncSystem/api/attachEventBusPermissions.ts new file mode 100644 index 00000000000..e80559a1d8b --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/api/attachEventBusPermissions.ts @@ -0,0 +1,68 @@ +import * as aws from "@pulumi/aws"; +import type { PulumiApp } from "@webiny/pulumi/types"; +import type { IGetSyncSystemOutputResult } from "../types"; +import { createSyncResourceName } from "../createSyncResourceName"; +import { ApiGraphql } from "~/apps/api/ApiGraphql.js"; +import { ApiFileManager } from "~/apps/api/ApiFileManager.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; + +export interface IAttachEventBusPermissionsParam { + app: PulumiApp & WithServiceManifest; + syncSystem: IGetSyncSystemOutputResult; +} + +/** + * We need to attach the policy to: + * * GraphQL Lambda Role + * * File Manager Manage Lambda Role + * TODO determine if any other are required + */ +export const attachEventBusPermissions = (params: IAttachEventBusPermissionsParam) => { + const { app, syncSystem } = params; + + const { eventBusArn } = syncSystem; + + const graphql = app.getModule(ApiGraphql); + const fileManager = app.getModule(ApiFileManager); + + const lambdaToEventBridgeResourceName = createSyncResourceName(`lambda-to-event-bridge`); + const eventBridgePolicy = app.addResource(aws.iam.Policy, { + name: `${lambdaToEventBridgeResourceName}-policy`, + config: { + description: + "This policy enables access from Webiny Lambdas to Sync System EventBridge.", + policy: { + Version: "2012-10-17", + Statement: [ + { + Sid: "PermissionForLambdaToEventBridge", + Effect: "Allow", + Action: "events:PutEvents", + Resource: [eventBusArn] + } + ] + } + } + }); + + const graphQlPolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, { + name: `${lambdaToEventBridgeResourceName}-graphql-role-policy-attachment`, + config: { + role: graphql.role.output.name, + policyArn: eventBridgePolicy.output.arn + } + }); + const fileManagerManagePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, { + name: `${lambdaToEventBridgeResourceName}-fm-role-policy-attachment`, + config: { + role: fileManager.roles.manage.output.name, + policyArn: eventBridgePolicy.output.arn + } + }); + + return { + eventBridgePolicy, + graphQlPolicyAttachment, + fileManagerManagePolicyAttachment + }; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/api/attachS3Permissions.ts b/packages/pulumi-aws/src/apps/syncSystem/api/attachS3Permissions.ts new file mode 100644 index 00000000000..58bb6f02142 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/api/attachS3Permissions.ts @@ -0,0 +1,59 @@ +import * as aws from "@pulumi/aws"; +import type { PulumiApp } from "@webiny/pulumi"; +import type { IGetSyncSystemOutputResult } from "~/apps/syncSystem/types.js"; +import type { CoreOutput } from "~/apps/common/CoreOutput.js"; +import { createSyncResourceName } from "~/apps/syncSystem/createSyncResourceName.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; + +export interface IAttachS3PermissionsParams { + app: PulumiApp & WithServiceManifest; + syncSystem: IGetSyncSystemOutputResult; + core: CoreOutput; +} + +export const attachS3Permissions = (params: IAttachS3PermissionsParams) => { + const { app, syncSystem, core } = params; + + const { lambdaRoleName } = syncSystem; + + const lambdaToS3ResourceName = createSyncResourceName(`lambda-to-s3-fm`); + + const s3Policy = app.addResource(aws.iam.Policy, { + name: `${lambdaToS3ResourceName}-policy`, + config: { + description: "This policy enables access from Sync System Lambda to Webiny S3.", + policy: { + Version: "2012-10-17", + Statement: [ + { + Sid: "PermissionForLambdaToS3", + Effect: "Allow", + Action: [ + "s3:DeleteObject", + "s3:PutObject", + "s3:GetObject", + "s3:ListBucket" + ], + Resource: [ + core.fileManagerBucketArn.apply(arn => arn), + core.fileManagerBucketArn.apply(arn => `${arn}/*`) + ] + } + ] + } + } + }); + + const s3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, { + name: `${lambdaToS3ResourceName}-policy-attachment`, + config: { + role: lambdaRoleName, + policyArn: s3Policy.output.arn + } + }); + + return { + s3Policy, + s3PolicyAttachment + }; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/api/index.ts b/packages/pulumi-aws/src/apps/syncSystem/api/index.ts new file mode 100644 index 00000000000..f2fa68475a9 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/api/index.ts @@ -0,0 +1,57 @@ +import { getSyncSystemOutput } from "~/apps/syncSystem/getSyncSystemOutput.js"; +import { attachEventBusPermissions } from "./attachEventBusPermissions.js"; +import { attachDynamoDbPermissions } from "~/apps/syncSystem/api/attachDynamoDbPermissions.js"; +import { attachS3Permissions } from "~/apps/syncSystem/api/attachS3Permissions.js"; +import { addServiceManifest } from "~/apps/syncSystem/api/addServiceManifest.js"; +import type { PulumiApp } from "@webiny/pulumi/types"; +import type { CoreOutput } from "~/apps/common/CoreOutput.js"; +import type { WithServiceManifest } from "~/utils/withServiceManifest.js"; + +export interface IAttachSyncSystemParams { + app: PulumiApp & WithServiceManifest; + env: string; + core: CoreOutput; +} + +export const attachSyncSystem = (params: IAttachSyncSystemParams) => { + const { app, core, env } = params; + + const syncSystem = getSyncSystemOutput({ + env + }); + /** + * Possibly no sync system deployed - no need to do anything at that point. + * At this point, if sync system was deployed, and it is not anymore, all resources after this check will disappear. + */ + if (!syncSystem) { + console.log(`No Sync System deployed in env "${env}". Skipping...`); + return; + } + /** + * Permissions for Webiny system to access Sync System resources. + */ + attachEventBusPermissions({ + app, + syncSystem + }); + /** + * Permissions for Sync System to access Webiny system resources. + */ + attachDynamoDbPermissions({ + app, + syncSystem, + core + }); + attachS3Permissions({ + app, + syncSystem, + core + }); + /** + * Add the Service Manifest item to the Webiny system. + */ + addServiceManifest({ + app, + syncSystem + }); +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/constants.ts b/packages/pulumi-aws/src/apps/syncSystem/constants.ts new file mode 100644 index 00000000000..f6c03347034 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/constants.ts @@ -0,0 +1 @@ +export const APPS_SYNC_SYSTEM_PATH = "apps/sync"; diff --git a/packages/pulumi-aws/src/apps/syncSystem/createSyncResourceName.ts b/packages/pulumi-aws/src/apps/syncSystem/createSyncResourceName.ts new file mode 100644 index 00000000000..aa9928ff3e1 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/createSyncResourceName.ts @@ -0,0 +1,8 @@ +import kebabCase from "lodash/kebabCase"; + +/** + * Need to have standardized resource names. + */ +export const createSyncResourceName = (name: string) => { + return `sync-system-${kebabCase(name)}`; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/createSyncSystemPulumiApp.ts b/packages/pulumi-aws/src/apps/syncSystem/createSyncSystemPulumiApp.ts index 23c862f6cb0..8afb30de36f 100644 --- a/packages/pulumi-aws/src/apps/syncSystem/createSyncSystemPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/syncSystem/createSyncSystemPulumiApp.ts @@ -1,9 +1,13 @@ +import * as pulumi from "@pulumi/pulumi"; import { createPulumiApp, PulumiAppParam } from "@webiny/pulumi"; -import { SyncSystemDynamo } from "./SyncSystemDynamo"; -import { DEFAULT_PROD_ENV_NAMES } from "~/constants"; -import { SyncSystemSQS } from "./SyncSystemSQS"; -import { SyncSystemLambda } from "./SyncSystemLambda"; -import { addTableItems } from "./addTableItems"; +import { DEFAULT_PROD_ENV_NAMES } from "~/constants.js"; +import { SyncSystemSQS } from "./SyncSystemSQS.js"; +import { SyncSystemLambda } from "./SyncSystemLambda.js"; +import type { IGetSyncSystemOutputResult, PulumiOutput } from "./types.js"; +import { APPS_SYNC_SYSTEM_PATH } from "./constants.js"; +import { SyncSystemEventBus } from "./SyncSystemEventBus.js"; +import { customApp } from "./customApp.js"; +import { SyncSystemDynamoDb } from "~/apps/syncSystem/SyncSystemDynamoDb.js"; export type SyncSystemPulumiApp = ReturnType; @@ -63,51 +67,101 @@ export interface CreateSyncSystemPulumiAppParams { productionEnvironments?: PulumiAppParam; } -export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams = {}) { +export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams) { return createPulumiApp({ - name: "syncSystem", - path: "apps/syncSystem", + name: "sync", + path: APPS_SYNC_SYSTEM_PATH, config: projectAppParams, program: async app => { + const pulumiResourceNamePrefix = app.getParam( + projectAppParams.pulumiResourceNamePrefix + ); + if (pulumiResourceNamePrefix) { + app.onResource(resource => { + if (!resource.name.startsWith(pulumiResourceNamePrefix)) { + resource.name = `${pulumiResourceNamePrefix}${resource.name}`; + } + }); + } const productionEnvironments = app.params.create.productionEnvironments || DEFAULT_PROD_ENV_NAMES; const isProduction = productionEnvironments.includes(app.params.run.env); const protect = app.getParam(projectAppParams.protect) ?? isProduction; - - const dynamoDbTable = app.addModule(SyncSystemDynamo, { - protect - }); - - const sqs = app.addModule(SyncSystemSQS, { + const regionApp = customApp({ + app, protect }); - - app.addModule(SyncSystemLambda, { - protect, - config: { - // TODO - } - }); /** - * Add + * Sync System services. */ - addTableItems({ - app, - table: dynamoDbTable, - items: {} - }); + const sqs = regionApp.addModule(SyncSystemSQS); + const dynamoDb = regionApp.addModule(SyncSystemDynamoDb); - return { + const lambda = regionApp.addModule(SyncSystemLambda); + const { eventBusRule, eventBus, eventBusTarget, eventBusPolicy } = + regionApp.addModule(SyncSystemEventBus); + + const output: PulumiOutput = { + /** + * Region provider. + */ + region: pulumi.output(process.env.AWS_REGION as string), /** - * Sync System resources. + * SyncSystemSQS */ - dynamodbTable: dynamoDbTable, - dynamodbTableArn: dynamoDbTable.output.arn, - dynamodbTableName: dynamoDbTable.output.name, - dynamodbTableHashKey: dynamoDbTable.output.hashKey, - dynamodbTableRangeKey: dynamoDbTable.output.rangeKey, - sqs, + sqsUrl: sqs.output.url, sqsArn: sqs.output.arn, + sqsName: sqs.output.name, + /** + * DynamoDB + */ + dynamoDbArn: dynamoDb.output.arn, + dynamoDbName: dynamoDb.output.name, + dynamoDbHashKey: dynamoDb.output.hashKey, + dynamoDbRangeKey: dynamoDb.output.rangeKey as pulumi.Output, + /** + * SyncSystemLambda + */ + lambdaArn: lambda.lambda.output.arn, + lambdaName: lambda.lambda.output.name, + lambdaRoleArn: lambda.role.output.arn, + lambdaRoleName: lambda.role.output.name, + lambdaRoleId: lambda.role.output.id, + lambdaPolicyArn: lambda.policy.output.arn, + lambdaPolicyName: lambda.policy.output.name, + lambdaPolicyId: lambda.policy.output.id, + lambdaEventSourceMappingArn: lambda.eventSourceMapping.output.arn, + lambdaEventSourceMappingId: lambda.eventSourceMapping.output.id, + /** + * We can safely cast as we know that the property exists. + */ + lambdaEventSourceMappingEventSourceArn: lambda.eventSourceMapping.output + .eventSourceArn as pulumi.Output, + /** + * SyncSystemEventBus + */ + eventBusArn: eventBus.output.arn, + eventBusName: eventBus.output.name, + eventBusRuleArn: eventBusRule.output.arn, + eventBusRuleName: eventBusRule.output.id, + eventBusTargetArn: eventBusTarget.output.arn, + eventBusPolicyId: eventBusPolicy.output.id, + eventBusPolicyUrn: eventBusPolicy.output.urn, + eventBusPolicyQueueUrl: eventBusPolicy.output.queueUrl + }; + app.addOutputs(output); + + return { + sqs: sqs.output, + dynamoDb: dynamoDb.output, + eventBus: eventBus.output, + eventBusRule: eventBusRule.output, + eventBusTarget: eventBusTarget.output, + eventBusPolicy: eventBusPolicy.output, + lambda: lambda.lambda.output, + lambdaRole: lambda.role.output, + lambdaPolicy: lambda.policy.output, + lambdaEventSourceMapping: lambda.eventSourceMapping.output, /** * Systems we are connecting together. */ diff --git a/packages/pulumi-aws/src/apps/syncSystem/customApp.ts b/packages/pulumi-aws/src/apps/syncSystem/customApp.ts new file mode 100644 index 00000000000..b52b8a9ecd7 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/customApp.ts @@ -0,0 +1,24 @@ +import type { PulumiApp } from "@webiny/pulumi"; + +export interface IAppWithRegionParams { + app: PulumiApp; + protect?: boolean; +} + +export const customApp = (params: IAppWithRegionParams) => { + const { app, protect } = params; + + const initialAddResource = app.addResource; + + app.addResource = (resource, params) => { + return initialAddResource(resource, { + ...params, + opts: { + protect, + ...params.opts + } + }); + }; + + return app; +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/getSyncSystemOutput.ts b/packages/pulumi-aws/src/apps/syncSystem/getSyncSystemOutput.ts new file mode 100644 index 00000000000..8cbb3d245b9 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/getSyncSystemOutput.ts @@ -0,0 +1,28 @@ +import { getStackOutput } from "@webiny/cli-plugin-deploy-pulumi/utils/index.js"; +import { APPS_SYNC_SYSTEM_PATH } from "./constants.js"; +import type { IGetSyncSystemOutputResult } from "~/apps/syncSystem/types.js"; + +export interface IGetSyncSystemOutputParams { + env: string; +} + +export const getSyncSystemOutput = (params: IGetSyncSystemOutputParams) => { + return getStackOutput({ + env: params.env, + /** + * Sync System cannot have a variant, only env. + */ + variant: undefined, + folder: APPS_SYNC_SYSTEM_PATH + }); +}; + +export const asyncGetSyncSystemOutput = async ( + params: IGetSyncSystemOutputParams +): Promise => { + return new Promise(resolve => { + const value = getSyncSystemOutput(params); + + return resolve(value); + }); +}; diff --git a/packages/pulumi-aws/src/apps/syncSystem/lambda/createSyncSystemInputLambdaPolicy.ts b/packages/pulumi-aws/src/apps/syncSystem/lambda/createSyncSystemInputLambdaPolicy.ts new file mode 100644 index 00000000000..f2986061cde --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/lambda/createSyncSystemInputLambdaPolicy.ts @@ -0,0 +1,107 @@ +import * as aws from "@pulumi/aws"; +import type { PulumiApp } from "@webiny/pulumi"; +import { SyncSystemSQS } from "../SyncSystemSQS.js"; +import { SyncSystemDynamoDb } from "../SyncSystemDynamoDb.js"; + +interface ICreateSyncSystemLambdaPolicyParams { + name: string; + app: PulumiApp; +} + +export function createSyncSystemInputLambdaPolicy(params: ICreateSyncSystemLambdaPolicyParams) { + const { app } = params; + const sqs = app.getModule(SyncSystemSQS); + const dynamoDb = app.getModule(SyncSystemDynamoDb); + + const policy: aws.iam.PolicyDocument = { + Version: "2012-10-17", + Statement: [ + { + Sid: "PermissionForSQS", + Effect: "Allow", + Action: [ + "sqs:SendMessage", + "sqs:SendMessageBatch", + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:DeleteMessageBatch", + "sqs:ChangeMessageVisibility", + "sqs:ChangeMessageVisibilityBatch", + "sqs:GetQueueAttributes" + ], + Resource: [ + sqs.output.arn.apply(arn => `${arn}`), + sqs.output.arn.apply(arn => `${arn}/*`) + ] + }, + { + Sid: "PermissionForDynamoDb", + Effect: "Allow", + Action: [ + "dynamodb:BatchGetItem", + "dynamodb:BatchWriteItem", + "dynamodb:ConditionCheckItem", + "dynamodb:CreateBackup", + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:DeleteBackup", + "dynamodb:DeleteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:DescribeBackup", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeExport", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:DescribeLimits", + "dynamodb:DescribeReservedCapacity", + "dynamodb:DescribeReservedCapacityOfferings", + "dynamodb:DescribeStream", + "dynamodb:DescribeTable", + "dynamodb:DescribeTableReplicaAutoScaling", + "dynamodb:DescribeTimeToLive", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:ExportTableToPointInTime", + "dynamodb:GetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:ListBackups", + "dynamodb:ListContributorInsights", + "dynamodb:ListExports", + "dynamodb:ListStreams", + "dynamodb:ListTables", + "dynamodb:ListTagsOfResource", + "dynamodb:PartiQLDelete", + "dynamodb:PartiQLInsert", + "dynamodb:PartiQLSelect", + "dynamodb:PartiQLUpdate", + "dynamodb:PurchaseReservedCapacityOfferings", + "dynamodb:PutItem", + "dynamodb:Query", + "dynamodb:RestoreTableFromBackup", + "dynamodb:RestoreTableToPointInTime", + "dynamodb:Scan", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateItem", + "dynamodb:UpdateTable", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateTimeToLive" + ], + Resource: [ + dynamoDb.output.arn.apply(arn => `${arn}`), + dynamoDb.output.arn.apply(arn => `${arn}/*`) + ] + } + ] + }; + + return app.addResource(aws.iam.Policy, { + name: params.name, + config: { + description: "This policy enables access to DynamoDb and SQS.", + policy + } + }); +} diff --git a/packages/pulumi-aws/src/apps/syncSystem/types.ts b/packages/pulumi-aws/src/apps/syncSystem/types.ts new file mode 100644 index 00000000000..6b70443db36 --- /dev/null +++ b/packages/pulumi-aws/src/apps/syncSystem/types.ts @@ -0,0 +1,50 @@ +import * as pulumi from "@pulumi/pulumi"; +import type { IStackOutput } from "@webiny/cli-plugin-deploy-pulumi/utils/index.js"; + +export type PulumiOutput = { + [K in keyof T]: pulumi.Output; +}; + +export interface IGetSyncSystemOutputResult extends IStackOutput { + /** + * createRegionProvider + */ + region: string; + /** + * SyncSystemSQS + */ + sqsUrl: string; + sqsArn: string; + sqsName: string; + /** + * DynamoDb + */ + dynamoDbArn: string; + dynamoDbName: string; + dynamoDbHashKey: string; + dynamoDbRangeKey: string; + /** + * SyncSystemLambda + */ + lambdaArn: string; + lambdaName: string; + lambdaRoleArn: string; + lambdaRoleName: string; + lambdaRoleId: string; + lambdaPolicyArn: string; + lambdaPolicyName: string; + lambdaPolicyId: string; + lambdaEventSourceMappingId: string; + lambdaEventSourceMappingArn: string; + lambdaEventSourceMappingEventSourceArn: string; + /** + * SyncSystemEventBus + */ + eventBusArn: string; + eventBusName: string; + eventBusRuleArn: string; + eventBusRuleName: string; + eventBusTargetArn: string; + eventBusPolicyUrn: string; + eventBusPolicyQueueUrl: string; +} diff --git a/packages/pulumi-aws/src/enterprise/createSyncSystemPulumiApp.ts b/packages/pulumi-aws/src/enterprise/createSyncSystemPulumiApp.ts index 8008e76c5f7..25b2ac1ad5c 100644 --- a/packages/pulumi-aws/src/enterprise/createSyncSystemPulumiApp.ts +++ b/packages/pulumi-aws/src/enterprise/createSyncSystemPulumiApp.ts @@ -20,7 +20,7 @@ export interface CreateSyncSystemPulumiAppParams vpc?: PulumiAppParam; } -export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams = {}) { +export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams) { return baseCreateSyncSystemPulumiApp({ ...projectAppParams, // If using existing VPC, we ensure `vpc` param is set to `false`. diff --git a/packages/pulumi-aws/src/utils/createAssetArchive.ts b/packages/pulumi-aws/src/utils/createAssetArchive.ts new file mode 100644 index 00000000000..3dc8cfaabe4 --- /dev/null +++ b/packages/pulumi-aws/src/utils/createAssetArchive.ts @@ -0,0 +1,7 @@ +import * as pulumi from "@pulumi/pulumi"; + +export const createAssetArchive = (target: string) => { + return new pulumi.asset.AssetArchive({ + ".": new pulumi.asset.FileArchive(target) + }); +}; diff --git a/packages/serverless-cms-aws/package.json b/packages/serverless-cms-aws/package.json index 7b37ae58689..fcabd7f268e 100644 --- a/packages/serverless-cms-aws/package.json +++ b/packages/serverless-cms-aws/package.json @@ -43,6 +43,7 @@ "@webiny/api-prerendering-service-so-ddb": "0.0.0", "@webiny/api-security": "0.0.0", "@webiny/api-security-so-ddb": "0.0.0", + "@webiny/api-sync-system": "0.0.0", "@webiny/api-tenancy": "0.0.0", "@webiny/api-tenancy-so-ddb": "0.0.0", "@webiny/aws-sdk": "0.0.0", diff --git a/packages/serverless-cms-aws/src/createSyncSystemApp.ts b/packages/serverless-cms-aws/src/createSyncSystemApp.ts new file mode 100644 index 00000000000..8a733e5dcc3 --- /dev/null +++ b/packages/serverless-cms-aws/src/createSyncSystemApp.ts @@ -0,0 +1,28 @@ +import type { CreateSyncSystemPulumiAppParams } from "@webiny/pulumi-aws/apps/syncSystem/createSyncSystemPulumiApp.js"; +import { createSyncSystemPulumiApp } from "@webiny/pulumi-aws/apps/syncSystem/createSyncSystemPulumiApp.js"; +import type { PluginCollection } from "@webiny/plugins/types"; + +export interface CreateSyncSystemAppParams extends CreateSyncSystemPulumiAppParams { + plugins?: PluginCollection; +} + +export function createSyncSystemApp(projectAppParams: CreateSyncSystemAppParams) { + const plugins = projectAppParams.plugins ? [...projectAppParams.plugins] : []; + + return { + id: "sync", + name: "Sync System", + description: "Your project's Sync System.", + cli: { + // Default args for the "yarn webiny watch ..." command (we don't need the deploy option while developing). + watch: { + // We disable local development for all AWS Lambda functions. + // This can be changed down the line by passing another set of values + // to the "watch" command (for example `-f ps-render-subscriber`). + function: "none" + } + }, + pulumi: createSyncSystemPulumiApp(projectAppParams), + plugins: plugins.concat([]) + }; +} diff --git a/packages/serverless-cms-aws/src/enterprise/createApiApp.ts b/packages/serverless-cms-aws/src/enterprise/createApiApp.ts index a609453423b..a3b7759ac1e 100644 --- a/packages/serverless-cms-aws/src/enterprise/createApiApp.ts +++ b/packages/serverless-cms-aws/src/enterprise/createApiApp.ts @@ -8,6 +8,7 @@ import { generateDdbHandlers, injectWcpTelemetryClientCode } from "~/api/plugins"; +import { createSyncSystemPlugins } from "./sync/plugins.js"; export { ApiOutput } from "@webiny/pulumi-aws"; @@ -20,7 +21,8 @@ export function createApiApp(projectAppParams: CreateApiAppParams = {}) { ensureCoreDeployed, injectWcpTelemetryClientCode, generateCommonHandlers, - executeDataMigrations + executeDataMigrations, + createSyncSystemPlugins() ]; if (projectAppParams.elasticSearch || projectAppParams.openSearch) { diff --git a/packages/serverless-cms-aws/src/enterprise/sync/plugins.ts b/packages/serverless-cms-aws/src/enterprise/sync/plugins.ts new file mode 100644 index 00000000000..1f12eb9dea0 --- /dev/null +++ b/packages/serverless-cms-aws/src/enterprise/sync/plugins.ts @@ -0,0 +1,130 @@ +import { Plugin } from "@webiny/plugins"; +import { + createAfterDeployPlugin, + createAfterDestroyPlugin +} from "@webiny/cli-plugin-deploy-pulumi/plugins/index.js"; +import { DeleteCommand, getDocumentClient, PutCommand } from "@webiny/aws-sdk/client-dynamodb"; +import { getSyncSystemOutput } from "@webiny/pulumi-aws/apps/syncSystem/getSyncSystemOutput.js"; +import { getStackOutput } from "@webiny/cli-plugin-deploy-pulumi/utils/index.js"; +import { createSystemName } from "@webiny/api-sync-system/utils/createSystemName.js"; + +interface IGetStacksParams { + env: string; + variant: string | undefined; +} + +const getStacks = async (params: IGetStacksParams) => { + const { env, variant } = params; + const syncSystem = getSyncSystemOutput({ + env + }); + if (!syncSystem) { + return { + syncSystem: null + }; + } + const core = getStackOutput({ + env, + variant, + folder: "apps/core" + }); + if (!core) { + return { + syncSystem, + core: null + }; + } + return { + syncSystem, + core + }; +}; +/** + * Note that the plugins will only have effect if the Sync System is deployed in same env as the API system. + */ +export const createSyncSystemPlugins = (): Plugin[] => { + return [ + /** + * After deployment of API system, we need to write the deployment information to the Sync System DynamoDB table. + * This way Sync System will know which deployments exist. + */ + createAfterDeployPlugin(async ({ env, variant }) => { + const { syncSystem, core } = await getStacks({ env, variant }); + if (!syncSystem || !core) { + return; + } + const client = getDocumentClient({ + region: syncSystem.region + }); + const tableName = syncSystem.dynamoDbName; + if (!tableName) { + throw new Error("Sync System DynamoDB table name is not defined."); + } + + const item = { + name: createSystemName({ env, variant }), + env, + variant, + version: process.env.WEBINY_VERSION, + region: core.region, + s3Id: core.fileManagerBucketId, + s3Arn: core.fileManagerBucketArn, + primaryDynamoDbArn: core.primaryDynamodbTableArn, + primaryDynamoDbName: core.primaryDynamodbTableName, + primaryDynamoDbHashKey: core.primaryDynamodbTableHashKey, + primaryDynamoDbRangeKey: core.primaryDynamodbTableRangeKey, + elasticsearchDynamodbTableArn: core.elasticsearchDynamodbTableArn, + elasticsearchDynamodbTableName: core.elasticsearchDynamodbTableName + }; + + const cmd = new PutCommand({ + TableName: tableName, + Item: { + PK: `DEPLOYMENT#${env}#${variant || "unknown"}`, + SK: `default`, + GSI1_PK: "DEPLOYMENTS", + GSI1_SK: `${env}#${variant || "unknown"}`, + item + } + }); + try { + await client.send(cmd); + } catch (ex) { + console.error("Error while writing to Sync System DynamoDB table."); + console.log(ex.message); + throw ex; + } + }), + /** + * After destroy of the deployment, we need to delete the deployment information from the Sync System DynamoDB table. + */ + createAfterDestroyPlugin(async ({ env, variant }) => { + const { syncSystem, core } = await getStacks({ env, variant }); + if (!syncSystem || !core) { + return; + } + const client = getDocumentClient({ + region: syncSystem.region + }); + const tableName = syncSystem.dynamoDbName; + if (!tableName) { + throw new Error("Sync System DynamoDB table name is not defined."); + } + + const cmd = new DeleteCommand({ + TableName: tableName, + Key: { + PK: "DEPLOYMENTS", + SK: `${env}#${variant || "unknown"}` + } + }); + try { + await client.send(cmd); + } catch (ex) { + console.error("Error while deleting from Sync System DynamoDB table."); + console.log(ex.message); + throw ex; + } + }) + ]; +}; diff --git a/packages/serverless-cms-aws/src/index.ts b/packages/serverless-cms-aws/src/index.ts index dda34133e8e..2795f2b6f39 100644 --- a/packages/serverless-cms-aws/src/index.ts +++ b/packages/serverless-cms-aws/src/index.ts @@ -10,4 +10,5 @@ export * from "./createWebsiteAppConfig"; // -export * from "./createBlueGreenApp"; +export * from "./createBlueGreenApp.js"; +export * from "./createSyncSystemApp.js"; diff --git a/packages/serverless-cms-aws/tsconfig.build.json b/packages/serverless-cms-aws/tsconfig.build.json index 3bfa5088b8f..b75a289dd67 100644 --- a/packages/serverless-cms-aws/tsconfig.build.json +++ b/packages/serverless-cms-aws/tsconfig.build.json @@ -30,6 +30,7 @@ { "path": "../api-prerendering-service-so-ddb/tsconfig.build.json" }, { "path": "../api-security/tsconfig.build.json" }, { "path": "../api-security-so-ddb/tsconfig.build.json" }, + { "path": "../api-sync-system/tsconfig.build.json" }, { "path": "../api-tenancy/tsconfig.build.json" }, { "path": "../api-tenancy-so-ddb/tsconfig.build.json" }, { "path": "../aws-sdk/tsconfig.build.json" }, diff --git a/packages/serverless-cms-aws/tsconfig.json b/packages/serverless-cms-aws/tsconfig.json index 035298374e0..77e3d351cbe 100644 --- a/packages/serverless-cms-aws/tsconfig.json +++ b/packages/serverless-cms-aws/tsconfig.json @@ -30,6 +30,7 @@ { "path": "../api-prerendering-service-so-ddb" }, { "path": "../api-security" }, { "path": "../api-security-so-ddb" }, + { "path": "../api-sync-system" }, { "path": "../api-tenancy" }, { "path": "../api-tenancy-so-ddb" }, { "path": "../aws-sdk" }, @@ -111,6 +112,8 @@ "@webiny/api-security": ["../api-security/src"], "@webiny/api-security-so-ddb/*": ["../api-security-so-ddb/src/*"], "@webiny/api-security-so-ddb": ["../api-security-so-ddb/src"], + "@webiny/api-sync-system/*": ["../api-sync-system/src/*"], + "@webiny/api-sync-system": ["../api-sync-system/src"], "@webiny/api-tenancy/*": ["../api-tenancy/src/*"], "@webiny/api-tenancy": ["../api-tenancy/src"], "@webiny/api-tenancy-so-ddb/*": ["../api-tenancy-so-ddb/src/*"], diff --git a/packages/utils/src/exception.ts b/packages/utils/src/exception.ts new file mode 100644 index 00000000000..87da341b976 --- /dev/null +++ b/packages/utils/src/exception.ts @@ -0,0 +1,16 @@ +import type { GenericRecord } from "~/GenericRecord.js"; + +/** + * This will help with output of the error object. + * Normally, the error object is not serializable, so we need to convert it to a plain object. + */ +export const convertException = (error: Error, remove?: string[]): GenericRecord => { + const properties = Object.getOwnPropertyNames(error) as (keyof Error)[]; + return properties.reduce((items, property) => { + if (remove && remove.includes(property)) { + return items; + } + items[property] = error[property]; + return items; + }, {}); +}; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index cd95549c724..435cf5cc222 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,5 +1,6 @@ export * from "~/parseIdentifier"; export * from "~/zeroPad"; +export * from "~/exception.js"; export * from "~/createIdentifier"; export * from "~/cursor"; export * from "~/headers"; diff --git a/webiny.project.ts b/webiny.project.ts index 9c5f0cd687d..6179ab91f72 100644 --- a/webiny.project.ts +++ b/webiny.project.ts @@ -50,6 +50,7 @@ export default { }, appAliases: { blueGreen: "apps/blueGreen", + sync: "apps/sync", core: "apps/core", api: "apps/api", admin: "apps/admin", diff --git a/yarn.lock b/yarn.lock index 0bee959d3ee..862b4c5a702 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3904,12 +3904,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.26.0": - version: 7.26.10 - resolution: "@babel/runtime@npm:7.26.10" +"@babel/runtime@npm:^7.26.7": + version: 7.27.0 + resolution: "@babel/runtime@npm:7.27.0" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/9d7ff8e96abe3791047c1138789c742411e3ef19c4d7ca18ce916f83cec92c06ec5dc64401759f6dd1e377cf8a01bbd2c62e033eb7550f435cf6579768d0d4a5 + checksum: 10/e6966e03b695feb4c0ac0856a4355231c2580bf9ebd0298f47739f85c0ea658679dd84409daf26378d42c86c1cbe7e33feab709b14e784254b6c441d91606465 languageName: node linkType: hard @@ -12694,7 +12694,7 @@ __metadata: "@webiny/wcp": "npm:0.0.0" graphql: "npm:^15.9.0" ttypescript: "npm:^1.5.15" - typescript: "npm:4.9.5" + typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -13698,6 +13698,28 @@ __metadata: languageName: unknown linkType: soft +"@webiny/api-sync-system@npm:0.0.0, @webiny/api-sync-system@workspace:packages/api-sync-system": + version: 0.0.0-use.local + resolution: "@webiny/api-sync-system@workspace:packages/api-sync-system" + dependencies: + "@types/lodash": "npm:^4.17.13" + "@webiny/api": "npm:0.0.0" + "@webiny/aws-sdk": "npm:0.0.0" + "@webiny/error": "npm:0.0.0" + "@webiny/handler": "npm:0.0.0" + "@webiny/handler-aws": "npm:0.0.0" + "@webiny/plugins": "npm:0.0.0" + "@webiny/project-utils": "npm:0.0.0" + "@webiny/utils": "npm:0.0.0" + jest: "npm:^29.7.0" + jest-dynalite: "npm:^3.6.1" + lodash: "npm:^4.17.21" + rimraf: "npm:^6.0.1" + typescript: "npm:5.3.3" + zod: "npm:^3.23.8" + languageName: unknown + linkType: soft + "@webiny/api-tenancy-so-ddb@npm:0.0.0, @webiny/api-tenancy-so-ddb@workspace:packages/api-tenancy-so-ddb": version: 0.0.0-use.local resolution: "@webiny/api-tenancy-so-ddb@workspace:packages/api-tenancy-so-ddb" @@ -16186,6 +16208,7 @@ __metadata: "@webiny/api-prerendering-service-so-ddb": "npm:0.0.0" "@webiny/api-security": "npm:0.0.0" "@webiny/api-security-so-ddb": "npm:0.0.0" + "@webiny/api-sync-system": "npm:0.0.0" "@webiny/api-tenancy": "npm:0.0.0" "@webiny/api-tenancy-so-ddb": "npm:0.0.0" "@webiny/aws-sdk": "npm:0.0.0" @@ -17183,6 +17206,7 @@ __metadata: "@webiny/api-security-cognito": "npm:0.0.0" "@webiny/api-security-so-ddb": "npm:0.0.0" "@webiny/api-serverless-cms": "npm:0.0.0" + "@webiny/api-sync-system": "npm:0.0.0" "@webiny/api-tenancy": "npm:0.0.0" "@webiny/api-tenancy-so-ddb": "npm:0.0.0" "@webiny/api-tenant-manager": "npm:0.0.0" @@ -27746,7 +27770,7 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.7.0": +"jest-resolve@npm:^29.5.0, jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" dependencies: @@ -35831,6 +35855,7 @@ __metadata: semver: "npm:^7.6.3" ts-expect: "npm:^1.3.0" ts-jest: "npm:29.1.5" + ts-jest-resolver: "npm:^2.0.1" ts-node: "npm:^10.9.2" type-fest: "npm:4.14.0" typescript: "npm:5.3.3" @@ -38357,6 +38382,15 @@ __metadata: languageName: node linkType: hard +"ts-jest-resolver@npm:^2.0.1": + version: 2.0.1 + resolution: "ts-jest-resolver@npm:2.0.1" + dependencies: + jest-resolve: "npm:^29.5.0" + checksum: 10/0845b9ab6a7d5c7b872e7573550607e9da1a2281c4db7a9d900c52b518bf5237ca265d56356b2ebb6d5aad705613e55e406c0eb66cad60ab2a303d17e6b0844e + languageName: node + linkType: hard + "ts-jest@npm:29.1.5": version: 29.1.5 resolution: "ts-jest@npm:29.1.5" @@ -38835,16 +38869,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.9.5": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/458f7220ab11e0fc191514cc41be1707645ec9a8c2d609448a448e18c522cef9646f58728f6811185a4c35613dacdf6c98cf8965c88b3541d0288c47291e4300 - languageName: node - linkType: hard - "typescript@npm:5.3.3": version: 5.3.3 resolution: "typescript@npm:5.3.3" @@ -38865,16 +38889,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A4.9.5#optional!builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/5659316360b5cc2d6f5931b346401fa534107b68b60179cf14970e27978f0936c1d5c46f4b5b8175f8cba0430f522b3ce355b4b724c0ea36ce6c0347fab25afd - languageName: node - linkType: hard - "typescript@patch:typescript@npm%3A5.3.3#optional!builtin": version: 5.3.3 resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7"