@webiny/migrations 5.39.8 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ddb-es.d.ts +2 -1
- package/ddb-es.js +4 -1
- package/ddb-es.js.map +1 -1
- package/ddb.d.ts +2 -1
- package/ddb.js +6 -1
- package/ddb.js.map +1 -1
- package/migrations/5.35.0/001/FileSettingsMigration.js.map +1 -1
- package/migrations/5.35.0/001/ddb/FileDataMigration.js.map +1 -1
- package/migrations/5.35.0/001/ddb/index.js.map +1 -1
- package/migrations/5.35.0/001/ddb-es/FileDataMigration.js.map +1 -1
- package/migrations/5.35.0/001/ddb-es/index.js.map +1 -1
- package/migrations/5.35.0/001/entities/createFileEntity.js +1 -2
- package/migrations/5.35.0/001/entities/createFileEntity.js.map +1 -1
- package/migrations/5.35.0/001/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.35.0/001/entities/createSettingsEntity.js.map +1 -1
- package/migrations/5.35.0/001/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/001/types.js.map +1 -1
- package/migrations/5.35.0/002/createLocaleEntity.js.map +1 -1
- package/migrations/5.35.0/002/createSettingsEntity.js.map +1 -1
- package/migrations/5.35.0/002/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/002/index.js.map +1 -1
- package/migrations/5.35.0/003/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/003/createUserEntity.js.map +1 -1
- package/migrations/5.35.0/003/index.js.map +1 -1
- package/migrations/5.35.0/004/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/004/index.js.map +1 -1
- package/migrations/5.35.0/005/createLocaleEntity.js.map +1 -1
- package/migrations/5.35.0/005/createModelEntity.js.map +1 -1
- package/migrations/5.35.0/005/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/005/index.js.map +1 -1
- package/migrations/5.35.0/005/types.js.map +1 -1
- package/migrations/5.35.0/006/constants.js +3 -6
- package/migrations/5.35.0/006/constants.js.map +1 -1
- package/migrations/5.35.0/006/ddb/PageDataMigration.js.map +1 -1
- package/migrations/5.35.0/006/ddb/index.js.map +1 -1
- package/migrations/5.35.0/006/ddb-es/PageDataMigration.js.map +1 -1
- package/migrations/5.35.0/006/ddb-es/index.js.map +1 -1
- package/migrations/5.35.0/006/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.35.0/006/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.35.0/006/entities/createPageEntity.js.map +1 -1
- package/migrations/5.35.0/006/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.35.0/006/types.js.map +1 -1
- package/migrations/5.35.0/006/utils/getCompressedData.js.map +1 -1
- package/migrations/5.35.0/006/utils/getLexicalContentText.js.map +1 -1
- package/migrations/5.35.0/006/utils/getSearchableContent.js.map +1 -1
- package/migrations/5.35.0/006/utils/processors/button.js.map +1 -1
- package/migrations/5.35.0/006/utils/processors/image.js.map +1 -1
- package/migrations/5.35.0/006/utils/processors/images.js.map +1 -1
- package/migrations/5.35.0/006/utils/processors/index.js +1 -2
- package/migrations/5.35.0/006/utils/processors/index.js.map +1 -1
- package/migrations/5.35.0/006/utils/processors/paragraph.js.map +1 -1
- package/migrations/5.36.0/001/constants.js +3 -6
- package/migrations/5.36.0/001/constants.js.map +1 -1
- package/migrations/5.36.0/001/ddb/FileDataMigration.js.map +1 -1
- package/migrations/5.36.0/001/ddb/index.js.map +1 -1
- package/migrations/5.36.0/001/ddb-es/FileDataMigration.js.map +1 -1
- package/migrations/5.36.0/001/ddb-es/index.js.map +1 -1
- package/migrations/5.36.0/001/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.36.0/001/entities/createFileEntity.js.map +1 -1
- package/migrations/5.36.0/001/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.36.0/001/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.36.0/001/types.js.map +1 -1
- package/migrations/5.36.0/001/utils/createMimeTag.js.map +1 -1
- package/migrations/5.36.0/001/utils/getCompressedData.js.map +1 -1
- package/migrations/5.37.0/001/TenantLinkDataMigration.js.map +1 -1
- package/migrations/5.37.0/001/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.37.0/001/entities/createTenantLinkEntity.js.map +1 -1
- package/migrations/5.37.0/001/index.js.map +1 -1
- package/migrations/5.37.0/001/types.js.map +1 -1
- package/migrations/5.37.0/001/utils/isMigratedTenantLink.js.map +1 -1
- package/migrations/5.37.0/002/constants.js +1 -2
- package/migrations/5.37.0/002/constants.js.map +1 -1
- package/migrations/5.37.0/002/ddb/index.js.map +1 -1
- package/migrations/5.37.0/002/ddb-es/index.js.map +1 -1
- package/migrations/5.37.0/002/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.37.0/002/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.37.0/002/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.37.0/002/types.js.map +1 -1
- package/migrations/5.37.0/002/utils/getCompressedData.js.map +1 -1
- package/migrations/5.37.0/002/utils/getDecompressedData.js.map +1 -1
- package/migrations/5.37.0/003/constants.js +3 -6
- package/migrations/5.37.0/003/constants.js.map +1 -1
- package/migrations/5.37.0/003/ddb/AcoFolderMigration.js.map +1 -1
- package/migrations/5.37.0/003/ddb/index.js.map +1 -1
- package/migrations/5.37.0/003/ddb-es/AcoFolderMigration.js.map +1 -1
- package/migrations/5.37.0/003/ddb-es/index.js.map +1 -1
- package/migrations/5.37.0/003/ddb-es/latestElasticsearchData.js.map +1 -1
- package/migrations/5.37.0/003/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.37.0/003/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.37.0/003/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.37.0/003/types.js.map +1 -1
- package/migrations/5.37.0/003/utils/getCompressedData.js.map +1 -1
- package/migrations/5.37.0/003/utils/getDecompressedData.js.map +1 -1
- package/migrations/5.37.0/004/constants.js +7 -14
- package/migrations/5.37.0/004/constants.js.map +1 -1
- package/migrations/5.37.0/004/ddb/PageDataMigration.js.map +1 -1
- package/migrations/5.37.0/004/ddb/index.js.map +1 -1
- package/migrations/5.37.0/004/ddb-es/PageDataMigration.js.map +1 -1
- package/migrations/5.37.0/004/ddb-es/index.js.map +1 -1
- package/migrations/5.37.0/004/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.37.0/004/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.37.0/004/entities/createPageEntity.js.map +1 -1
- package/migrations/5.37.0/004/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.37.0/004/types.js.map +1 -1
- package/migrations/5.37.0/004/utils/getCompressedData.js.map +1 -1
- package/migrations/5.37.0/005/constants.js +3 -6
- package/migrations/5.37.0/005/constants.js.map +1 -1
- package/migrations/5.37.0/005/ddb/index.js.map +1 -1
- package/migrations/5.37.0/005/ddb-es/index.js.map +1 -1
- package/migrations/5.37.0/005/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.37.0/005/entities/createFileEntity.js.map +1 -1
- package/migrations/5.37.0/005/entities/createLocaleEntity.js.map +1 -1
- package/migrations/5.37.0/005/entities/createTenantEntity.js.map +1 -1
- package/migrations/5.37.0/005/entities/createTenantLinkEntity.js.map +1 -1
- package/migrations/5.37.0/005/types.js.map +1 -1
- package/migrations/5.38.0/001/ddb/index.js.map +1 -1
- package/migrations/5.38.0/001/ddb-es/index.js.map +1 -1
- package/migrations/5.38.0/001/entities/createFormEntity.js.map +1 -1
- package/migrations/5.38.0/001/types.js.map +1 -1
- package/migrations/5.38.0/002/ddb/index.js.map +1 -1
- package/migrations/5.38.0/002/ddb-es/index.js.map +1 -1
- package/migrations/5.38.0/002/entities/createFormEntity.js.map +1 -1
- package/migrations/5.38.0/002/entities/createFormSubmissionDdbEsEntity.js.map +1 -1
- package/migrations/5.38.0/002/entities/createFormSubmissionEntity.js.map +1 -1
- package/migrations/5.38.0/002/types.js.map +1 -1
- package/migrations/5.38.0/003/ddb/compressContent.js.map +1 -1
- package/migrations/5.38.0/003/ddb/index.js.map +1 -1
- package/migrations/5.38.0/003/entities/createPageBlockEntity.js.map +1 -1
- package/migrations/5.38.0/003/types.js.map +1 -1
- package/migrations/5.39.0/001/ddb/index.js.map +1 -1
- package/migrations/5.39.0/001/ddb-es/index.js.map +1 -1
- package/migrations/5.39.0/001/entities/createEntryEntity.js +24 -0
- package/migrations/5.39.0/001/entities/createEntryEntity.js.map +1 -1
- package/migrations/5.39.0/001/types.js.map +1 -1
- package/migrations/5.39.0/001/utils/assignNewMetaFields.js.map +1 -1
- package/migrations/5.39.0/001/utils/ensureAllNonNullableValues.js.map +1 -1
- package/migrations/5.39.0/001/utils/fixTypeFieldValue.js.map +1 -1
- package/migrations/5.39.0/001/utils/getCompressedData.js.map +1 -1
- package/migrations/5.39.0/001/utils/getDecompressedData.js.map +1 -1
- package/migrations/5.39.0/001/utils/getFallbackIdentity.js.map +1 -1
- package/migrations/5.39.0/001/utils/getFirstLastPublishedOn.js.map +1 -1
- package/migrations/5.39.0/001/utils/getNonNullableFieldsWithMissingValues.d.ts +1 -1
- package/migrations/5.39.0/001/utils/getNonNullableFieldsWithMissingValues.js.map +1 -1
- package/migrations/5.39.0/001/utils/getOldestRevisionCreatedOn.js.map +1 -1
- package/migrations/5.39.0/001/utils/hasAllNonNullableValues.js.map +1 -1
- package/migrations/5.39.0/001/utils/hasValidTypeFieldValue.js.map +1 -1
- package/migrations/5.39.0/001/utils/isMigratedEntry.js.map +1 -1
- package/migrations/5.39.0/002/ddb/FileManager_5_39_0_002.js.map +1 -1
- package/migrations/5.39.0/002/ddb/index.js.map +1 -1
- package/migrations/5.39.0/002/ddb-es/FileManager_5_39_0_002.js.map +1 -1
- package/migrations/5.39.0/002/ddb-es/index.js.map +1 -1
- package/migrations/5.39.0/002/utils/FileMetadata.js.map +1 -1
- package/migrations/5.39.0/002/utils/createFileEntity.js.map +1 -1
- package/migrations/5.39.0/002/utils/createLocaleEntity.js.map +1 -1
- package/migrations/5.39.0/002/utils/createTenantEntity.js.map +1 -1
- package/migrations/5.39.2/001/ddb-es/index.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/MetaFieldsMigration.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/SegmentProcessor.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/bin.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/createMetaFieldsDataMigrationDeploymentHook.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/index.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/utils.js +2 -4
- package/migrations/5.39.6/001/ddb-es/utils.js.map +1 -1
- package/migrations/5.39.6/001/ddb-es/worker.js.map +1 -1
- package/migrations/5.40.0/001/ddb/compression.d.ts +15 -0
- package/migrations/5.40.0/001/ddb/compression.js +42 -0
- package/migrations/5.40.0/001/ddb/compression.js.map +1 -0
- package/migrations/5.40.0/001/ddb/createBlockEntity.d.ts +42 -0
- package/migrations/5.40.0/001/ddb/createBlockEntity.js +54 -0
- package/migrations/5.40.0/001/ddb/createBlockEntity.js.map +1 -0
- package/migrations/5.40.0/001/ddb/index.d.ts +13 -0
- package/migrations/5.40.0/001/ddb/index.js +155 -0
- package/migrations/5.40.0/001/ddb/index.js.map +1 -0
- package/migrations/5.40.0/001/ddb/types.d.ts +20 -0
- package/migrations/5.40.0/001/ddb/types.js +7 -0
- package/migrations/5.40.0/001/ddb/types.js.map +1 -0
- package/package.json +17 -17
- package/utils/createEntity.js.map +1 -1
- package/utils/createLocaleEntity.js.map +1 -1
- package/utils/createTenantEntity.js.map +1 -1
- package/utils/dynamoDb.js.map +1 -1
- package/utils/elasticsearch/disableEsIndexing.js.map +1 -1
- package/utils/elasticsearch/esCreateIndex.js.map +1 -1
- package/utils/elasticsearch/esFindOne.js.map +1 -1
- package/utils/elasticsearch/esGetIndexExist.js.map +1 -1
- package/utils/elasticsearch/esGetIndexName.js.map +1 -1
- package/utils/elasticsearch/esGetIndexSettings.js.map +1 -1
- package/utils/elasticsearch/esListIndexes.js.map +1 -1
- package/utils/elasticsearch/esPutIndexSettings.js.map +1 -1
- package/utils/elasticsearch/esQueryAll.js.map +1 -1
- package/utils/elasticsearch/esQueryAllWithCallback.js.map +1 -1
- package/utils/elasticsearch/fetchOriginalEsSettings.js.map +1 -1
- package/utils/elasticsearch/index.js.map +1 -1
- package/utils/elasticsearch/plugins/base.js +1 -2
- package/utils/elasticsearch/plugins/base.js.map +1 -1
- package/utils/elasticsearch/plugins/index.js.map +1 -1
- package/utils/elasticsearch/plugins/japanese.js +1 -2
- package/utils/elasticsearch/plugins/japanese.js.map +1 -1
- package/utils/elasticsearch/restoreOriginalEsSettings.js.map +1 -1
- package/utils/forEachTenantLocale.js.map +1 -1
- package/utils/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createFormSubmissionEntity","_createFormSubmissionDdbEsEntity","MultiStepForms_5_38_0_002","constructor","table","esTable","elasticsearchClient","formSubmissionEntity","createFormSubmissionEntity","formSubmissionDdbEsEntity","createFormSubmissionDdbEsEntity","getId","getDescription","shouldExecute","logger","forEachTenantLocale","callback","tenantId","localeCode","indexNameParams","tenant","locale","type","isHeadlessCmsModel","indexExists","esGetIndexExist","info","esRecords","esQueryAll","index","esGetIndexName","body","query","bool","filter","term","must_not","exists","field","size","length","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","entity","options","filters","attr","eq","startKey","undefined","limit","scanResults","items","primaryTableRecordsToWrite","ddbEsTableRecordsToRead","ddbEsTableRecordsToWrite","scanResult","form","steps","Array","isArray","layout","title","push","putBatch","getBatch","indexes","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","ddbEsTableRecords","batchReadAll","ddbEsTableRecord","data","batchWriteAll","trace","executeWithRetry","onFailedAttempt","error","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","restoreOriginalElasticsearchSettings","indexSettings","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n ddbScanWithCallback,\n disableElasticsearchIndexing,\n esGetIndexExist,\n esGetIndexName,\n esQueryAll,\n fetchOriginalElasticsearchSettings,\n forEachTenantLocale,\n restoreOriginalElasticsearchSettings\n} from \"~/utils\";\nimport { FbForm, FbFormSubmission } from \"../types\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createFormSubmissionEntity } from \"~/migrations/5.38.0/002/entities/createFormSubmissionEntity\";\nimport { createFormSubmissionDdbEsEntity } from \"~/migrations/5.38.0/002/entities/createFormSubmissionDdbEsEntity\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface FormSubmissionsDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\nexport class MultiStepForms_5_38_0_002 implements DataMigration {\n private readonly table: Table<string, string, string>;\n private readonly esTable: Table<string, string, string>;\n private readonly formSubmissionEntity: ReturnType<typeof createFormSubmissionEntity>;\n private readonly formSubmissionDdbEsEntity: ReturnType<typeof createFormSubmissionDdbEsEntity>;\n private readonly elasticsearchClient: Client;\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.table = table;\n this.esTable = esTable;\n this.formSubmissionEntity = createFormSubmissionEntity(table);\n this.formSubmissionDdbEsEntity = createFormSubmissionDdbEsEntity(esTable);\n this.elasticsearchClient = elasticsearchClient;\n }\n\n getId() {\n return \"5.38.0-002\";\n }\n\n getDescription() {\n return \"Convert forms to multi-step forms (form submissions).\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n let shouldExecute = false;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n const indexNameParams = {\n tenant: tenantId,\n locale: localeCode,\n type: \"form-builder\",\n isHeadlessCmsModel: false\n };\n\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n ...indexNameParams\n });\n\n if (!indexExists) {\n logger.info(\n `No Elasticsearch index found for folders in tenant \"${tenantId}\" and locale \"${localeCode}\"; skipping.`\n );\n\n // Continue with next locale.\n return true;\n }\n\n const esRecords = await esQueryAll<FbForm>({\n elasticsearchClient: this.elasticsearchClient,\n index: esGetIndexName(indexNameParams),\n body: {\n query: {\n bool: {\n filter: [{ term: { \"__type.keyword\": \"fb.submission\" } }],\n must_not: {\n exists: {\n field: \"form.steps\"\n }\n }\n }\n },\n size: 1\n }\n });\n\n if (esRecords.length) {\n shouldExecute = true;\n return false;\n }\n\n return true;\n }\n });\n\n return shouldExecute;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<FormSubmissionsDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as FormSubmissionsDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n\n await ddbScanWithCallback<FbFormSubmission>(\n {\n entity: this.formSubmissionEntity,\n options: {\n filters: [\n {\n attr: \"TYPE\",\n eq: \"fb.formSubmission\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 500\n }\n },\n async scanResults => {\n logger.debug(`Processing ${scanResults.items.length} items...`);\n const primaryTableRecordsToWrite: BatchWriteItem[] = [];\n const ddbEsTableRecordsToRead: BatchReadItem[] = [];\n const ddbEsTableRecordsToWrite: BatchWriteItem[] = [];\n\n // First, let's prepare a list of records to write to the primary table.\n for (const scanResult of scanResults.items) {\n if (scanResult.form.steps) {\n continue;\n }\n\n // If no steps are defined, we need to create a single step.\n scanResult.form.steps = [];\n\n if (Array.isArray(scanResult.form.layout)) {\n // If layout is an array, we need to create a single step with all the fields.\n scanResult.form.steps = [\n { title: \"Step 1\", layout: scanResult.form.layout }\n ];\n delete scanResult.form.layout;\n }\n\n primaryTableRecordsToWrite.push(this.formSubmissionEntity.putBatch(scanResult));\n ddbEsTableRecordsToRead.push(\n this.formSubmissionDdbEsEntity.getBatch(scanResult)\n );\n\n const index = esGetIndexName({\n tenant: scanResult.tenant,\n locale: scanResult.locale,\n type: \"form-builder\",\n isHeadlessCmsModel: false\n });\n\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await fetchOriginalElasticsearchSettings({\n index,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n\n // and then set not to index\n await disableElasticsearchIndexing({\n elasticsearchClient: this.elasticsearchClient,\n index,\n logger\n });\n }\n }\n\n // Second, let's prepare a list of records to write to the DDB-ES table.\n const ddbEsTableRecords = await batchReadAll({\n table: this.esTable,\n items: ddbEsTableRecordsToRead\n });\n\n for (const ddbEsTableRecord of ddbEsTableRecords) {\n if (!ddbEsTableRecord.data || !ddbEsTableRecord.data.form) {\n continue;\n }\n\n if (ddbEsTableRecord.data.form.steps) {\n continue;\n }\n\n // If no steps are defined, we need to create a single step.\n ddbEsTableRecord.data.form.steps = [];\n\n if (Array.isArray(ddbEsTableRecord.data.form.layout)) {\n // If layout is an array, we need to create a single step with all the fields.\n ddbEsTableRecord.data.form.steps = [\n { title: \"Step 1\", layout: ddbEsTableRecord.data.form.layout }\n ];\n delete ddbEsTableRecord.data.form.layout;\n }\n\n ddbEsTableRecordsToWrite.push(\n this.formSubmissionDdbEsEntity.putBatch(ddbEsTableRecord)\n );\n }\n\n {\n // 1. Update DynamoDB records (primary table).\n const execute = () => {\n return batchWriteAll({\n table: this.formSubmissionEntity.table,\n items: primaryTableRecordsToWrite\n });\n };\n\n logger.trace(\"Storing the DynamoDB records (primary table)...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n\n logger.trace(\"...stored.\");\n }\n\n {\n // 2. Update DynamoDB records (DDB-ES table).\n const execute = () => {\n return batchWriteAll({\n table: this.formSubmissionDdbEsEntity.table,\n items: ddbEsTableRecordsToWrite\n });\n };\n\n logger.trace(\"Storing the DynamoDB records (DynamoDB-ES table)...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n\n logger.trace(\"...stored.\");\n }\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = scanResults.lastEvaluatedKey?.PK\n ? (scanResults.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n /**\n * This is the end of the migration.\n */\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(MultiStepForms_5_38_0_002, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createFormSubmissionEntity","_createFormSubmissionDdbEsEntity","MultiStepForms_5_38_0_002","constructor","table","esTable","elasticsearchClient","formSubmissionEntity","createFormSubmissionEntity","formSubmissionDdbEsEntity","createFormSubmissionDdbEsEntity","getId","getDescription","shouldExecute","logger","forEachTenantLocale","callback","tenantId","localeCode","indexNameParams","tenant","locale","type","isHeadlessCmsModel","indexExists","esGetIndexExist","info","esRecords","esQueryAll","index","esGetIndexName","body","query","bool","filter","term","must_not","exists","field","size","length","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","entity","options","filters","attr","eq","startKey","undefined","limit","scanResults","items","primaryTableRecordsToWrite","ddbEsTableRecordsToRead","ddbEsTableRecordsToWrite","scanResult","form","steps","Array","isArray","layout","title","push","putBatch","getBatch","indexes","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","ddbEsTableRecords","batchReadAll","ddbEsTableRecord","data","batchWriteAll","trace","executeWithRetry","onFailedAttempt","error","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","restoreOriginalElasticsearchSettings","indexSettings","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n ddbScanWithCallback,\n disableElasticsearchIndexing,\n esGetIndexExist,\n esGetIndexName,\n esQueryAll,\n fetchOriginalElasticsearchSettings,\n forEachTenantLocale,\n restoreOriginalElasticsearchSettings\n} from \"~/utils\";\nimport { FbForm, FbFormSubmission } from \"../types\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createFormSubmissionEntity } from \"~/migrations/5.38.0/002/entities/createFormSubmissionEntity\";\nimport { createFormSubmissionDdbEsEntity } from \"~/migrations/5.38.0/002/entities/createFormSubmissionDdbEsEntity\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface FormSubmissionsDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\nexport class MultiStepForms_5_38_0_002 implements DataMigration {\n private readonly table: Table<string, string, string>;\n private readonly esTable: Table<string, string, string>;\n private readonly formSubmissionEntity: ReturnType<typeof createFormSubmissionEntity>;\n private readonly formSubmissionDdbEsEntity: ReturnType<typeof createFormSubmissionDdbEsEntity>;\n private readonly elasticsearchClient: Client;\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.table = table;\n this.esTable = esTable;\n this.formSubmissionEntity = createFormSubmissionEntity(table);\n this.formSubmissionDdbEsEntity = createFormSubmissionDdbEsEntity(esTable);\n this.elasticsearchClient = elasticsearchClient;\n }\n\n getId() {\n return \"5.38.0-002\";\n }\n\n getDescription() {\n return \"Convert forms to multi-step forms (form submissions).\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n let shouldExecute = false;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n const indexNameParams = {\n tenant: tenantId,\n locale: localeCode,\n type: \"form-builder\",\n isHeadlessCmsModel: false\n };\n\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n ...indexNameParams\n });\n\n if (!indexExists) {\n logger.info(\n `No Elasticsearch index found for folders in tenant \"${tenantId}\" and locale \"${localeCode}\"; skipping.`\n );\n\n // Continue with next locale.\n return true;\n }\n\n const esRecords = await esQueryAll<FbForm>({\n elasticsearchClient: this.elasticsearchClient,\n index: esGetIndexName(indexNameParams),\n body: {\n query: {\n bool: {\n filter: [{ term: { \"__type.keyword\": \"fb.submission\" } }],\n must_not: {\n exists: {\n field: \"form.steps\"\n }\n }\n }\n },\n size: 1\n }\n });\n\n if (esRecords.length) {\n shouldExecute = true;\n return false;\n }\n\n return true;\n }\n });\n\n return shouldExecute;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<FormSubmissionsDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as FormSubmissionsDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n\n await ddbScanWithCallback<FbFormSubmission>(\n {\n entity: this.formSubmissionEntity,\n options: {\n filters: [\n {\n attr: \"TYPE\",\n eq: \"fb.formSubmission\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 500\n }\n },\n async scanResults => {\n logger.debug(`Processing ${scanResults.items.length} items...`);\n const primaryTableRecordsToWrite: BatchWriteItem[] = [];\n const ddbEsTableRecordsToRead: BatchReadItem[] = [];\n const ddbEsTableRecordsToWrite: BatchWriteItem[] = [];\n\n // First, let's prepare a list of records to write to the primary table.\n for (const scanResult of scanResults.items) {\n if (scanResult.form.steps) {\n continue;\n }\n\n // If no steps are defined, we need to create a single step.\n scanResult.form.steps = [];\n\n if (Array.isArray(scanResult.form.layout)) {\n // If layout is an array, we need to create a single step with all the fields.\n scanResult.form.steps = [\n { title: \"Step 1\", layout: scanResult.form.layout }\n ];\n delete scanResult.form.layout;\n }\n\n primaryTableRecordsToWrite.push(this.formSubmissionEntity.putBatch(scanResult));\n ddbEsTableRecordsToRead.push(\n this.formSubmissionDdbEsEntity.getBatch(scanResult)\n );\n\n const index = esGetIndexName({\n tenant: scanResult.tenant,\n locale: scanResult.locale,\n type: \"form-builder\",\n isHeadlessCmsModel: false\n });\n\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await fetchOriginalElasticsearchSettings({\n index,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n\n // and then set not to index\n await disableElasticsearchIndexing({\n elasticsearchClient: this.elasticsearchClient,\n index,\n logger\n });\n }\n }\n\n // Second, let's prepare a list of records to write to the DDB-ES table.\n const ddbEsTableRecords = await batchReadAll({\n table: this.esTable,\n items: ddbEsTableRecordsToRead\n });\n\n for (const ddbEsTableRecord of ddbEsTableRecords) {\n if (!ddbEsTableRecord.data || !ddbEsTableRecord.data.form) {\n continue;\n }\n\n if (ddbEsTableRecord.data.form.steps) {\n continue;\n }\n\n // If no steps are defined, we need to create a single step.\n ddbEsTableRecord.data.form.steps = [];\n\n if (Array.isArray(ddbEsTableRecord.data.form.layout)) {\n // If layout is an array, we need to create a single step with all the fields.\n ddbEsTableRecord.data.form.steps = [\n { title: \"Step 1\", layout: ddbEsTableRecord.data.form.layout }\n ];\n delete ddbEsTableRecord.data.form.layout;\n }\n\n ddbEsTableRecordsToWrite.push(\n this.formSubmissionDdbEsEntity.putBatch(ddbEsTableRecord)\n );\n }\n\n {\n // 1. Update DynamoDB records (primary table).\n const execute = () => {\n return batchWriteAll({\n table: this.formSubmissionEntity.table,\n items: primaryTableRecordsToWrite\n });\n };\n\n logger.trace(\"Storing the DynamoDB records (primary table)...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n\n logger.trace(\"...stored.\");\n }\n\n {\n // 2. Update DynamoDB records (DDB-ES table).\n const execute = () => {\n return batchWriteAll({\n table: this.formSubmissionDdbEsEntity.table,\n items: ddbEsTableRecordsToWrite\n });\n };\n\n logger.trace(\"Storing the DynamoDB records (DynamoDB-ES table)...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n\n logger.trace(\"...stored.\");\n }\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = scanResults.lastEvaluatedKey?.PK\n ? (scanResults.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n /**\n * This is the end of the migration.\n */\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(MultiStepForms_5_38_0_002, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","createFormEntity","table","createLegacyEntity","PK","partitionKey","SK","sortKey","GSI1_PK","type","GSI1_SK","TYPE","id","formId","tenant","locale","createdBy","ownedBy","savedOn","createdOn","name","slug","version","locked","published","publishedOn","status","fields","steps","stats","settings","triggers","webinyVersion","exports"],"sources":["createFormEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createFormEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"FormBuilderForm\", {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n formId: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n savedOn: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n slug: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n published: {\n type: \"boolean\"\n },\n publishedOn: {\n type: \"string\"\n },\n status: {\n type: \"string\"\n },\n fields: {\n type: \"list\"\n },\n steps: {\n type: \"list\"\n },\n stats: {\n type: \"map\"\n },\n settings: {\n type: \"map\"\n },\n triggers: {\n type: \"map\"\n },\n webinyVersion: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,KAAoC,IAAK;EACtE,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,iBAAiB,EAAE;IAChDE,EAAE,EAAE;MACAC,YAAY,EAAE;IAClB,CAAC;IACDC,EAAE,EAAE;MACAC,OAAO,EAAE;IACb,CAAC;IACDC,OAAO,EAAE;MACLC,IAAI,EAAE;IACV,CAAC;IACDC,OAAO,EAAE;MACLD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,EAAE,EAAE;MACAH,IAAI,EAAE;IACV,CAAC;IACDI,MAAM,EAAE;MACJJ,IAAI,EAAE;IACV,CAAC;IACDK,MAAM,EAAE;MACJL,IAAI,EAAE;IACV,CAAC;IACDM,MAAM,EAAE;MACJN,IAAI,EAAE;IACV,CAAC;IACDO,SAAS,EAAE;MACPP,IAAI,EAAE;IACV,CAAC;IACDQ,OAAO,EAAE;MACLR,IAAI,EAAE;IACV,CAAC;IACDS,OAAO,EAAE;MACLT,IAAI,EAAE;IACV,CAAC;IACDU,SAAS,EAAE;MACPV,IAAI,EAAE;IACV,CAAC;IACDW,IAAI,EAAE;MACFX,IAAI,EAAE;IACV,CAAC;IACDY,IAAI,EAAE;MACFZ,IAAI,EAAE;IACV,CAAC;IACDa,OAAO,EAAE;MACLb,IAAI,EAAE;IACV,CAAC;IACDc,MAAM,EAAE;MACJd,IAAI,EAAE;IACV,CAAC;IACDe,SAAS,EAAE;MACPf,IAAI,EAAE;IACV,CAAC;IACDgB,WAAW,EAAE;MACThB,IAAI,EAAE;IACV,CAAC;IACDiB,MAAM,EAAE;MACJjB,IAAI,EAAE;IACV,CAAC;IACDkB,MAAM,EAAE;MACJlB,IAAI,EAAE;IACV,CAAC;IACDmB,KAAK,EAAE;MACHnB,IAAI,EAAE;IACV,CAAC;IACDoB,KAAK,EAAE;MACHpB,IAAI,EAAE;IACV,CAAC;IACDqB,QAAQ,EAAE;MACNrB,IAAI,EAAE;IACV,CAAC;IACDsB,QAAQ,EAAE;MACNtB,IAAI,EAAE;IACV,CAAC;IACDuB,aAAa,EAAE;MACXvB,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACwB,OAAA,CAAAhC,gBAAA,GAAAA,gBAAA"}
|
|
1
|
+
{"version":3,"names":["_utils","require","createFormEntity","table","createLegacyEntity","PK","partitionKey","SK","sortKey","GSI1_PK","type","GSI1_SK","TYPE","id","formId","tenant","locale","createdBy","ownedBy","savedOn","createdOn","name","slug","version","locked","published","publishedOn","status","fields","steps","stats","settings","triggers","webinyVersion","exports"],"sources":["createFormEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createFormEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"FormBuilderForm\", {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n formId: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n savedOn: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n slug: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n published: {\n type: \"boolean\"\n },\n publishedOn: {\n type: \"string\"\n },\n status: {\n type: \"string\"\n },\n fields: {\n type: \"list\"\n },\n steps: {\n type: \"list\"\n },\n stats: {\n type: \"map\"\n },\n settings: {\n type: \"map\"\n },\n triggers: {\n type: \"map\"\n },\n webinyVersion: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,KAAoC,IAAK;EACtE,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,iBAAiB,EAAE;IAChDE,EAAE,EAAE;MACAC,YAAY,EAAE;IAClB,CAAC;IACDC,EAAE,EAAE;MACAC,OAAO,EAAE;IACb,CAAC;IACDC,OAAO,EAAE;MACLC,IAAI,EAAE;IACV,CAAC;IACDC,OAAO,EAAE;MACLD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,EAAE,EAAE;MACAH,IAAI,EAAE;IACV,CAAC;IACDI,MAAM,EAAE;MACJJ,IAAI,EAAE;IACV,CAAC;IACDK,MAAM,EAAE;MACJL,IAAI,EAAE;IACV,CAAC;IACDM,MAAM,EAAE;MACJN,IAAI,EAAE;IACV,CAAC;IACDO,SAAS,EAAE;MACPP,IAAI,EAAE;IACV,CAAC;IACDQ,OAAO,EAAE;MACLR,IAAI,EAAE;IACV,CAAC;IACDS,OAAO,EAAE;MACLT,IAAI,EAAE;IACV,CAAC;IACDU,SAAS,EAAE;MACPV,IAAI,EAAE;IACV,CAAC;IACDW,IAAI,EAAE;MACFX,IAAI,EAAE;IACV,CAAC;IACDY,IAAI,EAAE;MACFZ,IAAI,EAAE;IACV,CAAC;IACDa,OAAO,EAAE;MACLb,IAAI,EAAE;IACV,CAAC;IACDc,MAAM,EAAE;MACJd,IAAI,EAAE;IACV,CAAC;IACDe,SAAS,EAAE;MACPf,IAAI,EAAE;IACV,CAAC;IACDgB,WAAW,EAAE;MACThB,IAAI,EAAE;IACV,CAAC;IACDiB,MAAM,EAAE;MACJjB,IAAI,EAAE;IACV,CAAC;IACDkB,MAAM,EAAE;MACJlB,IAAI,EAAE;IACV,CAAC;IACDmB,KAAK,EAAE;MACHnB,IAAI,EAAE;IACV,CAAC;IACDoB,KAAK,EAAE;MACHpB,IAAI,EAAE;IACV,CAAC;IACDqB,QAAQ,EAAE;MACNrB,IAAI,EAAE;IACV,CAAC;IACDsB,QAAQ,EAAE;MACNtB,IAAI,EAAE;IACV,CAAC;IACDuB,aAAa,EAAE;MACXvB,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACwB,OAAA,CAAAhC,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","ddbEsAttributes","PK","type","partitionKey","SK","sortKey","index","data","createFormSubmissionDdbEsEntity","table","createStandardEntity","exports"],"sources":["createFormSubmissionDdbEsEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createStandardEntity } from \"~/utils\";\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createFormSubmissionDdbEsEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"FormBuilderSubmissionEs\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAA2D,GAAG;EAChEC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IACHJ,IAAI,EAAE;EACV,CAAC;EACDK,IAAI,EAAE;IACFL,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAMM,+BAA+B,GAAIC,KAAoC,IAAK;EACrF,OAAO,IAAAC,2BAAoB,EAACD,KAAK,EAAE,yBAAyB,EAAET,eAAe,CAAC;AAClF,CAAC;AAACW,OAAA,CAAAH,+BAAA,GAAAA,+BAAA"}
|
|
1
|
+
{"version":3,"names":["_utils","require","ddbEsAttributes","PK","type","partitionKey","SK","sortKey","index","data","createFormSubmissionDdbEsEntity","table","createStandardEntity","exports"],"sources":["createFormSubmissionDdbEsEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createStandardEntity } from \"~/utils\";\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createFormSubmissionDdbEsEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"FormBuilderSubmissionEs\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAA2D,GAAG;EAChEC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IACHJ,IAAI,EAAE;EACV,CAAC;EACDK,IAAI,EAAE;IACFL,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAMM,+BAA+B,GAAIC,KAAoC,IAAK;EACrF,OAAO,IAAAC,2BAAoB,EAACD,KAAK,EAAE,yBAAyB,EAAET,eAAe,CAAC;AAClF,CAAC;AAACW,OAAA,CAAAH,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","createFormSubmissionEntity","table","createLegacyEntity","PK","partitionKey","SK","sortKey","id","type","TYPE","data","meta","form","logs","createdOn","savedOn","ownedBy","tenant","locale","webinyVersion","exports"],"sources":["createFormSubmissionEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createFormSubmissionEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"FormBuilderForm\", {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n id: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n form: {\n type: \"map\"\n },\n logs: {\n type: \"list\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n ownedBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,0BAA0B,GAAIC,KAAoC,IAAK;EAChF,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,iBAAiB,EAAE;IAChDE,EAAE,EAAE;MACAC,YAAY,EAAE;IAClB,CAAC;IACDC,EAAE,EAAE;MACAC,OAAO,EAAE;IACb,CAAC;IACDC,EAAE,EAAE;MACAC,IAAI,EAAE;IACV,CAAC;IACDC,IAAI,EAAE;MACFD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,IAAI,EAAE;MACFH,IAAI,EAAE;IACV,CAAC;IACDI,IAAI,EAAE;MACFJ,IAAI,EAAE;IACV,CAAC;IACDK,IAAI,EAAE;MACFL,IAAI,EAAE;IACV,CAAC;IACDM,SAAS,EAAE;MACPN,IAAI,EAAE;IACV,CAAC;IACDO,OAAO,EAAE;MACLP,IAAI,EAAE;IACV,CAAC;IACDQ,OAAO,EAAE;MACLR,IAAI,EAAE;IACV,CAAC;IACDS,MAAM,EAAE;MACJT,IAAI,EAAE;IACV,CAAC;IACDU,MAAM,EAAE;MACJV,IAAI,EAAE;IACV,CAAC;IACDW,aAAa,EAAE;MACXX,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACY,OAAA,CAAApB,0BAAA,GAAAA,0BAAA"}
|
|
1
|
+
{"version":3,"names":["_utils","require","createFormSubmissionEntity","table","createLegacyEntity","PK","partitionKey","SK","sortKey","id","type","TYPE","data","meta","form","logs","createdOn","savedOn","ownedBy","tenant","locale","webinyVersion","exports"],"sources":["createFormSubmissionEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createFormSubmissionEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"FormBuilderForm\", {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n id: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n form: {\n type: \"map\"\n },\n logs: {\n type: \"list\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n ownedBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,0BAA0B,GAAIC,KAAoC,IAAK;EAChF,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,iBAAiB,EAAE;IAChDE,EAAE,EAAE;MACAC,YAAY,EAAE;IAClB,CAAC;IACDC,EAAE,EAAE;MACAC,OAAO,EAAE;IACb,CAAC;IACDC,EAAE,EAAE;MACAC,IAAI,EAAE;IACV,CAAC;IACDC,IAAI,EAAE;MACFD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,IAAI,EAAE;MACFH,IAAI,EAAE;IACV,CAAC;IACDI,IAAI,EAAE;MACFJ,IAAI,EAAE;IACV,CAAC;IACDK,IAAI,EAAE;MACFL,IAAI,EAAE;IACV,CAAC;IACDM,SAAS,EAAE;MACPN,IAAI,EAAE;IACV,CAAC;IACDO,OAAO,EAAE;MACLP,IAAI,EAAE;IACV,CAAC;IACDQ,OAAO,EAAE;MACLR,IAAI,EAAE;IACV,CAAC;IACDS,MAAM,EAAE;MACJT,IAAI,EAAE;IACV,CAAC;IACDU,MAAM,EAAE;MACJV,IAAI,EAAE;IACV,CAAC;IACDW,aAAa,EAAE;MACXX,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACY,OAAA,CAAApB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type FbFormLayout = Array<Array<string>>;\n\nexport interface FbForm {\n id: string;\n formId: string;\n steps?: Array<{ title: string; layout: FbFormLayout }>;\n layout?: FbFormLayout;\n TYPE?: string;\n}\n\nexport interface FbFormSubmission {\n tenant: string;\n locale: string;\n id: string;\n form: {\n steps?: Array<{ title: string; layout: FbFormLayout }>;\n layout?: FbFormLayout;\n };\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type FbFormLayout = Array<Array<string>>;\n\nexport interface FbForm {\n id: string;\n formId: string;\n steps?: Array<{ title: string; layout: FbFormLayout }>;\n layout?: FbFormLayout;\n TYPE?: string;\n}\n\nexport interface FbFormSubmission {\n tenant: string;\n locale: string;\n id: string;\n form: {\n steps?: Array<{ title: string; layout: FbFormLayout }>;\n layout?: FbFormLayout;\n };\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_gzip","require","compressContent","data","compressedValue","compress","JSON","stringify","compression","value","toString","exports"],"sources":["compressContent.ts"],"sourcesContent":["import { compress } from \"@webiny/utils/compression/gzip\";\n\nexport const compressContent = async (data: Record<string, any>) => {\n const compressedValue = await compress(JSON.stringify(data));\n\n return {\n compression: \"gzip\",\n value: compressedValue.toString(\"base64\")\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAG,MAAOC,IAAyB,IAAK;EAChE,MAAMC,eAAe,GAAG,MAAM,IAAAC,cAAQ,EAACC,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC,CAAC;EAE5D,OAAO;IACHK,WAAW,EAAE,MAAM;IACnBC,KAAK,EAAEL,eAAe,CAACM,QAAQ,CAAC,QAAQ;EAC5C,CAAC;AACL,CAAC;AAACC,OAAA,CAAAT,eAAA,GAAAA,eAAA"}
|
|
1
|
+
{"version":3,"names":["_gzip","require","compressContent","data","compressedValue","compress","JSON","stringify","compression","value","toString","exports"],"sources":["compressContent.ts"],"sourcesContent":["import { compress } from \"@webiny/utils/compression/gzip\";\n\nexport const compressContent = async (data: Record<string, any>) => {\n const compressedValue = await compress(JSON.stringify(data));\n\n return {\n compression: \"gzip\",\n value: compressedValue.toString(\"base64\")\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAG,MAAOC,IAAyB,IAAK;EAChE,MAAMC,eAAe,GAAG,MAAM,IAAAC,cAAQ,EAACC,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC,CAAC;EAE5D,OAAO;IACHK,WAAW,EAAE,MAAM;IACnBC,KAAK,EAAEL,eAAe,CAACM,QAAQ,CAAC,QAAQ;EAC5C,CAAC;AACL,CAAC;AAACC,OAAA,CAAAT,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ioc","require","_utils","_dataMigration","_createPageBlockEntity","_utils2","_compressContent","isGroupMigrationCompleted","status","PageBlocks_5_38_0_003","constructor","table","oldPageBlockEntity","createOldPageBlockEntity","newPageBlockEntity","createNewPageBlockEntity","getId","getDescription","shouldExecute","logger","forEachTenantLocale","callback","tenantId","localeCode","oldBlocksCount","count","entity","partitionKey","newBlocksCount","options","index","execute","context","migrationStatus","checkpoint","batch","groupId","ddbQueryAllWithCallback","gt","oldBlocks","info","length","items","Promise","all","map","oldBlock","newPageBlock","PK","id","SK","GSI1_PK","GSI1_SK","blockCategory","content","compressContent","putBatch","batchWriteAll","executeWithRetry","onFailedAttempt","error","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n createOldPageBlockEntity,\n createNewPageBlockEntity\n} from \"../entities/createPageBlockEntity\";\nimport { batchWriteAll, ddbQueryAllWithCallback, forEachTenantLocale, count } from \"~/utils\";\nimport { PbPageBlock } from \"../types\";\nimport { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport { compressContent } from \"./compressContent\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nexport class PageBlocks_5_38_0_003 implements DataMigration {\n private readonly oldPageBlockEntity: ReturnType<typeof createOldPageBlockEntity>;\n private readonly newPageBlockEntity: ReturnType<typeof createNewPageBlockEntity>;\n private readonly table: Table<string, string, string>;\n\n constructor(table: Table<string, string, string>) {\n this.table = table;\n this.oldPageBlockEntity = createOldPageBlockEntity(table);\n this.newPageBlockEntity = createNewPageBlockEntity(table);\n }\n\n getId() {\n return \"5.38.0-003\";\n }\n\n getDescription() {\n return \"Compress block content, and add GSI1.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n let shouldExecute = false;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n // We're doing `queryAll` because, at this point in time, this feature is\n // quite new, and we know there won't be a large number of records, so no need to paginate.\n const oldBlocksCount = await count({\n entity: this.oldPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#B`\n });\n\n const newBlocksCount = await count({\n entity: this.newPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#BLOCKS`,\n options: {\n index: \"GSI1\"\n }\n });\n\n if (newBlocksCount < oldBlocksCount) {\n shouldExecute = true;\n return false;\n }\n // Continue to the next locale.\n return true;\n }\n });\n\n return shouldExecute;\n }\n\n async execute({ logger, ...context }: DataMigrationContext): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n let batch = 0;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n const groupId = `${tenantId}:${localeCode}`;\n const status = migrationStatus[groupId];\n\n if (isGroupMigrationCompleted(status)) {\n return true;\n }\n\n await ddbQueryAllWithCallback<PbPageBlock>(\n {\n entity: this.oldPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#B`,\n options: {\n gt: status || \" \"\n }\n },\n async oldBlocks => {\n batch++;\n\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${oldBlocks.length} blocks).`\n );\n\n const items = await Promise.all(\n oldBlocks.map(async oldBlock => {\n const newPageBlock = {\n ...oldBlock,\n PK: `T#${tenantId}#L#${localeCode}#PB#BLOCK#${oldBlock.id}`,\n SK: \"A\",\n GSI1_PK: `T#${tenantId}#L#${localeCode}#PB#BLOCKS`,\n // We need the ability to filter by category slug, and `id` is for uniqueness.\n GSI1_SK: `${oldBlock.blockCategory}#${oldBlock.id}`,\n content: await compressContent(oldBlock.content)\n };\n\n // We no longer have a `preview`.\n delete newPageBlock[\"preview\"];\n\n return this.newPageBlockEntity.putBatch(newPageBlock);\n })\n );\n\n const execute = () => {\n return batchWriteAll({ table: this.newPageBlockEntity.table, items });\n };\n\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = oldBlocks[oldBlocks.length - 1]?.id;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n // Mark group as completed.\n migrationStatus[groupId] = true;\n\n // Store checkpoint.\n await context.createCheckpoint(migrationStatus);\n\n // Continue processing.\n return true;\n }\n });\n }\n}\n\nmakeInjectable(PageBlocks_5_38_0_003, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_ioc","require","_utils","_dataMigration","_createPageBlockEntity","_utils2","_compressContent","isGroupMigrationCompleted","status","PageBlocks_5_38_0_003","constructor","table","oldPageBlockEntity","createOldPageBlockEntity","newPageBlockEntity","createNewPageBlockEntity","getId","getDescription","shouldExecute","logger","forEachTenantLocale","callback","tenantId","localeCode","oldBlocksCount","count","entity","partitionKey","newBlocksCount","options","index","execute","context","migrationStatus","checkpoint","batch","groupId","ddbQueryAllWithCallback","gt","oldBlocks","info","length","items","Promise","all","map","oldBlock","newPageBlock","PK","id","SK","GSI1_PK","GSI1_SK","blockCategory","content","compressContent","putBatch","batchWriteAll","executeWithRetry","onFailedAttempt","error","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n createOldPageBlockEntity,\n createNewPageBlockEntity\n} from \"../entities/createPageBlockEntity\";\nimport { batchWriteAll, ddbQueryAllWithCallback, forEachTenantLocale, count } from \"~/utils\";\nimport { PbPageBlock } from \"../types\";\nimport { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport { compressContent } from \"./compressContent\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nexport class PageBlocks_5_38_0_003 implements DataMigration {\n private readonly oldPageBlockEntity: ReturnType<typeof createOldPageBlockEntity>;\n private readonly newPageBlockEntity: ReturnType<typeof createNewPageBlockEntity>;\n private readonly table: Table<string, string, string>;\n\n constructor(table: Table<string, string, string>) {\n this.table = table;\n this.oldPageBlockEntity = createOldPageBlockEntity(table);\n this.newPageBlockEntity = createNewPageBlockEntity(table);\n }\n\n getId() {\n return \"5.38.0-003\";\n }\n\n getDescription() {\n return \"Compress block content, and add GSI1.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n let shouldExecute = false;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n // We're doing `queryAll` because, at this point in time, this feature is\n // quite new, and we know there won't be a large number of records, so no need to paginate.\n const oldBlocksCount = await count({\n entity: this.oldPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#B`\n });\n\n const newBlocksCount = await count({\n entity: this.newPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#BLOCKS`,\n options: {\n index: \"GSI1\"\n }\n });\n\n if (newBlocksCount < oldBlocksCount) {\n shouldExecute = true;\n return false;\n }\n // Continue to the next locale.\n return true;\n }\n });\n\n return shouldExecute;\n }\n\n async execute({ logger, ...context }: DataMigrationContext): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n let batch = 0;\n\n await forEachTenantLocale({\n table: this.table,\n logger,\n callback: async ({ tenantId, localeCode }) => {\n const groupId = `${tenantId}:${localeCode}`;\n const status = migrationStatus[groupId];\n\n if (isGroupMigrationCompleted(status)) {\n return true;\n }\n\n await ddbQueryAllWithCallback<PbPageBlock>(\n {\n entity: this.oldPageBlockEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#PB#B`,\n options: {\n gt: status || \" \"\n }\n },\n async oldBlocks => {\n batch++;\n\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${oldBlocks.length} blocks).`\n );\n\n const items = await Promise.all(\n oldBlocks.map(async oldBlock => {\n const newPageBlock = {\n ...oldBlock,\n PK: `T#${tenantId}#L#${localeCode}#PB#BLOCK#${oldBlock.id}`,\n SK: \"A\",\n GSI1_PK: `T#${tenantId}#L#${localeCode}#PB#BLOCKS`,\n // We need the ability to filter by category slug, and `id` is for uniqueness.\n GSI1_SK: `${oldBlock.blockCategory}#${oldBlock.id}`,\n content: await compressContent(oldBlock.content)\n };\n\n // We no longer have a `preview`.\n delete newPageBlock[\"preview\"];\n\n return this.newPageBlockEntity.putBatch(newPageBlock);\n })\n );\n\n const execute = () => {\n return batchWriteAll({ table: this.newPageBlockEntity.table, items });\n };\n\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = oldBlocks[oldBlocks.length - 1]?.id;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n // Mark group as completed.\n migrationStatus[groupId] = true;\n\n // Store checkpoint.\n await context.createCheckpoint(migrationStatus);\n\n // Continue processing.\n return true;\n }\n });\n }\n}\n\nmakeInjectable(PageBlocks_5_38_0_003, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","oldAttributes","PK","partitionKey","SK","sortKey","TYPE","type","id","name","blockCategory","content","preview","createdOn","createdBy","tenant","locale","createOldPageBlockEntity","table","createLegacyEntity","exports","createNewPageBlockEntity","attrs","GSI1_PK","GSI1_SK"],"sources":["createPageBlockEntity.ts"],"sourcesContent":["import { Table, AttributeDefinitions } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nconst oldAttributes: AttributeDefinitions = {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n blockCategory: {\n type: \"string\"\n },\n content: {\n type: \"map\"\n },\n preview: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n }\n};\n\nexport const createOldPageBlockEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"PbPageBlocks\", oldAttributes);\n};\n\nexport const createNewPageBlockEntity = (table: Table<string, string, string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { preview, ...attrs } = oldAttributes;\n\n return createLegacyEntity(table, \"PbPageBlocks\", {\n ...attrs,\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAmC,GAAG;EACxCC,EAAE,EAAE;IACAC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAC,OAAO,EAAE;EACb,CAAC;EACDC,IAAI,EAAE;IACFC,IAAI,EAAE;EACV,CAAC;EACDC,EAAE,EAAE;IACAD,IAAI,EAAE;EACV,CAAC;EACDE,IAAI,EAAE;IACFF,IAAI,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACXH,IAAI,EAAE;EACV,CAAC;EACDI,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,SAAS,EAAE;IACPN,IAAI,EAAE;EACV,CAAC;EACDO,SAAS,EAAE;IACPP,IAAI,EAAE;EACV,CAAC;EACDQ,MAAM,EAAE;IACJR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAMU,wBAAwB,GAAIC,KAAoC,IAAK;EAC9E,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,cAAc,EAAEjB,aAAa,CAAC;AACnE,CAAC;AAACmB,OAAA,CAAAH,wBAAA,GAAAA,wBAAA;AAEK,MAAMI,wBAAwB,GAAIH,KAAoC,IAAK;EAC9E;EACA,MAAM;IAAEN,OAAO;IAAE,GAAGU;EAAM,CAAC,GAAGrB,aAAa;EAE3C,OAAO,IAAAkB,yBAAkB,EAACD,KAAK,EAAE,cAAc,EAAE;IAC7C,GAAGI,KAAK;IACRC,OAAO,EAAE;MACLhB,IAAI,EAAE;IACV,CAAC;IACDiB,OAAO,EAAE;MACLjB,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACa,OAAA,CAAAC,wBAAA,GAAAA,wBAAA"}
|
|
1
|
+
{"version":3,"names":["_utils","require","oldAttributes","PK","partitionKey","SK","sortKey","TYPE","type","id","name","blockCategory","content","preview","createdOn","createdBy","tenant","locale","createOldPageBlockEntity","table","createLegacyEntity","exports","createNewPageBlockEntity","attrs","GSI1_PK","GSI1_SK"],"sources":["createPageBlockEntity.ts"],"sourcesContent":["import { Table, AttributeDefinitions } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nconst oldAttributes: AttributeDefinitions = {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n blockCategory: {\n type: \"string\"\n },\n content: {\n type: \"map\"\n },\n preview: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n }\n};\n\nexport const createOldPageBlockEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"PbPageBlocks\", oldAttributes);\n};\n\nexport const createNewPageBlockEntity = (table: Table<string, string, string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { preview, ...attrs } = oldAttributes;\n\n return createLegacyEntity(table, \"PbPageBlocks\", {\n ...attrs,\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAmC,GAAG;EACxCC,EAAE,EAAE;IACAC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAC,OAAO,EAAE;EACb,CAAC;EACDC,IAAI,EAAE;IACFC,IAAI,EAAE;EACV,CAAC;EACDC,EAAE,EAAE;IACAD,IAAI,EAAE;EACV,CAAC;EACDE,IAAI,EAAE;IACFF,IAAI,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACXH,IAAI,EAAE;EACV,CAAC;EACDI,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,SAAS,EAAE;IACPN,IAAI,EAAE;EACV,CAAC;EACDO,SAAS,EAAE;IACPP,IAAI,EAAE;EACV,CAAC;EACDQ,MAAM,EAAE;IACJR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAMU,wBAAwB,GAAIC,KAAoC,IAAK;EAC9E,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,cAAc,EAAEjB,aAAa,CAAC;AACnE,CAAC;AAACmB,OAAA,CAAAH,wBAAA,GAAAA,wBAAA;AAEK,MAAMI,wBAAwB,GAAIH,KAAoC,IAAK;EAC9E;EACA,MAAM;IAAEN,OAAO;IAAE,GAAGU;EAAM,CAAC,GAAGrB,aAAa;EAE3C,OAAO,IAAAkB,yBAAkB,EAACD,KAAK,EAAE,cAAc,EAAE;IAC7C,GAAGI,KAAK;IACRC,OAAO,EAAE;MACLhB,IAAI,EAAE;IACV,CAAC;IACDiB,OAAO,EAAE;MACLjB,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACa,OAAA,CAAAC,wBAAA,GAAAA,wBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface PbPageBlock {\n id: string;\n tenant: string;\n locale: string;\n blockCategory: string;\n content: Record<string, any>;\n preview?: any;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface PbPageBlock {\n id: string;\n tenant: string;\n locale: string;\n blockCategory: string;\n content: Record<string, any>;\n preview?: any;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createEntryEntity","_assignNewMetaFields","_isMigratedEntry","_getOldestRevisionCreatedOn","_getFirstLastPublishedOn","CmsEntriesInitNewMetaFields_5_39_0_001","constructor","table","entryEntity","createDdbEntryEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","eq","limit","items","length","info","error","Error","item","isMigratedEntry","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","createdOn","getOldestRevisionCreatedOn","entry","firstLastPublishedOnByFields","getFirstLastPublishedOnBy","assignNewMetaFields","push","putBatch","batchWriteAll","trace","executeWithRetry","onFailedAttempt","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { batchWriteAll, BatchWriteItem, ddbScanWithCallback, scan } from \"~/utils\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { CmsEntry } from \"../types\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { assignNewMetaFields } from \"../utils/assignNewMetaFields\";\nimport { isMigratedEntry } from \"../utils/isMigratedEntry\";\nimport { getOldestRevisionCreatedOn } from \"../utils/getOldestRevisionCreatedOn\";\nimport { getFirstLastPublishedOnBy } from \"~/migrations/5.39.0/001/utils/getFirstLastPublishedOn\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface FolderSubmissionsDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n}\n\nexport class CmsEntriesInitNewMetaFields_5_39_0_001 implements DataMigration {\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n }\n\n getId() {\n return \"5.39.0-001\";\n }\n\n getDescription() {\n return \"Write new revision and entry-level on/by meta fields.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will go through a larger amount of the entries, to determine if they need to be updated.\n */\n const result = await scan<CmsEntry>({\n entity: this.entryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n if (!isMigratedEntry(item)) {\n return true;\n }\n }\n\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<FolderSubmissionsDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.entryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 100\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const items: BatchWriteItem[] = [];\n for (const item of result.items) {\n if (isMigratedEntry(item)) {\n continue;\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: item,\n entryEntity: this.entryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: item,\n entryEntity: this.entryEntity\n });\n\n assignNewMetaFields(item, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n items.push(this.entryEntity.putBatch(item));\n }\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus.lastEvaluatedKey = true;\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesInitNewMetaFields_5_39_0_001, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createEntryEntity","_assignNewMetaFields","_isMigratedEntry","_getOldestRevisionCreatedOn","_getFirstLastPublishedOn","CmsEntriesInitNewMetaFields_5_39_0_001","constructor","table","entryEntity","createDdbEntryEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","eq","limit","items","length","info","error","Error","item","isMigratedEntry","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","createdOn","getOldestRevisionCreatedOn","entry","firstLastPublishedOnByFields","getFirstLastPublishedOnBy","assignNewMetaFields","push","putBatch","batchWriteAll","trace","executeWithRetry","onFailedAttempt","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { batchWriteAll, BatchWriteItem, ddbScanWithCallback, scan } from \"~/utils\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { CmsEntry } from \"../types\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { assignNewMetaFields } from \"../utils/assignNewMetaFields\";\nimport { isMigratedEntry } from \"../utils/isMigratedEntry\";\nimport { getOldestRevisionCreatedOn } from \"../utils/getOldestRevisionCreatedOn\";\nimport { getFirstLastPublishedOnBy } from \"~/migrations/5.39.0/001/utils/getFirstLastPublishedOn\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface FolderSubmissionsDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n}\n\nexport class CmsEntriesInitNewMetaFields_5_39_0_001 implements DataMigration {\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n }\n\n getId() {\n return \"5.39.0-001\";\n }\n\n getDescription() {\n return \"Write new revision and entry-level on/by meta fields.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will go through a larger amount of the entries, to determine if they need to be updated.\n */\n const result = await scan<CmsEntry>({\n entity: this.entryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n if (!isMigratedEntry(item)) {\n return true;\n }\n }\n\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<FolderSubmissionsDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.entryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 100\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const items: BatchWriteItem[] = [];\n for (const item of result.items) {\n if (isMigratedEntry(item)) {\n continue;\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: item,\n entryEntity: this.entryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: item,\n entryEntity: this.entryEntity\n });\n\n assignNewMetaFields(item, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n items.push(this.entryEntity.putBatch(item));\n }\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus.lastEvaluatedKey = true;\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesInitNewMetaFields_5_39_0_001, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createEntryEntity","_getDecompressedData","_getCompressedData","_assignNewMetaFields","_fixTypeFieldValue","_isMigratedEntry","_getOldestRevisionCreatedOn","_getFirstLastPublishedOn","CmsEntriesInitNewMetaFields_5_39_0_001","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","eq","limit","items","length","info","error","Error","item","data","getDecompressedData","isMigratedEntry","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","restoreOriginalElasticsearchSettings","indexSettings","indexes","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","ddbItems","ddbEsItems","ddbEsGetItems","index","esGetIndexName","tenant","locale","type","modelId","isHeadlessCmsModel","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","createdOn","getOldestRevisionCreatedOn","entry","entryEntity","firstLastPublishedOnByFields","getFirstLastPublishedOnBy","assignNewMetaFields","fixTypeFieldValue","push","putBatch","entryId","getBatch","PK","SK","status","locked","esRecords","batchReadAll","Object","values","esRecord","decompressedData","trace","forceExecute","compressedData","getCompressedData","batchWriteAll","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n ddbScanWithCallback,\n disableElasticsearchIndexing,\n esGetIndexName,\n fetchOriginalElasticsearchSettings,\n restoreOriginalElasticsearchSettings,\n scan\n} from \"~/utils\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport { CmsEntry } from \"../types\";\nimport { getDecompressedData } from \"../utils/getDecompressedData\";\nimport { getCompressedData } from \"../utils/getCompressedData\";\nimport { assignNewMetaFields } from \"../utils/assignNewMetaFields\";\nimport { fixTypeFieldValue } from \"../utils/fixTypeFieldValue\";\nimport { isMigratedEntry } from \"../utils/isMigratedEntry\";\nimport { getOldestRevisionCreatedOn } from \"../utils/getOldestRevisionCreatedOn\";\nimport { getFirstLastPublishedOnBy } from \"~/migrations/5.39.0/001/utils/getFirstLastPublishedOn\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\ninterface DynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n data: string;\n}\n\nexport class CmsEntriesInitNewMetaFields_5_39_0_001 implements DataMigration {\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n\n public constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n }\n\n getId() {\n return \"5.39.0-001\";\n }\n\n getDescription() {\n return \"Write new revision and entry-level on/by meta fields.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const result = await scan<DynamoDbElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntriesElasticsearch\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n const data = await getDecompressedData<CmsEntry>(item.data);\n if (!data) {\n continue;\n }\n\n if (!isMigratedEntry(data)) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as CmsEntriesRootFolderDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB Elasticsearch table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.ddbEntryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 100\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n const ddbEsGetItems: Record<string, BatchReadItem> = {};\n /**\n * Update the DynamoDB part of the records.\n */\n for (const item of result.items) {\n const index = esGetIndexName({\n tenant: item.tenant,\n locale: item.locale,\n type: item.modelId,\n isHeadlessCmsModel: true\n });\n\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await fetchOriginalElasticsearchSettings({\n index,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n // and then set not to index\n await disableElasticsearchIndexing({\n elasticsearchClient: this.elasticsearchClient,\n index,\n logger\n });\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: item,\n entryEntity: this.ddbEntryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: item,\n entryEntity: this.ddbEntryEntity\n });\n\n assignNewMetaFields(item, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n // Fixes the value of the `TYPE` field, if it's not valid.\n fixTypeFieldValue(item);\n\n ddbItems.push(this.ddbEntryEntity.putBatch(item));\n\n /**\n * Prepare the loading of DynamoDB Elasticsearch part of the records.\n */\n if (ddbEsGetItems[`${item.entryId}:L`]) {\n continue;\n }\n\n ddbEsGetItems[`${item.entryId}:L`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"L\"\n });\n\n if (item.status === \"published\" || !!item.locked) {\n ddbEsGetItems[`${item.entryId}:P`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"P\"\n });\n }\n }\n\n /**\n * Get all the records from DynamoDB Elasticsearch.\n */\n const esRecords = await batchReadAll<DynamoDbElasticsearchRecord>({\n table: this.ddbEsEntryEntity.table,\n items: Object.values(ddbEsGetItems)\n });\n\n for (const esRecord of esRecords) {\n const decompressedData = await getDecompressedData<CmsEntry>(esRecord.data);\n if (!decompressedData) {\n logger.trace(\n `Skipping record \"${esRecord.PK}\" as it is not a valid CMS entry...`\n );\n continue;\n }\n\n if (isMigratedEntry(decompressedData)) {\n const forceExecute = context.forceExecute;\n if (!forceExecute) {\n logger.trace(\n `Skipping record \"${decompressedData.entryId}\" as it already has meta fields defined...`\n );\n continue;\n }\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: { ...decompressedData, PK: esRecord.PK },\n entryEntity: this.ddbEntryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: { ...decompressedData, PK: esRecord.PK },\n entryEntity: this.ddbEntryEntity\n });\n\n assignNewMetaFields(decompressedData, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n const compressedData = await getCompressedData(decompressedData);\n\n ddbEsItems.push(\n this.ddbEsEntryEntity.putBatch({\n ...esRecord,\n data: compressedData\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n logger.trace(\"Storing the DynamoDB Elasticsearch records...\");\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n /**\n * This is the end of the migration.\n */\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesInitNewMetaFields_5_39_0_001, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAD,OAAA;AAYA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA,IAAAK,oBAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAR,OAAA;AACA,IAAAS,gBAAA,GAAAT,OAAA;AACA,IAAAU,2BAAA,GAAAV,OAAA;AACA,IAAAW,wBAAA,GAAAX,OAAA;AA2BO,MAAMY,sCAAsC,CAA0B;EAKlEC,WAAWA,CACdC,KAAoC,EACpCC,OAAsC,EACtCC,mBAA2B,EAC7B;IACE,IAAI,CAACA,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACC,cAAc,GAAG,IAAAC,uCAAoB,EAACJ,KAAK,CAAC;IACjD,IAAI,CAACK,gBAAgB,GAAG,IAAAC,yCAAsB,EAACL,OAAO,CAAC;EAC3D;EAEAM,KAAKA,CAAA,EAAG;IACJ,OAAO,YAAY;EACvB;EAEAC,cAAcA,CAAA,EAAG;IACb,OAAO,uDAAuD;EAClE;EAEA,MAAMC,aAAaA,CAAC;IAAEC;EAA6B,CAAC,EAAoB;IACpE,MAAMC,MAAM,GAAG,MAAM,IAAAC,WAAI,EAA8B;MACnDC,MAAM,EAAE,IAAI,CAACR,gBAAgB;MAC7BS,OAAO,EAAE;QACLC,OAAO,EAAE,CACL;UACIC,IAAI,EAAE,KAAK;UACXC,EAAE,EAAE;QACR,CAAC,CACJ;QACDC,KAAK,EAAE;MACX;IACJ,CAAC,CAAC;IAEF,IAAIP,MAAM,CAACQ,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;MAC3BV,MAAM,CAACW,IAAI,CAAE,yDAAwD,CAAC;MACtE,OAAO,KAAK;IAChB,CAAC,MAAM,IAAIV,MAAM,CAACW,KAAK,EAAE;MACrBZ,MAAM,CAACY,KAAK,CAACX,MAAM,CAACW,KAAK,CAAC;MAC1B,MAAM,IAAIC,KAAK,CAACZ,MAAM,CAACW,KAAK,CAAC;IACjC;IAEA,KAAK,MAAME,IAAI,IAAIb,MAAM,CAACQ,KAAK,EAAE;MAC7B,MAAMM,IAAI,GAAG,MAAM,IAAAC,wCAAmB,EAAWF,IAAI,CAACC,IAAI,CAAC;MAC3D,IAAI,CAACA,IAAI,EAAE;QACP;MACJ;MAEA,IAAI,CAAC,IAAAE,gCAAe,EAACF,IAAI,CAAC,EAAE;QACxB,OAAO,IAAI;MACf;IACJ;IACAf,MAAM,CAACW,IAAI,CAAE,2CAA0C,CAAC;IACxD,OAAO,KAAK;EAChB;EAEA,MAAMO,OAAOA,CAAC;IACVlB,MAAM;IACN,GAAGmB;EAC4D,CAAC,EAAiB;IACjF,MAAMC,eAAe,GACjBD,OAAO,CAACE,UAAU,IAAK,CAAC,CAAiD;IAE7E,IAAID,eAAe,CAACE,gBAAgB,KAAK,IAAI,EAAE;MAC3C,MAAM,IAAAC,2CAAoC,EAAC;QACvCC,aAAa,EAAEJ,eAAe,CAACK,OAAO;QACtCzB,MAAM;QACNR,mBAAmB,EAAE,IAAI,CAACA;MAC9B,CAAC,CAAC;MACFQ,MAAM,CAACW,IAAI,CAAE,8CAA6C,CAAC;MAC3D;IACJ;IAEA,IAAIe,QAAQ,GAAG,EAAE;IACjB,IAAIN,eAAe,EAAEE,gBAAgB,EAAE;MACnCI,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACR,eAAe,CAACE,gBAAgB,CAAC;IAC/D;IAEAtB,MAAM,CAAC6B,KAAK,CAAE,4CAA2CH,QAAS,EAAC,CAAC;IACpE,MAAM,IAAAI,0BAAmB,EACrB;MACI3B,MAAM,EAAE,IAAI,CAACV,cAAc;MAC3BW,OAAO,EAAE;QACLC,OAAO,EAAE,CACL;UACIC,IAAI,EAAE,KAAK;UACXC,EAAE,EAAE;QACR,CAAC,CACJ;QACDwB,QAAQ,EAAEX,eAAe,CAACE,gBAAgB,IAAIU,SAAS;QACvDxB,KAAK,EAAE;MACX;IACJ,CAAC,EACD,MAAMP,MAAM,IAAI;MACZD,MAAM,CAAC6B,KAAK,CAAE,cAAa5B,MAAM,CAACQ,KAAK,CAACC,MAAO,WAAU,CAAC;MAC1D,MAAMuB,QAA0B,GAAG,EAAE;MACrC,MAAMC,UAA4B,GAAG,EAAE;MAEvC,MAAMC,aAA4C,GAAG,CAAC,CAAC;MACvD;AAChB;AACA;MACgB,KAAK,MAAMrB,IAAI,IAAIb,MAAM,CAACQ,KAAK,EAAE;QAC7B,MAAM2B,KAAK,GAAG,IAAAC,qBAAc,EAAC;UACzBC,MAAM,EAAExB,IAAI,CAACwB,MAAM;UACnBC,MAAM,EAAEzB,IAAI,CAACyB,MAAM;UACnBC,IAAI,EAAE1B,IAAI,CAAC2B,OAAO;UAClBC,kBAAkB,EAAE;QACxB,CAAC,CAAC;;QAEF;QACA,IAAI,CAACtB,eAAe,CAACK,OAAO,IAAIL,eAAe,CAACK,OAAO,CAACW,KAAK,CAAC,KAAKJ,SAAS,EAAE;UAC1E;UACA,MAAMW,QAAQ,GAAG,MAAM,IAAAC,yCAAkC,EAAC;YACtDR,KAAK;YACLpC,MAAM;YACNR,mBAAmB,EAAE,IAAI,CAACA;UAC9B,CAAC,CAAC;;UAEF;UACA4B,eAAe,CAACK,OAAO,GAAG;YACtB,GAAGL,eAAe,CAACK,OAAO;YAC1B,CAACW,KAAK,GAAGO;UACb,CAAC;UACD;UACA,MAAM,IAAAE,mCAA4B,EAAC;YAC/BrD,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;YAC7C4C,KAAK;YACLpC;UACJ,CAAC,CAAC;QACN;;QAEA;QACA,MAAM8C,SAAS,GAAG,MAAM,IAAAC,sDAA0B,EAAC;UAC/CC,KAAK,EAAElC,IAAI;UACXmC,WAAW,EAAE,IAAI,CAACxD;QACtB,CAAC,CAAC;QAEF,MAAMyD,4BAA4B,GAAG,MAAM,IAAAC,kDAAyB,EAAC;UACjEH,KAAK,EAAElC,IAAI;UACXmC,WAAW,EAAE,IAAI,CAACxD;QACtB,CAAC,CAAC;QAEF,IAAA2D,wCAAmB,EAACtC,IAAI,EAAE;UACtBgC,SAAS;UACT,GAAGI;QACP,CAAC,CAAC;;QAEF;QACA,IAAAG,oCAAiB,EAACvC,IAAI,CAAC;QAEvBmB,QAAQ,CAACqB,IAAI,CAAC,IAAI,CAAC7D,cAAc,CAAC8D,QAAQ,CAACzC,IAAI,CAAC,CAAC;;QAEjD;AACpB;AACA;QACoB,IAAIqB,aAAa,CAAE,GAAErB,IAAI,CAAC0C,OAAQ,IAAG,CAAC,EAAE;UACpC;QACJ;QAEArB,aAAa,CAAE,GAAErB,IAAI,CAAC0C,OAAQ,IAAG,CAAC,GAAG,IAAI,CAAC7D,gBAAgB,CAAC8D,QAAQ,CAAC;UAChEC,EAAE,EAAE5C,IAAI,CAAC4C,EAAE;UACXC,EAAE,EAAE;QACR,CAAC,CAAC;QAEF,IAAI7C,IAAI,CAAC8C,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC9C,IAAI,CAAC+C,MAAM,EAAE;UAC9C1B,aAAa,CAAE,GAAErB,IAAI,CAAC0C,OAAQ,IAAG,CAAC,GAAG,IAAI,CAAC7D,gBAAgB,CAAC8D,QAAQ,CAAC;YAChEC,EAAE,EAAE5C,IAAI,CAAC4C,EAAE;YACXC,EAAE,EAAE;UACR,CAAC,CAAC;QACN;MACJ;;MAEA;AAChB;AACA;MACgB,MAAMG,SAAS,GAAG,MAAM,IAAAC,mBAAY,EAA8B;QAC9DzE,KAAK,EAAE,IAAI,CAACK,gBAAgB,CAACL,KAAK;QAClCmB,KAAK,EAAEuD,MAAM,CAACC,MAAM,CAAC9B,aAAa;MACtC,CAAC,CAAC;MAEF,KAAK,MAAM+B,QAAQ,IAAIJ,SAAS,EAAE;QAC9B,MAAMK,gBAAgB,GAAG,MAAM,IAAAnD,wCAAmB,EAAWkD,QAAQ,CAACnD,IAAI,CAAC;QAC3E,IAAI,CAACoD,gBAAgB,EAAE;UACnBnE,MAAM,CAACoE,KAAK,CACP,oBAAmBF,QAAQ,CAACR,EAAG,qCACpC,CAAC;UACD;QACJ;QAEA,IAAI,IAAAzC,gCAAe,EAACkD,gBAAgB,CAAC,EAAE;UACnC,MAAME,YAAY,GAAGlD,OAAO,CAACkD,YAAY;UACzC,IAAI,CAACA,YAAY,EAAE;YACfrE,MAAM,CAACoE,KAAK,CACP,oBAAmBD,gBAAgB,CAACX,OAAQ,4CACjD,CAAC;YACD;UACJ;QACJ;;QAEA;QACA,MAAMV,SAAS,GAAG,MAAM,IAAAC,sDAA0B,EAAC;UAC/CC,KAAK,EAAE;YAAE,GAAGmB,gBAAgB;YAAET,EAAE,EAAEQ,QAAQ,CAACR;UAAG,CAAC;UAC/CT,WAAW,EAAE,IAAI,CAACxD;QACtB,CAAC,CAAC;QAEF,MAAMyD,4BAA4B,GAAG,MAAM,IAAAC,kDAAyB,EAAC;UACjEH,KAAK,EAAE;YAAE,GAAGmB,gBAAgB;YAAET,EAAE,EAAEQ,QAAQ,CAACR;UAAG,CAAC;UAC/CT,WAAW,EAAE,IAAI,CAACxD;QACtB,CAAC,CAAC;QAEF,IAAA2D,wCAAmB,EAACe,gBAAgB,EAAE;UAClCrB,SAAS;UACT,GAAGI;QACP,CAAC,CAAC;QAEF,MAAMoB,cAAc,GAAG,MAAM,IAAAC,oCAAiB,EAACJ,gBAAgB,CAAC;QAEhEjC,UAAU,CAACoB,IAAI,CACX,IAAI,CAAC3D,gBAAgB,CAAC4D,QAAQ,CAAC;UAC3B,GAAGW,QAAQ;UACXnD,IAAI,EAAEuD;QACV,CAAC,CACL,CAAC;MACL;MAEA,MAAMpD,OAAO,GAAGA,CAAA,KAAM;QAClB,OAAO,IAAAsD,oBAAa,EAAC;UACjBlF,KAAK,EAAE,IAAI,CAACG,cAAc,CAACH,KAAK;UAChCmB,KAAK,EAAEwB;QACX,CAAC,CAAC;MACN,CAAC;MAED,MAAMwC,YAAY,GAAGA,CAAA,KAAM;QACvB,OAAO,IAAAD,oBAAa,EAAC;UACjBlF,KAAK,EAAE,IAAI,CAACK,gBAAgB,CAACL,KAAK;UAClCmB,KAAK,EAAEyB;QACX,CAAC,CAAC;MACN,CAAC;MAEDlC,MAAM,CAACoE,KAAK,CAAC,iCAAiC,CAAC;MAC/C,MAAM,IAAAM,wBAAgB,EAACxD,OAAO,EAAE;QAC5ByD,eAAe,EAAE/D,KAAK,IAAI;UACtBZ,MAAM,CAACY,KAAK,CACP,4BAA2BA,KAAK,CAACgE,aAAc,YAAWhE,KAAK,CAACiE,OAAQ,EAC7E,CAAC;QACL;MACJ,CAAC,CAAC;MACF7E,MAAM,CAACoE,KAAK,CAAC,YAAY,CAAC;MAE1BpE,MAAM,CAACoE,KAAK,CAAC,+CAA+C,CAAC;MAC7D,MAAM,IAAAM,wBAAgB,EAACD,YAAY,EAAE;QACjCE,eAAe,EAAE/D,KAAK,IAAI;UACtBZ,MAAM,CAACY,KAAK,CACP,qCAAoCA,KAAK,CAACgE,aAAc,YAAWhE,KAAK,CAACiE,OAAQ,EACtF,CAAC;QACL;MACJ,CAAC,CAAC;MACF7E,MAAM,CAACoE,KAAK,CAAC,YAAY,CAAC;;MAE1B;MACAhD,eAAe,CAACE,gBAAgB,GAAGrB,MAAM,CAACqB,gBAAgB,EAAEoC,EAAE,GACvDzD,MAAM,CAACqB,gBAAgB,GACxB,IAAI;;MAEV;MACA,IAAIH,OAAO,CAAC2D,gBAAgB,CAAC,CAAC,EAAE;QAC5B,MAAM3D,OAAO,CAAC4D,uBAAuB,CAAC3D,eAAe,CAAC;MAC1D,CAAC,MAAM;QACH,MAAMD,OAAO,CAAC6D,gBAAgB,CAAC5D,eAAe,CAAC;MACnD;IACJ,CACJ,CAAC;;IAED;AACR;AACA;IACQ,MAAM,IAAAG,2CAAoC,EAAC;MACvCC,aAAa,EAAEJ,eAAe,CAACK,OAAO;MACtCzB,MAAM;MACNR,mBAAmB,EAAE,IAAI,CAACA;IAC9B,CAAC,CAAC;IAEF4B,eAAe,CAACE,gBAAgB,GAAG,IAAI;IACvCF,eAAe,CAACK,OAAO,GAAG,CAAC,CAAC;IAC5BN,OAAO,CAAC6D,gBAAgB,CAAC5D,eAAe,CAAC;EAC7C;AACJ;AAAC6D,OAAA,CAAA7F,sCAAA,GAAAA,sCAAA;AAED,IAAA8F,mBAAc,EAAC9F,sCAAsC,EAAE,CACnD,IAAA+F,WAAM,EAACC,uCAAwB,CAAC,EAChC,IAAAD,WAAM,EAACE,6CAA8B,CAAC,EACtC,IAAAF,WAAM,EAACG,wCAAyB,CAAC,CACpC,CAAC"}
|
|
1
|
+
{"version":3,"names":["_dataMigration","require","_utils","_ioc","_utils2","_createEntryEntity","_getDecompressedData","_getCompressedData","_assignNewMetaFields","_fixTypeFieldValue","_isMigratedEntry","_getOldestRevisionCreatedOn","_getFirstLastPublishedOn","CmsEntriesInitNewMetaFields_5_39_0_001","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","eq","limit","items","length","info","error","Error","item","data","getDecompressedData","isMigratedEntry","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","restoreOriginalElasticsearchSettings","indexSettings","indexes","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","ddbItems","ddbEsItems","ddbEsGetItems","index","esGetIndexName","tenant","locale","type","modelId","isHeadlessCmsModel","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","createdOn","getOldestRevisionCreatedOn","entry","entryEntity","firstLastPublishedOnByFields","getFirstLastPublishedOnBy","assignNewMetaFields","fixTypeFieldValue","push","putBatch","entryId","getBatch","PK","SK","status","locked","esRecords","batchReadAll","Object","values","esRecord","decompressedData","trace","forceExecute","compressedData","getCompressedData","batchWriteAll","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n ddbScanWithCallback,\n disableElasticsearchIndexing,\n esGetIndexName,\n fetchOriginalElasticsearchSettings,\n restoreOriginalElasticsearchSettings,\n scan\n} from \"~/utils\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport { CmsEntry } from \"../types\";\nimport { getDecompressedData } from \"../utils/getDecompressedData\";\nimport { getCompressedData } from \"../utils/getCompressedData\";\nimport { assignNewMetaFields } from \"../utils/assignNewMetaFields\";\nimport { fixTypeFieldValue } from \"../utils/fixTypeFieldValue\";\nimport { isMigratedEntry } from \"../utils/isMigratedEntry\";\nimport { getOldestRevisionCreatedOn } from \"../utils/getOldestRevisionCreatedOn\";\nimport { getFirstLastPublishedOnBy } from \"~/migrations/5.39.0/001/utils/getFirstLastPublishedOn\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\ninterface DynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n data: string;\n}\n\nexport class CmsEntriesInitNewMetaFields_5_39_0_001 implements DataMigration {\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n\n public constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n }\n\n getId() {\n return \"5.39.0-001\";\n }\n\n getDescription() {\n return \"Write new revision and entry-level on/by meta fields.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const result = await scan<DynamoDbElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntriesElasticsearch\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n const data = await getDecompressedData<CmsEntry>(item.data);\n if (!data) {\n continue;\n }\n\n if (!isMigratedEntry(data)) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as CmsEntriesRootFolderDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n\n logger.debug(`Scanning DynamoDB Elasticsearch table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.ddbEntryEntity,\n options: {\n filters: [\n {\n attr: \"_et\",\n eq: \"CmsEntries\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 100\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n const ddbEsGetItems: Record<string, BatchReadItem> = {};\n /**\n * Update the DynamoDB part of the records.\n */\n for (const item of result.items) {\n const index = esGetIndexName({\n tenant: item.tenant,\n locale: item.locale,\n type: item.modelId,\n isHeadlessCmsModel: true\n });\n\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await fetchOriginalElasticsearchSettings({\n index,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n // and then set not to index\n await disableElasticsearchIndexing({\n elasticsearchClient: this.elasticsearchClient,\n index,\n logger\n });\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: item,\n entryEntity: this.ddbEntryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: item,\n entryEntity: this.ddbEntryEntity\n });\n\n assignNewMetaFields(item, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n // Fixes the value of the `TYPE` field, if it's not valid.\n fixTypeFieldValue(item);\n\n ddbItems.push(this.ddbEntryEntity.putBatch(item));\n\n /**\n * Prepare the loading of DynamoDB Elasticsearch part of the records.\n */\n if (ddbEsGetItems[`${item.entryId}:L`]) {\n continue;\n }\n\n ddbEsGetItems[`${item.entryId}:L`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"L\"\n });\n\n if (item.status === \"published\" || !!item.locked) {\n ddbEsGetItems[`${item.entryId}:P`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"P\"\n });\n }\n }\n\n /**\n * Get all the records from DynamoDB Elasticsearch.\n */\n const esRecords = await batchReadAll<DynamoDbElasticsearchRecord>({\n table: this.ddbEsEntryEntity.table,\n items: Object.values(ddbEsGetItems)\n });\n\n for (const esRecord of esRecords) {\n const decompressedData = await getDecompressedData<CmsEntry>(esRecord.data);\n if (!decompressedData) {\n logger.trace(\n `Skipping record \"${esRecord.PK}\" as it is not a valid CMS entry...`\n );\n continue;\n }\n\n if (isMigratedEntry(decompressedData)) {\n const forceExecute = context.forceExecute;\n if (!forceExecute) {\n logger.trace(\n `Skipping record \"${decompressedData.entryId}\" as it already has meta fields defined...`\n );\n continue;\n }\n }\n\n // Get the oldest revision's `createdOn` value. We use that to set the entry-level `createdOn` value.\n const createdOn = await getOldestRevisionCreatedOn({\n entry: { ...decompressedData, PK: esRecord.PK },\n entryEntity: this.ddbEntryEntity\n });\n\n const firstLastPublishedOnByFields = await getFirstLastPublishedOnBy({\n entry: { ...decompressedData, PK: esRecord.PK },\n entryEntity: this.ddbEntryEntity\n });\n\n assignNewMetaFields(decompressedData, {\n createdOn,\n ...firstLastPublishedOnByFields\n });\n\n const compressedData = await getCompressedData(decompressedData);\n\n ddbEsItems.push(\n this.ddbEsEntryEntity.putBatch({\n ...esRecord,\n data: compressedData\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n logger.trace(\"Storing the DynamoDB Elasticsearch records...\");\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n /**\n * This is the end of the migration.\n */\n await restoreOriginalElasticsearchSettings({\n indexSettings: migrationStatus.indexes,\n logger,\n elasticsearchClient: this.elasticsearchClient\n });\n\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesInitNewMetaFields_5_39_0_001, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -56,6 +56,12 @@ const ddbAttributes = {
|
|
|
56
56
|
revisionModifiedOn: {
|
|
57
57
|
type: "string"
|
|
58
58
|
},
|
|
59
|
+
revisionDeletedOn: {
|
|
60
|
+
type: "string"
|
|
61
|
+
},
|
|
62
|
+
revisionRestoredOn: {
|
|
63
|
+
type: "string"
|
|
64
|
+
},
|
|
59
65
|
revisionFirstPublishedOn: {
|
|
60
66
|
type: "string"
|
|
61
67
|
},
|
|
@@ -71,6 +77,12 @@ const ddbAttributes = {
|
|
|
71
77
|
revisionModifiedBy: {
|
|
72
78
|
type: "map"
|
|
73
79
|
},
|
|
80
|
+
revisionDeletedBy: {
|
|
81
|
+
type: "map"
|
|
82
|
+
},
|
|
83
|
+
revisionRestoredBy: {
|
|
84
|
+
type: "map"
|
|
85
|
+
},
|
|
74
86
|
revisionFirstPublishedBy: {
|
|
75
87
|
type: "map"
|
|
76
88
|
},
|
|
@@ -89,6 +101,12 @@ const ddbAttributes = {
|
|
|
89
101
|
modifiedOn: {
|
|
90
102
|
type: "string"
|
|
91
103
|
},
|
|
104
|
+
deletedOn: {
|
|
105
|
+
type: "string"
|
|
106
|
+
},
|
|
107
|
+
restoredOn: {
|
|
108
|
+
type: "string"
|
|
109
|
+
},
|
|
92
110
|
firstPublishedOn: {
|
|
93
111
|
type: "string"
|
|
94
112
|
},
|
|
@@ -104,6 +122,12 @@ const ddbAttributes = {
|
|
|
104
122
|
modifiedBy: {
|
|
105
123
|
type: "map"
|
|
106
124
|
},
|
|
125
|
+
deletedBy: {
|
|
126
|
+
type: "map"
|
|
127
|
+
},
|
|
128
|
+
restoredBy: {
|
|
129
|
+
type: "map"
|
|
130
|
+
},
|
|
107
131
|
firstPublishedBy: {
|
|
108
132
|
type: "map"
|
|
109
133
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","ddbAttributes","PK","type","partitionKey","SK","sortKey","GSI1_PK","GSI1_SK","TYPE","__type","webinyVersion","tenant","entryId","id","modelId","locale","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","revisionFirstPublishedBy","revisionLastPublishedBy","createdOn","savedOn","modifiedOn","firstPublishedOn","lastPublishedOn","createdBy","savedBy","modifiedBy","firstPublishedBy","lastPublishedBy","ownedBy","publishedOn","version","locked","status","values","meta","location","ddbEsAttributes","index","data","createDdbEntryEntity","table","createLegacyEntity","exports","createDdbEsEntryEntity","createStandardEntity"],"sources":["createEntryEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity, createStandardEntity } from \"~/utils\";\n\nconst ddbAttributes: Parameters<typeof createLegacyEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n __type: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n entryId: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: { type: \"string\" },\n revisionSavedOn: { type: \"string\" },\n revisionModifiedOn: { type: \"string\" },\n revisionFirstPublishedOn: { type: \"string\" },\n revisionLastPublishedOn: { type: \"string\" },\n revisionCreatedBy: { type: \"map\" },\n revisionSavedBy: { type: \"map\" },\n revisionModifiedBy: { type: \"map\" },\n revisionFirstPublishedBy: { type: \"map\" },\n revisionLastPublishedBy: { type: \"map\" },\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: { type: \"string\" },\n savedOn: { type: \"string\" },\n modifiedOn: { type: \"string\" },\n firstPublishedOn: { type: \"string\" },\n lastPublishedOn: { type: \"string\" },\n createdBy: { type: \"map\" },\n savedBy: { type: \"map\" },\n modifiedBy: { type: \"map\" },\n firstPublishedBy: { type: \"map\" },\n lastPublishedBy: { type: \"map\" },\n\n // Deprecated fields.\n ownedBy: { type: \"map\" },\n publishedOn: { type: \"string\" },\n\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n values: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n location: {\n type: \"map\"\n }\n};\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createDdbEntryEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"CmsEntries\", ddbAttributes);\n};\n\nexport const createDdbEsEntryEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"CmsEntriesElasticsearch\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAuD,GAAG;EAC5DC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,IAAI,EAAE;IACFN,IAAI,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACJP,IAAI,EAAE;EACV,CAAC;EACDQ,aAAa,EAAE;IACXR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACLV,IAAI,EAAE;EACV,CAAC;EACDW,EAAE,EAAE;IACAX,IAAI,EAAE;EACV,CAAC;EACDY,OAAO,EAAE;IACLZ,IAAI,EAAE;EACV,CAAC;EACDa,MAAM,EAAE;IACJb,IAAI,EAAE;EACV,CAAC;EAED;AACJ;AACA;EACIc,iBAAiB,EAAE;IAAEd,IAAI,EAAE;EAAS,CAAC;EACrCe,eAAe,EAAE;IAAEf,IAAI,EAAE;EAAS,CAAC;EACnCgB,kBAAkB,EAAE;IAAEhB,IAAI,EAAE;EAAS,CAAC;EACtCiB,
|
|
1
|
+
{"version":3,"names":["_utils","require","ddbAttributes","PK","type","partitionKey","SK","sortKey","GSI1_PK","GSI1_SK","TYPE","__type","webinyVersion","tenant","entryId","id","modelId","locale","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionDeletedOn","revisionRestoredOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","revisionDeletedBy","revisionRestoredBy","revisionFirstPublishedBy","revisionLastPublishedBy","createdOn","savedOn","modifiedOn","deletedOn","restoredOn","firstPublishedOn","lastPublishedOn","createdBy","savedBy","modifiedBy","deletedBy","restoredBy","firstPublishedBy","lastPublishedBy","ownedBy","publishedOn","version","locked","status","values","meta","location","ddbEsAttributes","index","data","createDdbEntryEntity","table","createLegacyEntity","exports","createDdbEsEntryEntity","createStandardEntity"],"sources":["createEntryEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity, createStandardEntity } from \"~/utils\";\n\nconst ddbAttributes: Parameters<typeof createLegacyEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n __type: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n entryId: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: { type: \"string\" },\n revisionSavedOn: { type: \"string\" },\n revisionModifiedOn: { type: \"string\" },\n revisionDeletedOn: { type: \"string\" },\n revisionRestoredOn: { type: \"string\" },\n revisionFirstPublishedOn: { type: \"string\" },\n revisionLastPublishedOn: { type: \"string\" },\n revisionCreatedBy: { type: \"map\" },\n revisionSavedBy: { type: \"map\" },\n revisionModifiedBy: { type: \"map\" },\n revisionDeletedBy: { type: \"map\" },\n revisionRestoredBy: { type: \"map\" },\n revisionFirstPublishedBy: { type: \"map\" },\n revisionLastPublishedBy: { type: \"map\" },\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: { type: \"string\" },\n savedOn: { type: \"string\" },\n modifiedOn: { type: \"string\" },\n deletedOn: { type: \"string\" },\n restoredOn: { type: \"string\" },\n firstPublishedOn: { type: \"string\" },\n lastPublishedOn: { type: \"string\" },\n createdBy: { type: \"map\" },\n savedBy: { type: \"map\" },\n modifiedBy: { type: \"map\" },\n deletedBy: { type: \"map\" },\n restoredBy: { type: \"map\" },\n firstPublishedBy: { type: \"map\" },\n lastPublishedBy: { type: \"map\" },\n\n // Deprecated fields.\n ownedBy: { type: \"map\" },\n publishedOn: { type: \"string\" },\n\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n values: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n location: {\n type: \"map\"\n }\n};\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createDdbEntryEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"CmsEntries\", ddbAttributes);\n};\n\nexport const createDdbEsEntryEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"CmsEntriesElasticsearch\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAuD,GAAG;EAC5DC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,IAAI,EAAE;IACFN,IAAI,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACJP,IAAI,EAAE;EACV,CAAC;EACDQ,aAAa,EAAE;IACXR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACLV,IAAI,EAAE;EACV,CAAC;EACDW,EAAE,EAAE;IACAX,IAAI,EAAE;EACV,CAAC;EACDY,OAAO,EAAE;IACLZ,IAAI,EAAE;EACV,CAAC;EACDa,MAAM,EAAE;IACJb,IAAI,EAAE;EACV,CAAC;EAED;AACJ;AACA;EACIc,iBAAiB,EAAE;IAAEd,IAAI,EAAE;EAAS,CAAC;EACrCe,eAAe,EAAE;IAAEf,IAAI,EAAE;EAAS,CAAC;EACnCgB,kBAAkB,EAAE;IAAEhB,IAAI,EAAE;EAAS,CAAC;EACtCiB,iBAAiB,EAAE;IAAEjB,IAAI,EAAE;EAAS,CAAC;EACrCkB,kBAAkB,EAAE;IAAElB,IAAI,EAAE;EAAS,CAAC;EACtCmB,wBAAwB,EAAE;IAAEnB,IAAI,EAAE;EAAS,CAAC;EAC5CoB,uBAAuB,EAAE;IAAEpB,IAAI,EAAE;EAAS,CAAC;EAC3CqB,iBAAiB,EAAE;IAAErB,IAAI,EAAE;EAAM,CAAC;EAClCsB,eAAe,EAAE;IAAEtB,IAAI,EAAE;EAAM,CAAC;EAChCuB,kBAAkB,EAAE;IAAEvB,IAAI,EAAE;EAAM,CAAC;EACnCwB,iBAAiB,EAAE;IAAExB,IAAI,EAAE;EAAM,CAAC;EAClCyB,kBAAkB,EAAE;IAAEzB,IAAI,EAAE;EAAM,CAAC;EACnC0B,wBAAwB,EAAE;IAAE1B,IAAI,EAAE;EAAM,CAAC;EACzC2B,uBAAuB,EAAE;IAAE3B,IAAI,EAAE;EAAM,CAAC;EAExC;AACJ;AACA;EACI4B,SAAS,EAAE;IAAE5B,IAAI,EAAE;EAAS,CAAC;EAC7B6B,OAAO,EAAE;IAAE7B,IAAI,EAAE;EAAS,CAAC;EAC3B8B,UAAU,EAAE;IAAE9B,IAAI,EAAE;EAAS,CAAC;EAC9B+B,SAAS,EAAE;IAAE/B,IAAI,EAAE;EAAS,CAAC;EAC7BgC,UAAU,EAAE;IAAEhC,IAAI,EAAE;EAAS,CAAC;EAC9BiC,gBAAgB,EAAE;IAAEjC,IAAI,EAAE;EAAS,CAAC;EACpCkC,eAAe,EAAE;IAAElC,IAAI,EAAE;EAAS,CAAC;EACnCmC,SAAS,EAAE;IAAEnC,IAAI,EAAE;EAAM,CAAC;EAC1BoC,OAAO,EAAE;IAAEpC,IAAI,EAAE;EAAM,CAAC;EACxBqC,UAAU,EAAE;IAAErC,IAAI,EAAE;EAAM,CAAC;EAC3BsC,SAAS,EAAE;IAAEtC,IAAI,EAAE;EAAM,CAAC;EAC1BuC,UAAU,EAAE;IAAEvC,IAAI,EAAE;EAAM,CAAC;EAC3BwC,gBAAgB,EAAE;IAAExC,IAAI,EAAE;EAAM,CAAC;EACjCyC,eAAe,EAAE;IAAEzC,IAAI,EAAE;EAAM,CAAC;EAEhC;EACA0C,OAAO,EAAE;IAAE1C,IAAI,EAAE;EAAM,CAAC;EACxB2C,WAAW,EAAE;IAAE3C,IAAI,EAAE;EAAS,CAAC;EAE/B4C,OAAO,EAAE;IACL5C,IAAI,EAAE;EACV,CAAC;EACD6C,MAAM,EAAE;IACJ7C,IAAI,EAAE;EACV,CAAC;EACD8C,MAAM,EAAE;IACJ9C,IAAI,EAAE;EACV,CAAC;EACD+C,MAAM,EAAE;IACJ/C,IAAI,EAAE;EACV,CAAC;EACDgD,IAAI,EAAE;IACFhD,IAAI,EAAE;EACV,CAAC;EACDiD,QAAQ,EAAE;IACNjD,IAAI,EAAE;EACV;AACJ,CAAC;AAED,MAAMkD,eAA2D,GAAG;EAChEnD,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDgD,KAAK,EAAE;IACHnD,IAAI,EAAE;EACV,CAAC;EACDoD,IAAI,EAAE;IACFpD,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAMqD,oBAAoB,GAAIC,KAAoC,IAAK;EAC1E,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,YAAY,EAAExD,aAAa,CAAC;AACjE,CAAC;AAAC0D,OAAA,CAAAH,oBAAA,GAAAA,oBAAA;AAEK,MAAMI,sBAAsB,GAAIH,KAAoC,IAAK;EAC5E,OAAO,IAAAI,2BAAoB,EAACJ,KAAK,EAAE,yBAAyB,EAAEJ,eAAe,CAAC;AAClF,CAAC;AAACM,OAAA,CAAAC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\nexport interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport interface I18NLocale {\n code: string;\n}\n\nexport interface Identity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface CmsEntryValues {\n [key: string]: any;\n}\n\nexport type CmsEntryStatus = \"published\" | \"unpublished\" | \"draft\";\n\nexport interface CmsEntry<T = CmsEntryValues> {\n webinyVersion: string;\n tenant: string;\n entryId: string;\n id: string;\n modelId: string;\n locale: string;\n version: number;\n locked: boolean;\n status: CmsEntryStatus;\n values: T;\n meta?: {\n [key: string]: any;\n };\n location?: {\n folderId?: string | null;\n };\n\n /**\n * Revision-level meta fields. 👇\n */\n\n /**\n * An ISO 8601 date/time string.\n */\n revisionCreatedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n revisionSavedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n revisionModifiedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n revisionFirstPublishedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n revisionLastPublishedOn: string | null;\n\n /**\n * Identity that last ionCreated the entry.\n */\n revisionCreatedBy: CmsIdentity;\n /**\n * Identity that last ionSaved the entry.\n */\n revisionSavedBy: CmsIdentity;\n /**\n * Identity that last ionModified the entry.\n */\n revisionModifiedBy: CmsIdentity | null;\n /**\n * Identity that first published the entry.\n */\n revisionFirstPublishedBy: CmsIdentity | null;\n /**\n * Identity that last published the entry.\n */\n revisionLastPublishedBy: CmsIdentity | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n\n /**\n * An ISO 8601 date/time string.\n */\n createdOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n savedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n modifiedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n firstPublishedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n lastPublishedOn: string | null;\n\n /**\n * Identity that last created the entry.\n */\n createdBy: CmsIdentity;\n /**\n * Identity that last saved the entry.\n */\n savedBy: CmsIdentity;\n /**\n * Identity that last modified the entry.\n */\n modifiedBy: CmsIdentity | null;\n /**\n * Identity that first published the entry.\n */\n firstPublishedBy: CmsIdentity | null;\n /**\n * Identity that last published the entry.\n */\n lastPublishedBy: CmsIdentity | null;\n\n // Deprecated fields.\n ownedBy: CmsIdentity;\n publishedOn?: string | null;\n}\n\nexport interface ListLocalesParams {\n tenant: Tenant;\n}\n\nexport interface ListModelsParams {\n tenant: Tenant;\n locale: I18NLocale;\n}\n\nexport interface CmsModel {\n modelId: string;\n name: string;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\nexport interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport interface I18NLocale {\n code: string;\n}\n\nexport interface Identity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface CmsEntryValues {\n [key: string]: any;\n}\n\nexport type CmsEntryStatus = \"published\" | \"unpublished\" | \"draft\";\n\nexport interface CmsEntry<T = CmsEntryValues> {\n webinyVersion: string;\n tenant: string;\n entryId: string;\n id: string;\n modelId: string;\n locale: string;\n version: number;\n locked: boolean;\n status: CmsEntryStatus;\n values: T;\n meta?: {\n [key: string]: any;\n };\n location?: {\n folderId?: string | null;\n };\n\n /**\n * Revision-level meta fields. 👇\n */\n\n /**\n * An ISO 8601 date/time string.\n */\n revisionCreatedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n revisionSavedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n revisionModifiedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n revisionFirstPublishedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n revisionLastPublishedOn: string | null;\n\n /**\n * Identity that last ionCreated the entry.\n */\n revisionCreatedBy: CmsIdentity;\n /**\n * Identity that last ionSaved the entry.\n */\n revisionSavedBy: CmsIdentity;\n /**\n * Identity that last ionModified the entry.\n */\n revisionModifiedBy: CmsIdentity | null;\n /**\n * Identity that first published the entry.\n */\n revisionFirstPublishedBy: CmsIdentity | null;\n /**\n * Identity that last published the entry.\n */\n revisionLastPublishedBy: CmsIdentity | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n\n /**\n * An ISO 8601 date/time string.\n */\n createdOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n savedOn: string;\n /**\n * An ISO 8601 date/time string.\n */\n modifiedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n firstPublishedOn: string | null;\n /**\n * An ISO 8601 date/time string.\n */\n lastPublishedOn: string | null;\n\n /**\n * Identity that last created the entry.\n */\n createdBy: CmsIdentity;\n /**\n * Identity that last saved the entry.\n */\n savedBy: CmsIdentity;\n /**\n * Identity that last modified the entry.\n */\n modifiedBy: CmsIdentity | null;\n /**\n * Identity that first published the entry.\n */\n firstPublishedBy: CmsIdentity | null;\n /**\n * Identity that last published the entry.\n */\n lastPublishedBy: CmsIdentity | null;\n\n // Deprecated fields.\n ownedBy: CmsIdentity;\n publishedOn?: string | null;\n}\n\nexport interface ListLocalesParams {\n tenant: Tenant;\n}\n\nexport interface ListModelsParams {\n tenant: Tenant;\n locale: I18NLocale;\n}\n\nexport interface CmsModel {\n modelId: string;\n name: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assignNewMetaFields","entry","specialFields","isDraft","status","revisionFirstLastPublishedOn","publishedOn","revisionFirstLastPublishedBy","modifiedBy","createdBy","Object","assign","revisionCreatedOn","createdOn","revisionModifiedOn","savedOn","revisionSavedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionFirstPublishedOn","revisionFirstPublishedBy","revisionLastPublishedOn","revisionLastPublishedBy","modifiedOn","ownedBy","savedBy","firstPublishedOn","firstPublishedBy","lastPublishedOn","lastPublishedBy","exports"],"sources":["assignNewMetaFields.ts"],"sourcesContent":["import { CmsEntry } from \"../types\";\nimport { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\ninterface SpecialFields {\n createdOn: string;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n}\n\nexport const assignNewMetaFields = (entry: CmsEntry, specialFields: SpecialFields) => {\n const isDraft = entry.status === \"draft\";\n\n // We don't have `publishedBy`, that's why we're relying on `modifiedBy` or `createdBy`.\n const revisionFirstLastPublishedOn = isDraft ? null : entry.publishedOn || null;\n const revisionFirstLastPublishedBy = isDraft ? null : entry.modifiedBy || entry.createdBy;\n\n Object.assign(entry, {\n // Revision-level meta fields.\n revisionCreatedOn: entry.createdOn,\n\n // `modifiedOn` does not exist, that's why we're using `savedOn`.\n // We only use it if there's a `modifiedBy` set.\n revisionModifiedOn: entry.modifiedBy ? entry.savedOn : null,\n\n revisionSavedOn: entry.savedOn,\n revisionCreatedBy: entry.createdBy,\n revisionModifiedBy: entry.modifiedBy || null,\n revisionSavedBy: entry.modifiedBy || entry.createdBy,\n\n revisionFirstPublishedOn: revisionFirstLastPublishedOn,\n revisionFirstPublishedBy: revisionFirstLastPublishedBy,\n\n revisionLastPublishedOn: revisionFirstLastPublishedOn,\n revisionLastPublishedBy: revisionFirstLastPublishedBy,\n\n // Entry-level meta fields.\n createdOn: specialFields.createdOn,\n\n // `modifiedOn` does not exist, that's why we're using `savedOn`.\n // We only use it if there's a `modifiedBy` set.\n modifiedOn: entry.modifiedBy ? entry.savedOn : null,\n\n savedOn: entry.savedOn,\n createdBy: entry.ownedBy,\n modifiedBy: entry.modifiedBy || null,\n savedBy: entry.modifiedBy || entry.createdBy,\n\n firstPublishedOn: specialFields.firstPublishedOn,\n firstPublishedBy: specialFields.firstPublishedBy,\n\n lastPublishedOn: specialFields.lastPublishedOn,\n lastPublishedBy: specialFields.lastPublishedBy\n });\n};\n"],"mappings":";;;;;;AAWO,MAAMA,mBAAmB,GAAGA,CAACC,KAAe,EAAEC,aAA4B,KAAK;EAClF,MAAMC,OAAO,GAAGF,KAAK,CAACG,MAAM,KAAK,OAAO;;EAExC;EACA,MAAMC,4BAA4B,GAAGF,OAAO,GAAG,IAAI,GAAGF,KAAK,CAACK,WAAW,IAAI,IAAI;EAC/E,MAAMC,4BAA4B,GAAGJ,OAAO,GAAG,IAAI,GAAGF,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;EAEzFC,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;IACjB;IACAW,iBAAiB,EAAEX,KAAK,CAACY,SAAS;IAElC;IACA;IACAC,kBAAkB,EAAEb,KAAK,CAACO,UAAU,GAAGP,KAAK,CAACc,OAAO,GAAG,IAAI;IAE3DC,eAAe,EAAEf,KAAK,CAACc,OAAO;IAC9BE,iBAAiB,EAAEhB,KAAK,CAACQ,SAAS;IAClCS,kBAAkB,EAAEjB,KAAK,CAACO,UAAU,IAAI,IAAI;IAC5CW,eAAe,EAAElB,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;IAEpDW,wBAAwB,EAAEf,4BAA4B;IACtDgB,wBAAwB,EAAEd,4BAA4B;IAEtDe,uBAAuB,EAAEjB,4BAA4B;IACrDkB,uBAAuB,EAAEhB,4BAA4B;IAErD;IACAM,SAAS,EAAEX,aAAa,CAACW,SAAS;IAElC;IACA;IACAW,UAAU,EAAEvB,KAAK,CAACO,UAAU,GAAGP,KAAK,CAACc,OAAO,GAAG,IAAI;IAEnDA,OAAO,EAAEd,KAAK,CAACc,OAAO;IACtBN,SAAS,EAAER,KAAK,CAACwB,OAAO;IACxBjB,UAAU,EAAEP,KAAK,CAACO,UAAU,IAAI,IAAI;IACpCkB,OAAO,EAAEzB,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;IAE5CkB,gBAAgB,EAAEzB,aAAa,CAACyB,gBAAgB;IAChDC,gBAAgB,EAAE1B,aAAa,CAAC0B,gBAAgB;IAEhDC,eAAe,EAAE3B,aAAa,CAAC2B,eAAe;IAC9CC,eAAe,EAAE5B,aAAa,CAAC4B;EACnC,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA/B,mBAAA,GAAAA,mBAAA"}
|
|
1
|
+
{"version":3,"names":["assignNewMetaFields","entry","specialFields","isDraft","status","revisionFirstLastPublishedOn","publishedOn","revisionFirstLastPublishedBy","modifiedBy","createdBy","Object","assign","revisionCreatedOn","createdOn","revisionModifiedOn","savedOn","revisionSavedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionFirstPublishedOn","revisionFirstPublishedBy","revisionLastPublishedOn","revisionLastPublishedBy","modifiedOn","ownedBy","savedBy","firstPublishedOn","firstPublishedBy","lastPublishedOn","lastPublishedBy","exports"],"sources":["assignNewMetaFields.ts"],"sourcesContent":["import { CmsEntry } from \"../types\";\nimport { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\ninterface SpecialFields {\n createdOn: string;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n}\n\nexport const assignNewMetaFields = (entry: CmsEntry, specialFields: SpecialFields) => {\n const isDraft = entry.status === \"draft\";\n\n // We don't have `publishedBy`, that's why we're relying on `modifiedBy` or `createdBy`.\n const revisionFirstLastPublishedOn = isDraft ? null : entry.publishedOn || null;\n const revisionFirstLastPublishedBy = isDraft ? null : entry.modifiedBy || entry.createdBy;\n\n Object.assign(entry, {\n // Revision-level meta fields.\n revisionCreatedOn: entry.createdOn,\n\n // `modifiedOn` does not exist, that's why we're using `savedOn`.\n // We only use it if there's a `modifiedBy` set.\n revisionModifiedOn: entry.modifiedBy ? entry.savedOn : null,\n\n revisionSavedOn: entry.savedOn,\n revisionCreatedBy: entry.createdBy,\n revisionModifiedBy: entry.modifiedBy || null,\n revisionSavedBy: entry.modifiedBy || entry.createdBy,\n\n revisionFirstPublishedOn: revisionFirstLastPublishedOn,\n revisionFirstPublishedBy: revisionFirstLastPublishedBy,\n\n revisionLastPublishedOn: revisionFirstLastPublishedOn,\n revisionLastPublishedBy: revisionFirstLastPublishedBy,\n\n // Entry-level meta fields.\n createdOn: specialFields.createdOn,\n\n // `modifiedOn` does not exist, that's why we're using `savedOn`.\n // We only use it if there's a `modifiedBy` set.\n modifiedOn: entry.modifiedBy ? entry.savedOn : null,\n\n savedOn: entry.savedOn,\n createdBy: entry.ownedBy,\n modifiedBy: entry.modifiedBy || null,\n savedBy: entry.modifiedBy || entry.createdBy,\n\n firstPublishedOn: specialFields.firstPublishedOn,\n firstPublishedBy: specialFields.firstPublishedBy,\n\n lastPublishedOn: specialFields.lastPublishedOn,\n lastPublishedBy: specialFields.lastPublishedBy\n });\n};\n"],"mappings":";;;;;;AAWO,MAAMA,mBAAmB,GAAGA,CAACC,KAAe,EAAEC,aAA4B,KAAK;EAClF,MAAMC,OAAO,GAAGF,KAAK,CAACG,MAAM,KAAK,OAAO;;EAExC;EACA,MAAMC,4BAA4B,GAAGF,OAAO,GAAG,IAAI,GAAGF,KAAK,CAACK,WAAW,IAAI,IAAI;EAC/E,MAAMC,4BAA4B,GAAGJ,OAAO,GAAG,IAAI,GAAGF,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;EAEzFC,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;IACjB;IACAW,iBAAiB,EAAEX,KAAK,CAACY,SAAS;IAElC;IACA;IACAC,kBAAkB,EAAEb,KAAK,CAACO,UAAU,GAAGP,KAAK,CAACc,OAAO,GAAG,IAAI;IAE3DC,eAAe,EAAEf,KAAK,CAACc,OAAO;IAC9BE,iBAAiB,EAAEhB,KAAK,CAACQ,SAAS;IAClCS,kBAAkB,EAAEjB,KAAK,CAACO,UAAU,IAAI,IAAI;IAC5CW,eAAe,EAAElB,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;IAEpDW,wBAAwB,EAAEf,4BAA4B;IACtDgB,wBAAwB,EAAEd,4BAA4B;IAEtDe,uBAAuB,EAAEjB,4BAA4B;IACrDkB,uBAAuB,EAAEhB,4BAA4B;IAErD;IACAM,SAAS,EAAEX,aAAa,CAACW,SAAS;IAElC;IACA;IACAW,UAAU,EAAEvB,KAAK,CAACO,UAAU,GAAGP,KAAK,CAACc,OAAO,GAAG,IAAI;IAEnDA,OAAO,EAAEd,KAAK,CAACc,OAAO;IACtBN,SAAS,EAAER,KAAK,CAACwB,OAAO;IACxBjB,UAAU,EAAEP,KAAK,CAACO,UAAU,IAAI,IAAI;IACpCkB,OAAO,EAAEzB,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,SAAS;IAE5CkB,gBAAgB,EAAEzB,aAAa,CAACyB,gBAAgB;IAChDC,gBAAgB,EAAE1B,aAAa,CAAC0B,gBAAgB;IAEhDC,eAAe,EAAE3B,aAAa,CAAC2B,eAAe;IAC9CC,eAAe,EAAE5B,aAAa,CAAC4B;EACnC,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA/B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ensureAllNonNullableValues","entry","fallbacks","entryFallbackDateTime","savedOn","modifiedOn","createdOn","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","dateTime","entryFallbackIdentity","savedBy","modifiedBy","createdBy","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","identity","exports"],"sources":["ensureAllNonNullableValues.ts"],"sourcesContent":["import { CmsEntry } from \"~/migrations/5.39.0/001/types\";\nimport { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\ninterface Fallbacks {\n dateTime: string;\n identity: CmsIdentity;\n}\n\n// All non-nullable meta fields must have values assigned.\nexport const ensureAllNonNullableValues = (entry: CmsEntry, fallbacks: Fallbacks) => {\n const entryFallbackDateTime =\n entry.savedOn ||\n entry.modifiedOn ||\n entry.createdOn ||\n entry.revisionCreatedOn ||\n entry.revisionModifiedOn ||\n entry.revisionSavedOn ||\n fallbacks.dateTime;\n\n const entryFallbackIdentity =\n entry.savedBy ||\n entry.modifiedBy ||\n entry.createdBy ||\n entry.revisionCreatedBy ||\n entry.revisionModifiedBy ||\n entry.revisionSavedBy ||\n fallbacks.identity;\n\n if (!entry.revisionCreatedOn) {\n entry.revisionCreatedOn = entryFallbackDateTime;\n }\n\n if (!entry.revisionSavedOn) {\n entry.revisionSavedOn = entryFallbackDateTime;\n }\n\n if (!entry.revisionCreatedBy) {\n entry.revisionCreatedBy = entryFallbackIdentity;\n }\n\n if (!entry.revisionSavedBy) {\n entry.revisionSavedBy = entryFallbackIdentity;\n }\n\n if (!entry.createdOn) {\n entry.createdOn = entryFallbackDateTime;\n }\n\n if (!entry.savedOn) {\n entry.savedOn = entryFallbackDateTime;\n }\n\n if (!entry.createdBy) {\n entry.createdBy = entryFallbackIdentity;\n }\n\n if (!entry.savedBy) {\n entry.savedBy = entryFallbackIdentity;\n }\n};\n"],"mappings":";;;;;;AAQA;AACO,MAAMA,0BAA0B,GAAGA,CAACC,KAAe,EAAEC,SAAoB,KAAK;EACjF,MAAMC,qBAAqB,GACvBF,KAAK,CAACG,OAAO,IACbH,KAAK,CAACI,UAAU,IAChBJ,KAAK,CAACK,SAAS,IACfL,KAAK,CAACM,iBAAiB,IACvBN,KAAK,CAACO,kBAAkB,IACxBP,KAAK,CAACQ,eAAe,IACrBP,SAAS,CAACQ,QAAQ;EAEtB,MAAMC,qBAAqB,GACvBV,KAAK,CAACW,OAAO,IACbX,KAAK,CAACY,UAAU,IAChBZ,KAAK,CAACa,SAAS,IACfb,KAAK,CAACc,iBAAiB,IACvBd,KAAK,CAACe,kBAAkB,IACxBf,KAAK,CAACgB,eAAe,IACrBf,SAAS,CAACgB,QAAQ;EAEtB,IAAI,CAACjB,KAAK,CAACM,iBAAiB,EAAE;IAC1BN,KAAK,CAACM,iBAAiB,GAAGJ,qBAAqB;EACnD;EAEA,IAAI,CAACF,KAAK,CAACQ,eAAe,EAAE;IACxBR,KAAK,CAACQ,eAAe,GAAGN,qBAAqB;EACjD;EAEA,IAAI,CAACF,KAAK,CAACc,iBAAiB,EAAE;IAC1Bd,KAAK,CAACc,iBAAiB,GAAGJ,qBAAqB;EACnD;EAEA,IAAI,CAACV,KAAK,CAACgB,eAAe,EAAE;IACxBhB,KAAK,CAACgB,eAAe,GAAGN,qBAAqB;EACjD;EAEA,IAAI,CAACV,KAAK,CAACK,SAAS,EAAE;IAClBL,KAAK,CAACK,SAAS,GAAGH,qBAAqB;EAC3C;EAEA,IAAI,CAACF,KAAK,CAACG,OAAO,EAAE;IAChBH,KAAK,CAACG,OAAO,GAAGD,qBAAqB;EACzC;EAEA,IAAI,CAACF,KAAK,CAACa,SAAS,EAAE;IAClBb,KAAK,CAACa,SAAS,GAAGH,qBAAqB;EAC3C;EAEA,IAAI,CAACV,KAAK,CAACW,OAAO,EAAE;IAChBX,KAAK,CAACW,OAAO,GAAGD,qBAAqB;EACzC;AACJ,CAAC;AAACQ,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA"}
|
|
1
|
+
{"version":3,"names":["ensureAllNonNullableValues","entry","fallbacks","entryFallbackDateTime","savedOn","modifiedOn","createdOn","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","dateTime","entryFallbackIdentity","savedBy","modifiedBy","createdBy","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","identity","exports"],"sources":["ensureAllNonNullableValues.ts"],"sourcesContent":["import { CmsEntry } from \"~/migrations/5.39.0/001/types\";\nimport { CmsIdentity } from \"@webiny/api-headless-cms/types\";\n\ninterface Fallbacks {\n dateTime: string;\n identity: CmsIdentity;\n}\n\n// All non-nullable meta fields must have values assigned.\nexport const ensureAllNonNullableValues = (entry: CmsEntry, fallbacks: Fallbacks) => {\n const entryFallbackDateTime =\n entry.savedOn ||\n entry.modifiedOn ||\n entry.createdOn ||\n entry.revisionCreatedOn ||\n entry.revisionModifiedOn ||\n entry.revisionSavedOn ||\n fallbacks.dateTime;\n\n const entryFallbackIdentity =\n entry.savedBy ||\n entry.modifiedBy ||\n entry.createdBy ||\n entry.revisionCreatedBy ||\n entry.revisionModifiedBy ||\n entry.revisionSavedBy ||\n fallbacks.identity;\n\n if (!entry.revisionCreatedOn) {\n entry.revisionCreatedOn = entryFallbackDateTime;\n }\n\n if (!entry.revisionSavedOn) {\n entry.revisionSavedOn = entryFallbackDateTime;\n }\n\n if (!entry.revisionCreatedBy) {\n entry.revisionCreatedBy = entryFallbackIdentity;\n }\n\n if (!entry.revisionSavedBy) {\n entry.revisionSavedBy = entryFallbackIdentity;\n }\n\n if (!entry.createdOn) {\n entry.createdOn = entryFallbackDateTime;\n }\n\n if (!entry.savedOn) {\n entry.savedOn = entryFallbackDateTime;\n }\n\n if (!entry.createdBy) {\n entry.createdBy = entryFallbackIdentity;\n }\n\n if (!entry.savedBy) {\n entry.savedBy = entryFallbackIdentity;\n }\n};\n"],"mappings":";;;;;;AAQA;AACO,MAAMA,0BAA0B,GAAGA,CAACC,KAAe,EAAEC,SAAoB,KAAK;EACjF,MAAMC,qBAAqB,GACvBF,KAAK,CAACG,OAAO,IACbH,KAAK,CAACI,UAAU,IAChBJ,KAAK,CAACK,SAAS,IACfL,KAAK,CAACM,iBAAiB,IACvBN,KAAK,CAACO,kBAAkB,IACxBP,KAAK,CAACQ,eAAe,IACrBP,SAAS,CAACQ,QAAQ;EAEtB,MAAMC,qBAAqB,GACvBV,KAAK,CAACW,OAAO,IACbX,KAAK,CAACY,UAAU,IAChBZ,KAAK,CAACa,SAAS,IACfb,KAAK,CAACc,iBAAiB,IACvBd,KAAK,CAACe,kBAAkB,IACxBf,KAAK,CAACgB,eAAe,IACrBf,SAAS,CAACgB,QAAQ;EAEtB,IAAI,CAACjB,KAAK,CAACM,iBAAiB,EAAE;IAC1BN,KAAK,CAACM,iBAAiB,GAAGJ,qBAAqB;EACnD;EAEA,IAAI,CAACF,KAAK,CAACQ,eAAe,EAAE;IACxBR,KAAK,CAACQ,eAAe,GAAGN,qBAAqB;EACjD;EAEA,IAAI,CAACF,KAAK,CAACc,iBAAiB,EAAE;IAC1Bd,KAAK,CAACc,iBAAiB,GAAGJ,qBAAqB;EACnD;EAEA,IAAI,CAACV,KAAK,CAACgB,eAAe,EAAE;IACxBhB,KAAK,CAACgB,eAAe,GAAGN,qBAAqB;EACjD;EAEA,IAAI,CAACV,KAAK,CAACK,SAAS,EAAE;IAClBL,KAAK,CAACK,SAAS,GAAGH,qBAAqB;EAC3C;EAEA,IAAI,CAACF,KAAK,CAACG,OAAO,EAAE;IAChBH,KAAK,CAACG,OAAO,GAAGD,qBAAqB;EACzC;EAEA,IAAI,CAACF,KAAK,CAACa,SAAS,EAAE;IAClBb,KAAK,CAACa,SAAS,GAAGH,qBAAqB;EAC3C;EAEA,IAAI,CAACV,KAAK,CAACW,OAAO,EAAE;IAChBX,KAAK,CAACW,OAAO,GAAGD,qBAAqB;EACzC;AACJ,CAAC;AAACQ,OAAA,CAAAnB,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|