@strapi/data-transfer 4.18.1-beta.1 → 4.19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"data-transfer.d.ts","sourceRoot":"","sources":["../../src/commands/data-transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-transfer.d.ts","sourceRoot":"","sources":["../../src/commands/data-transfer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/import/action.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAcvC,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;;;GAIG;+BACyB,UAAU;AAAtC,wBAiHE"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/import/action.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAcvC,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;;;GAIG;+BACyB,UAAU;AAAtC,wBAkHE"}
package/dist/index.js CHANGED
@@ -1583,9 +1583,10 @@ const createLinkQuery = (strapi2, trx) => {
1583
1583
  assignOrderColumns();
1584
1584
  const qb = connection.insert(payload).into(addSchema(joinTable.name));
1585
1585
  if (trx) {
1586
- qb.transacting(trx);
1586
+ await trx.transaction(async (nestedTrx) => {
1587
+ await qb.transacting(nestedTrx);
1588
+ });
1587
1589
  }
1588
- await qb;
1589
1590
  }
1590
1591
  };
1591
1592
  return { generateAll, generateAllForAttribute, insert };
@@ -1726,19 +1727,39 @@ const createConfigurationWriteStream = async (strapi2, transaction2) => {
1726
1727
  }
1727
1728
  });
1728
1729
  };
1729
- const createLinksWriteStream = (mapID, strapi2, transaction2) => {
1730
+ const isErrorWithCode = (error) => {
1731
+ return error && typeof error.code === "string";
1732
+ };
1733
+ const isForeignKeyConstraintError = (e) => {
1734
+ const MYSQL_FK_ERROR_CODES = ["1452", "1557", "1216", "1217", "1451"];
1735
+ const POSTGRES_FK_ERROR_CODE = "23503";
1736
+ const SQLITE_FK_ERROR_CODE = "SQLITE_CONSTRAINT_FOREIGNKEY";
1737
+ if (isErrorWithCode(e) && e.code) {
1738
+ return [SQLITE_FK_ERROR_CODE, POSTGRES_FK_ERROR_CODE, ...MYSQL_FK_ERROR_CODES].includes(e.code);
1739
+ }
1740
+ return e.message.toLowerCase().includes("foreign key constraint");
1741
+ };
1742
+ const createLinksWriteStream = (mapID, strapi2, transaction2, onWarning) => {
1730
1743
  return new stream$1.Writable({
1731
1744
  objectMode: true,
1732
1745
  async write(link2, _encoding, callback) {
1733
1746
  await transaction2?.attach(async (trx) => {
1734
1747
  const { left, right } = link2;
1735
1748
  const query = createLinkQuery(strapi2, trx);
1736
- left.ref = mapID(left.type, left.ref) ?? left.ref;
1737
- right.ref = mapID(right.type, right.ref) ?? right.ref;
1749
+ const originalLeftRef = left.ref;
1750
+ const originalRightRef = right.ref;
1751
+ left.ref = mapID(left.type, originalLeftRef) ?? originalLeftRef;
1752
+ right.ref = mapID(right.type, originalRightRef) ?? originalRightRef;
1738
1753
  try {
1739
1754
  await query().insert(link2);
1740
1755
  } catch (e) {
1741
1756
  if (e instanceof Error) {
1757
+ if (isForeignKeyConstraintError(e)) {
1758
+ onWarning?.(
1759
+ `Skipping link ${left.type}:${originalLeftRef} -> ${right.type}:${originalRightRef} due to a foreign key constraint.`
1760
+ );
1761
+ return callback(null);
1762
+ }
1742
1763
  return callback(e);
1743
1764
  }
1744
1765
  return callback(
@@ -1841,6 +1862,7 @@ class LocalStrapiDestinationProvider {
1841
1862
  strapi;
1842
1863
  transaction;
1843
1864
  uploadsBackupDirectoryName;
1865
+ onWarning;
1844
1866
  /**
1845
1867
  * The entities mapper is used to map old entities to their new IDs
1846
1868
  */
@@ -2018,7 +2040,9 @@ class LocalStrapiDestinationProvider {
2018
2040
  async createAssetsWriteStream() {
2019
2041
  assertValidStrapi(this.strapi, "Not able to stream Assets");
2020
2042
  if (!this.#areAssetsIncluded()) {
2021
- throw new ProviderTransferError("Attempting to transfer assets when they are not included");
2043
+ throw new ProviderTransferError(
2044
+ "Attempting to transfer assets when `assets` is not set in restore options"
2045
+ );
2022
2046
  }
2023
2047
  const removeAssetsBackup = this.#removeAssetsBackup.bind(this);
2024
2048
  const strapi2 = this.strapi;
@@ -2124,7 +2148,7 @@ class LocalStrapiDestinationProvider {
2124
2148
  const { strategy } = this.options;
2125
2149
  const mapID = (uid, id) => this.#entitiesMapper[uid]?.[id];
2126
2150
  if (strategy === "restore") {
2127
- return createLinksWriteStream(mapID, this.strapi, this.transaction);
2151
+ return createLinksWriteStream(mapID, this.strapi, this.transaction, this.onWarning);
2128
2152
  }
2129
2153
  throw new ProviderValidationError(`Invalid strategy ${strategy}`, {
2130
2154
  check: "strategy",
@@ -3580,6 +3604,9 @@ const createPushController = handlerControllerFactory((proto) => ({
3580
3604
  autoDestroy: false,
3581
3605
  getStrapi: () => strapi
3582
3606
  });
3607
+ this.provider.onWarning = (message) => {
3608
+ strapi.log.warn(message);
3609
+ };
3583
3610
  return { transferID: this.transferID };
3584
3611
  },
3585
3612
  async status() {
@@ -4528,7 +4555,9 @@ const DEFAULT_IGNORED_CONTENT_TYPES = [
4528
4555
  "admin::api-token-permission",
4529
4556
  "admin::transfer-token",
4530
4557
  "admin::transfer-token-permission",
4531
- "admin::audit-log"
4558
+ "admin::audit-log",
4559
+ "plugin::content-releases.release",
4560
+ "plugin::content-releases.release-action"
4532
4561
  ];
4533
4562
  const abortTransfer = async ({
4534
4563
  engine,
@@ -4926,6 +4955,8 @@ const action$1 = async (opts) => {
4926
4955
  restore: parseRestoreFromOptions(engineOptions)
4927
4956
  };
4928
4957
  const destination = createLocalStrapiDestinationProvider$1(destinationOptions);
4958
+ destination.onWarning = (message) => console.warn(`
4959
+ ${chalk__default.default.yellow("warn")}: ${message}`);
4929
4960
  const engine2 = createTransferEngine$1(source, destination, engineOptions);
4930
4961
  engine2.diagnostics.onDiagnostic(formatDiagnostic("import"));
4931
4962
  const progress = engine2.progress.stream;