@strapi/data-transfer 4.14.0-beta.0 → 4.14.1
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/dist/commands/commander.d.ts +35 -0
- package/dist/commands/commander.js +138 -0
- package/dist/commands/commander.js.map +1 -0
- package/dist/commands/data-transfer.d.ts +135 -0
- package/dist/commands/data-transfer.js +359 -0
- package/dist/commands/data-transfer.js.map +1 -0
- package/dist/commands/export/action.d.ts +20 -0
- package/dist/commands/export/action.js +156 -0
- package/dist/commands/export/action.js.map +1 -0
- package/dist/commands/export/command.d.ts +8 -0
- package/dist/commands/export/command.js +30 -0
- package/dist/commands/export/command.js.map +1 -0
- package/dist/commands/helpers.d.ts +30 -0
- package/dist/commands/helpers.js +87 -0
- package/dist/commands/helpers.js.map +1 -0
- package/dist/commands/import/action.d.ts +19 -0
- package/dist/commands/import/action.js +139 -0
- package/dist/commands/import/action.js.map +1 -0
- package/dist/commands/import/command.d.ts +8 -0
- package/dist/commands/import/command.js +75 -0
- package/dist/commands/import/command.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/transfer/action.d.ts +18 -0
- package/dist/commands/transfer/action.js +161 -0
- package/dist/commands/transfer/action.js.map +1 -0
- package/dist/commands/transfer/command.d.ts +8 -0
- package/dist/commands/transfer/command.js +69 -0
- package/dist/commands/transfer/command.js.map +1 -0
- package/dist/engine/index.d.ts +2 -1
- package/dist/engine/index.js +330 -297
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/validation/schemas/index.js.map +1 -1
- package/dist/errors/base.js +3 -0
- package/dist/errors/base.js.map +1 -1
- package/dist/file/providers/destination/index.js +51 -55
- package/dist/file/providers/destination/index.js.map +1 -1
- package/dist/file/providers/source/index.d.ts +1 -1
- package/dist/file/providers/source/index.js +111 -119
- package/dist/file/providers/source/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/strapi/providers/local-destination/index.d.ts +4 -3
- package/dist/strapi/providers/local-destination/index.js +120 -125
- package/dist/strapi/providers/local-destination/index.js.map +1 -1
- package/dist/strapi/providers/local-destination/strategies/restore/configuration.d.ts +3 -2
- package/dist/strapi/providers/local-destination/strategies/restore/configuration.js.map +1 -1
- package/dist/strapi/providers/local-destination/strategies/restore/entities.d.ts +2 -2
- package/dist/strapi/providers/local-destination/strategies/restore/entities.js +5 -2
- package/dist/strapi/providers/local-destination/strategies/restore/entities.js.map +1 -1
- package/dist/strapi/providers/local-destination/strategies/restore/index.d.ts +2 -2
- package/dist/strapi/providers/local-destination/strategies/restore/index.js.map +1 -1
- package/dist/strapi/providers/local-destination/strategies/restore/links.d.ts +2 -1
- package/dist/strapi/providers/local-destination/strategies/restore/links.js.map +1 -1
- package/dist/strapi/providers/local-source/assets.d.ts +2 -1
- package/dist/strapi/providers/local-source/assets.js +1 -1
- package/dist/strapi/providers/local-source/assets.js.map +1 -1
- package/dist/strapi/providers/local-source/configuration.d.ts +2 -1
- package/dist/strapi/providers/local-source/configuration.js.map +1 -1
- package/dist/strapi/providers/local-source/entities.d.ts +2 -1
- package/dist/strapi/providers/local-source/entities.js.map +1 -1
- package/dist/strapi/providers/local-source/index.d.ts +4 -3
- package/dist/strapi/providers/local-source/index.js +5 -3
- package/dist/strapi/providers/local-source/index.js.map +1 -1
- package/dist/strapi/providers/local-source/links.d.ts +2 -1
- package/dist/strapi/providers/local-source/links.js.map +1 -1
- package/dist/strapi/providers/remote-destination/index.d.ts +1 -1
- package/dist/strapi/providers/remote-destination/index.js +95 -94
- package/dist/strapi/providers/remote-destination/index.js.map +1 -1
- package/dist/strapi/providers/remote-source/index.d.ts +1 -1
- package/dist/strapi/providers/remote-source/index.js +93 -93
- package/dist/strapi/providers/remote-source/index.js.map +1 -1
- package/dist/strapi/providers/utils.d.ts +2 -2
- package/dist/strapi/queries/entity.d.ts +2 -1
- package/dist/strapi/queries/entity.js +4 -4
- package/dist/strapi/queries/entity.js.map +1 -1
- package/dist/strapi/queries/link.d.ts +2 -1
- package/dist/strapi/queries/link.js +13 -4
- package/dist/strapi/queries/link.js.map +1 -1
- package/dist/strapi/remote/handlers/pull.js.map +1 -1
- package/dist/strapi/remote/handlers/push.js.map +1 -1
- package/dist/utils/components.d.ts +22 -0
- package/dist/utils/components.js +381 -0
- package/dist/utils/components.js.map +1 -0
- package/dist/utils/providers.d.ts +2 -1
- package/dist/utils/providers.js.map +1 -1
- package/dist/utils/schema.d.ts +1 -1
- package/dist/utils/transaction.d.ts +2 -2
- package/dist/utils/transaction.js.map +1 -1
- package/package.json +16 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-transfer.js","sourceRoot":"","sources":["../../src/commands/data-transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,4DAA+B;AAC/B,yCAA4C;AAC5C,2CAAuD;AACvD,4DAA2C;AAC3C,8CAAsB;AACtB,kCAAkC;AAGlC,uCAAoD;AACpD,2CAAoF;AACpF,8DAAgD;AAGhD,MAAM,EACJ,MAAM,EAAE,EAAE,iCAAiC,EAAE,GAC9C,GAAG,kBAAkB,CAAC;AAEvB,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;IACzD,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,eAAK,CAAC,IAAI,CACf,eAAK,CAAC,KAAK,CAAC,GAAG,kBAAkB,2CAA2C,CAAC,CAC9E,CAAC;KACH;IAED,OAAO,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,kBAAkB,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAycA,0CAAe;AAvcjB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;IACxB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAExB,OAAO,CACL,IAAI,CAAC,WAAW,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,OAAO,UAAU,cAAc,EAAE,EAAE,CAAC;AACtC,CAAC,CAAC;AA+aA,oDAAoB;AAxatB,MAAM,kBAAkB,GAAG,CAAC,UAAsB,EAAE,EAAE;IACpD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;QACtB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAwC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAChF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC9C,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE;YACxC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAA,uBAAa,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE;SACrE,CAAC,CAAC;QACH,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC;QACzB,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAsC;iBAC/D,IAAI,EAAE;iBACN,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,OAAO;iBACR;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAExC,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;oBAC5D,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;iBACrF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACN;IACH,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACtD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;QAC1D,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,uBAAa,EAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;KACvF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAmXA,gDAAkB;AAjXpB,MAAM,6BAA6B,GAAG;IACpC,mBAAmB;IACnB,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,6BAA6B;IAC7B,uBAAuB;IACvB,kCAAkC;IAClC,kBAAkB;CACnB,CAAC;AA2WA,sEAA6B;AAzW/B,MAAM,aAAa,GAAG,KAAK,EAAE,EAC3B,MAAM,EACN,MAAM,GAIP,EAAE,EAAE;IACH,IAAI;QACF,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;KACxB;IAAC,OAAO,CAAC,EAAE;QACV,iDAAiD;QACjD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAkWA,sCAAa;AAhWf,MAAM,gBAAgB,GAAG,KAAK,EAC5B,OAAqC,EACrC,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAC1C,EAAE;IACF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,0HAA0H;QAC1H,wIAAwI;QACxI,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAuVA,4CAAgB;AArVlB,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAA8B,EAAE,EAAE,EAAE;IACtE,IAAI;QACF,MAAM,UAAU,GAAG,MAAM,gBAAa,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAA,gBAAa,EAAC,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QAEtD,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzC,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;KACzB;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;YAC9E,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC5F;QAED,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAC;AA+TA,oDAAoB;AA7TtB,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAE/E,MAAM,cAAc,GAAG,IAAI,kBAAM,CAC/B,sCAAsC,EACtC,6DAA6D,CAC9D;KACE,SAAS,CAAC,wBAAY,CAAC;KACvB,QAAQ,EAAE,CAAC,CAAC,yCAAyC;AA0TtD,wCAAc;AAxThB,MAAM,aAAa,GAAG,IAAI,kBAAM,CAC9B,wCAAwC,EACxC,8DAA8D,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC,SAAS,CAAC,IAAA,mCAAuB,EAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAkTvF,sCAAa;AAhTf,MAAM,UAAU,GAAG,IAAI,kBAAM,CAC3B,uCAAuC,EACvC,qEAAqE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnG,CAAC,SAAS,CAAC,IAAA,mCAAuB,EAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAC,CAAC;AA+SpF,gCAAU;AA7SZ,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;QACrB,OAAO;KACR;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE;QAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,IAAA,kBAAQ,EACN,CAAC,EACD,+FAA+F,aAAa,CAAC,IAAI,CAC/G,GAAG,CACJ,EAAE,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AA8RA,kDAAmB;AA5RrB,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,eAAK,CAAC,GAAG;IAChB,KAAK,EAAE,eAAK,CAAC,GAAG;IAChB,KAAK,EAAE,eAAK,CAAC,MAAM;CACX,CAAC;AAEX,MAAM,gBAAgB,GACpB,CACE,SAAiB,EACgE,EAAE,CACrF,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,IAAA,qBAAY,EACzB,gBAAO,CAAC,6BAA6B,CAAC,GAAG,SAAS,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAClF,CAAC;IACF,IAAI;QACF,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;YAEhD,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;YAE7E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAC5B;QACD,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;YAEpC,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAE3E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QACD,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEpC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;SACrD;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;AACH,CAAC,CAAC;AAuPF,4CAAgB;AAxOlB,MAAM,cAAc,GAAG,CAAC,iBAA0B,EAAa,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,cAAc,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,KAAuC,EAAE,IAAU,EAAE,EAAE;QAC3E,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,EAAE,SAAS;YACtC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS;YAC1D,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,IAAI,GAAG,SAAS,IAAA,uBAAa,EAAC,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,YAAY,WAAW,KAAK,CAAC;QAC7C,MAAM,KAAK,GACT,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAA,uBAAa,EAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,KAAK,SAAS,EAAE,KAAK,IAAI,CAAC,gBAAgB,IAAI,MAAM,OAAO,KACvF,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAChC,EAAE,CAAC;QAEH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAuC,EAAE,EAAE;QAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAA,aAAG,GAAE,EAAE,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAuC,EAAE,EAAE;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO;QACL,YAAY;QACZ,YAAY;QACZ,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AAwLA,wCAAc;AAtLhB;;GAEG;AACH,MAAM,2BAA2B,GAAG,CAAC,MAAyC,EAAE,EAAE;IAChF,OAAO;QACL,eAAe,EAAE;YACf,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI;YACpC,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI;SAC/C;KACF,CAAC;AACJ,CAAC,CAAC;AA+KA,kEAA2B;AA7K7B;;GAEG;AACH,MAAM,cAAc,GAAG,CACrB,MAAyC,EACzC,EACE,KAAK,EACL,MAAM,GAIP,EACD,EAAE;IACF,OAAO,KAAK,EACV,OAAoD,EACpD,IAAgE,EAChE,EAAE;QACF,kGAAkG;QAClG,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAsB,EAAE,CAAC,CAAC;YAChE,IAAA,kBAAQ,EAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC;QACpB,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAElC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEhD,uBAAuB;gBACvB,IACE,GAAG,KAAK,iBAAiB;oBACzB,GAAG,KAAK,uBAAuB;oBAC/B,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC;oBACnC,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC,EACtC;oBACA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;iBAC7B;gBACD,uBAAuB;qBAClB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC9B,MAAM,CAAC,aAAa,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC,CAAC;iBACzF;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;oBAClC,MAAM,CAAC,aAAa,CAClB,eAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAC9D,MAAM,CACP,CAAC;iBACH;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;oBACnC,MAAM,CAAC,aAAa,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC,CAAC;iBAC1F;aACF;QACH,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,eAAe,KAAK,OAAO,EAAE;YAC/B,MAAM,CAAC,aAAa,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,EAAE,MAAM,CAAC,CAAC;SAC9F;aAAM,IAAI,eAAe,KAAK,SAAS,EAAE;YACxC,MAAM,CAAC,aAAa,CAClB,eAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,EACnE,MAAM,CACP,CAAC;SACH;aAAM,IAAI,eAAe,KAAK,UAAU,EAAE;YACzC,MAAM,CAAC,KAAK,CACV,IAAI,iCAAiC,CAAC,qDAAqD,CAAC,CAC7F,CAAC;SACH;QAED,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAc,EACpC,gJAAgJ,EAChJ;YACE,KAAK;SACN,CACF,CAAC;QAEF,+BAA+B;QAC/B,gBAAgB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAsB,EAAE,CAAC,CAAC,CAAC;QAElF,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,YAAY,GAAG,IAAA,UAAK,EAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AAoGA,wCAAc;AAlGhB,MAAM,sBAAsB,GAAG,CAC7B,MAAyC,EACzC,EACE,KAAK,EACL,MAAM,GAIP,EACD,EAAE;IACF,OAAO,KAAK,EACV,OAA+C,EAC/C,IAA2D,EAC3D,EAAE;QACF,kGAAkG;QAClG,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAsB,EAAE,CAAC,CAAC;YAChE,IAAA,kBAAQ,EAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CACV,0IAA0I,CAC3I,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAc,EACpC,uEAAuE,EACvE;YACE,KAAK;SACN,CACF,CAAC;QAEF,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;SACvB;QAED,+BAA+B;QAC/B,gBAAgB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAsB,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AA6DA,wDAAsB;AA3DxB,MAAM,eAAe,GAAG,CACtB,IAAwD,EACxD,QAAiD,EACjD,EAAE;IACF,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACpC,OAAO,IAAI,CAAC;KACb;IACD,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAgDA,0CAAe;AA1CjB,yEAAyE;AACzE,MAAM,uBAAuB,GAAG,CAAC,IAAwD,EAAE,EAAE;IAC3F,MAAM,eAAe,GAA8B;QACjD,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,SAAS;KACnB,CAAC;IAEF,8DAA8D;IAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;QACtF,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;KAC9B;IAED,MAAM,aAAa,GACjB;QACE,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QACvC,aAAa,EAAE;YACb,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC;YACzC,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC;SAC5C;KACF,CAAC;IAEJ,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAoBA,0DAAuB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TransferGroupFilter } from '../../engine';
|
|
2
|
+
interface CmdOptions {
|
|
3
|
+
file?: string;
|
|
4
|
+
encrypt?: boolean;
|
|
5
|
+
key?: string;
|
|
6
|
+
compress?: boolean;
|
|
7
|
+
only?: (keyof TransferGroupFilter)[];
|
|
8
|
+
exclude?: (keyof TransferGroupFilter)[];
|
|
9
|
+
throttle?: number;
|
|
10
|
+
maxSizeJsonl?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Export command.
|
|
14
|
+
*
|
|
15
|
+
* It transfers data from a local Strapi instance to a file
|
|
16
|
+
*
|
|
17
|
+
* @param {ExportCommandOptions} opts
|
|
18
|
+
*/
|
|
19
|
+
declare const _default: (opts: CmdOptions) => Promise<void>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const fp_1 = require("lodash/fp");
|
|
30
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
31
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
32
|
+
const data_transfer_1 = require("../data-transfer");
|
|
33
|
+
const helpers_1 = require("../helpers");
|
|
34
|
+
const engine_1 = require("../../engine");
|
|
35
|
+
const strapiDatatransfer = __importStar(require("../../strapi"));
|
|
36
|
+
const file = __importStar(require("../../file"));
|
|
37
|
+
const { providers: { createLocalFileDestinationProvider }, } = file;
|
|
38
|
+
const { providers: { createLocalStrapiSourceProvider }, } = strapiDatatransfer;
|
|
39
|
+
const BYTES_IN_MB = 1024 * 1024;
|
|
40
|
+
/**
|
|
41
|
+
* Export command.
|
|
42
|
+
*
|
|
43
|
+
* It transfers data from a local Strapi instance to a file
|
|
44
|
+
*
|
|
45
|
+
* @param {ExportCommandOptions} opts
|
|
46
|
+
*/
|
|
47
|
+
exports.default = async (opts) => {
|
|
48
|
+
// Validate inputs from Commander
|
|
49
|
+
if (!(0, fp_1.isObject)(opts)) {
|
|
50
|
+
(0, helpers_1.exitWith)(1, 'Could not parse command arguments');
|
|
51
|
+
}
|
|
52
|
+
const strapi = await (0, data_transfer_1.createStrapiInstance)();
|
|
53
|
+
const source = createSourceProvider(strapi);
|
|
54
|
+
const destination = createDestinationProvider(opts);
|
|
55
|
+
const engine = (0, engine_1.createTransferEngine)(source, destination, {
|
|
56
|
+
versionStrategy: 'ignore',
|
|
57
|
+
schemaStrategy: 'ignore',
|
|
58
|
+
exclude: opts.exclude,
|
|
59
|
+
only: opts.only,
|
|
60
|
+
throttle: opts.throttle,
|
|
61
|
+
transforms: {
|
|
62
|
+
links: [
|
|
63
|
+
{
|
|
64
|
+
filter(link) {
|
|
65
|
+
return (!data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&
|
|
66
|
+
!data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type));
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
entities: [
|
|
71
|
+
{
|
|
72
|
+
filter(entity) {
|
|
73
|
+
return !data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
engine.diagnostics.onDiagnostic((0, data_transfer_1.formatDiagnostic)('export'));
|
|
80
|
+
const progress = engine.progress.stream;
|
|
81
|
+
const { updateLoader } = (0, data_transfer_1.loadersFactory)();
|
|
82
|
+
progress.on(`stage::start`, ({ stage, data }) => {
|
|
83
|
+
updateLoader(stage, data).start();
|
|
84
|
+
});
|
|
85
|
+
progress.on('stage::finish', ({ stage, data }) => {
|
|
86
|
+
updateLoader(stage, data).succeed();
|
|
87
|
+
});
|
|
88
|
+
progress.on('stage::progress', ({ stage, data }) => {
|
|
89
|
+
updateLoader(stage, data);
|
|
90
|
+
});
|
|
91
|
+
progress.on('transfer::start', async () => {
|
|
92
|
+
console.log(`Starting export...`);
|
|
93
|
+
await strapi.telemetry.send('didDEITSProcessStart', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
94
|
+
});
|
|
95
|
+
let results;
|
|
96
|
+
let outFile;
|
|
97
|
+
try {
|
|
98
|
+
// Abort transfer if user interrupts process
|
|
99
|
+
(0, data_transfer_1.setSignalHandler)(() => (0, data_transfer_1.abortTransfer)({ engine, strapi }));
|
|
100
|
+
results = await engine.transfer();
|
|
101
|
+
outFile = results.destination?.file?.path ?? '';
|
|
102
|
+
const outFileExists = await fs_extra_1.default.pathExists(outFile);
|
|
103
|
+
if (!outFileExists) {
|
|
104
|
+
throw new engine_1.errors.TransferEngineTransferError(`Export file not created "${outFile}"`);
|
|
105
|
+
}
|
|
106
|
+
// Note: we need to await telemetry or else the process ends before it is sent
|
|
107
|
+
await strapi.telemetry.send('didDEITSProcessFinish', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
108
|
+
try {
|
|
109
|
+
const table = (0, data_transfer_1.buildTransferTable)(results.engine);
|
|
110
|
+
console.log(table?.toString());
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error('There was an error displaying the results of the transfer.');
|
|
114
|
+
}
|
|
115
|
+
console.log(`Export archive is in ${chalk_1.default.green(outFile)}`);
|
|
116
|
+
(0, helpers_1.exitWith)(0, (0, data_transfer_1.exitMessageText)('export'));
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
await strapi.telemetry.send('didDEITSProcessFail', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
120
|
+
(0, helpers_1.exitWith)(1, (0, data_transfer_1.exitMessageText)('export', true));
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* It creates a local strapi destination provider
|
|
125
|
+
*/
|
|
126
|
+
const createSourceProvider = (strapi) => {
|
|
127
|
+
return createLocalStrapiSourceProvider({
|
|
128
|
+
async getStrapi() {
|
|
129
|
+
return strapi;
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* It creates a local file destination provider based on the given options
|
|
135
|
+
*/
|
|
136
|
+
const createDestinationProvider = (opts) => {
|
|
137
|
+
const { file, compress, encrypt, key, maxSizeJsonl } = opts;
|
|
138
|
+
const filepath = (0, fp_1.isString)(file) && file.length > 0 ? file : (0, data_transfer_1.getDefaultExportName)();
|
|
139
|
+
const maxSizeJsonlInMb = (0, fp_1.isFinite)((0, fp_1.toNumber)(maxSizeJsonl))
|
|
140
|
+
? (0, fp_1.toNumber)(maxSizeJsonl) * BYTES_IN_MB
|
|
141
|
+
: undefined;
|
|
142
|
+
return createLocalFileDestinationProvider({
|
|
143
|
+
file: {
|
|
144
|
+
path: filepath,
|
|
145
|
+
maxSizeJsonl: maxSizeJsonlInMb,
|
|
146
|
+
},
|
|
147
|
+
encryption: {
|
|
148
|
+
enabled: encrypt ?? false,
|
|
149
|
+
key: encrypt ? key : undefined,
|
|
150
|
+
},
|
|
151
|
+
compression: {
|
|
152
|
+
enabled: compress ?? false,
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/export/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const data_transfer_1 = require("../data-transfer");
|
|
8
|
+
const commander_2 = require("../commander");
|
|
9
|
+
const action_1 = __importDefault(require("./action"));
|
|
10
|
+
/**
|
|
11
|
+
* `$ strapi export`
|
|
12
|
+
*/
|
|
13
|
+
const command = ({ command }) => {
|
|
14
|
+
command
|
|
15
|
+
.command('export')
|
|
16
|
+
.description('Export data from Strapi to file')
|
|
17
|
+
.allowExcessArguments(false)
|
|
18
|
+
.addOption(new commander_1.Option('--no-encrypt', `Disables 'aes-128-ecb' encryption of the output file`).default(true))
|
|
19
|
+
.addOption(new commander_1.Option('--no-compress', 'Disables gzip compression of output file').default(true))
|
|
20
|
+
.addOption(new commander_1.Option('-k, --key <string>', 'Provide encryption key in command instead of using the prompt'))
|
|
21
|
+
.addOption(new commander_1.Option('-f, --file <file>', 'name to use for exported file (without extensions)'))
|
|
22
|
+
.addOption(data_transfer_1.excludeOption)
|
|
23
|
+
.addOption(data_transfer_1.onlyOption)
|
|
24
|
+
.addOption(data_transfer_1.throttleOption)
|
|
25
|
+
.hook('preAction', data_transfer_1.validateExcludeOnly)
|
|
26
|
+
.hook('preAction', commander_2.promptEncryptionKey)
|
|
27
|
+
.action(action_1.default);
|
|
28
|
+
};
|
|
29
|
+
exports.default = command;
|
|
30
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/export/command.ts"],"names":[],"mappings":";;;;;AAAA,yCAA4C;AAC5C,oDAAkG;AAClG,4CAAmD;AACnD,sDAA8B;AAE9B;;GAEG;AACH,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAwB,EAAE,EAAE;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,oBAAoB,CAAC,KAAK,CAAC;SAC3B,SAAS,CACR,IAAI,kBAAM,CAAC,cAAc,EAAE,sDAAsD,CAAC,CAAC,OAAO,CACxF,IAAI,CACL,CACF;SACA,SAAS,CACR,IAAI,kBAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CACtF;SACA,SAAS,CACR,IAAI,kBAAM,CACR,oBAAoB,EACpB,+DAA+D,CAChE,CACF;SACA,SAAS,CACR,IAAI,kBAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC,CACtF;SACA,SAAS,CAAC,6BAAa,CAAC;SACxB,SAAS,CAAC,0BAAU,CAAC;SACrB,SAAS,CAAC,8BAAc,CAAC;SACzB,IAAI,CAAC,WAAW,EAAE,mCAAmB,CAAC;SACtC,IAAI,CAAC,WAAW,EAAE,+BAAmB,CAAC;SACtC,MAAM,CAAC,gBAAM,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { Command } from 'commander';
|
|
3
|
+
/**
|
|
4
|
+
* Convert bytes to a human readable formatted string, for example "1024" becomes "1KB"
|
|
5
|
+
*/
|
|
6
|
+
declare const readableBytes: (bytes: number, decimals?: number, padStart?: number) => string;
|
|
7
|
+
interface ExitWithOptions {
|
|
8
|
+
logger?: Console;
|
|
9
|
+
prc?: NodeJS.Process;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* Display message(s) to console and then call process.exit with code.
|
|
14
|
+
* If code is zero, console.log and green text is used for messages, otherwise console.error and red text.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
declare const exitWith: (code: number, message?: string | string[], options?: ExitWithOptions) => void;
|
|
18
|
+
/**
|
|
19
|
+
* assert that a URL object has a protocol value
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
declare const assertUrlHasProtocol: (url: URL, protocol?: string | string[]) => void;
|
|
23
|
+
type ConditionCallback = (opts: Record<string, any>) => Promise<boolean>;
|
|
24
|
+
type IsMetCallback = (command: Command) => Promise<void>;
|
|
25
|
+
type IsNotMetCallback = (command: Command) => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Passes commander options to conditionCallback(). If it returns true, call isMetCallback otherwise call isNotMetCallback
|
|
28
|
+
*/
|
|
29
|
+
declare const ifOptions: (conditionCallback: ConditionCallback, isMetCallback?: IsMetCallback, isNotMetCallback?: IsNotMetCallback) => (command: Command) => Promise<void>;
|
|
30
|
+
export { exitWith, assertUrlHasProtocol, ifOptions, readableBytes };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readableBytes = exports.ifOptions = exports.assertUrlHasProtocol = exports.exitWith = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const fp_1 = require("lodash/fp");
|
|
9
|
+
const bytesPerKb = 1024;
|
|
10
|
+
const sizes = ['B ', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
11
|
+
/**
|
|
12
|
+
* Convert bytes to a human readable formatted string, for example "1024" becomes "1KB"
|
|
13
|
+
*/
|
|
14
|
+
const readableBytes = (bytes, decimals = 1, padStart = 0) => {
|
|
15
|
+
if (!bytes) {
|
|
16
|
+
return '0';
|
|
17
|
+
}
|
|
18
|
+
const i = Math.floor(Math.log(bytes) / Math.log(bytesPerKb));
|
|
19
|
+
const result = `${parseFloat((bytes / bytesPerKb ** i).toFixed(decimals))} ${sizes[i].padStart(2)}`;
|
|
20
|
+
return result.padStart(padStart);
|
|
21
|
+
};
|
|
22
|
+
exports.readableBytes = readableBytes;
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* Display message(s) to console and then call process.exit with code.
|
|
26
|
+
* If code is zero, console.log and green text is used for messages, otherwise console.error and red text.
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
const exitWith = (code, message, options = {}) => {
|
|
30
|
+
const { logger = console, prc = process } = options;
|
|
31
|
+
const log = (message) => {
|
|
32
|
+
if (code === 0) {
|
|
33
|
+
logger.log(chalk_1.default.green(message));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.error(chalk_1.default.red(message));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
if ((0, fp_1.isString)(message)) {
|
|
40
|
+
log(message);
|
|
41
|
+
}
|
|
42
|
+
else if ((0, fp_1.isArray)(message)) {
|
|
43
|
+
message.forEach((msg) => log(msg));
|
|
44
|
+
}
|
|
45
|
+
prc.exit(code);
|
|
46
|
+
};
|
|
47
|
+
exports.exitWith = exitWith;
|
|
48
|
+
/**
|
|
49
|
+
* assert that a URL object has a protocol value
|
|
50
|
+
*
|
|
51
|
+
*/
|
|
52
|
+
const assertUrlHasProtocol = (url, protocol) => {
|
|
53
|
+
if (!url.protocol) {
|
|
54
|
+
exitWith(1, `${url.toString()} does not have a protocol`);
|
|
55
|
+
}
|
|
56
|
+
// if just checking for the existence of a protocol, return
|
|
57
|
+
if (!protocol) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if ((0, fp_1.isString)(protocol)) {
|
|
61
|
+
if (protocol !== url.protocol) {
|
|
62
|
+
exitWith(1, `${url.toString()} must have the protocol ${protocol}`);
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// assume an array
|
|
67
|
+
if (!protocol.some((protocol) => url.protocol === protocol)) {
|
|
68
|
+
return exitWith(1, `${url.toString()} must have one of the following protocols: ${protocol.join(',')}`);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.assertUrlHasProtocol = assertUrlHasProtocol;
|
|
72
|
+
/**
|
|
73
|
+
* Passes commander options to conditionCallback(). If it returns true, call isMetCallback otherwise call isNotMetCallback
|
|
74
|
+
*/
|
|
75
|
+
const ifOptions = (conditionCallback, isMetCallback = async () => { }, isNotMetCallback = async () => { }) => {
|
|
76
|
+
return async (command) => {
|
|
77
|
+
const opts = command.opts();
|
|
78
|
+
if (await conditionCallback(opts)) {
|
|
79
|
+
await isMetCallback(command);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
await isNotMetCallback(command);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
exports.ifOptions = ifOptions;
|
|
87
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as engine from '../../engine';
|
|
2
|
+
interface CmdOptions {
|
|
3
|
+
file?: string;
|
|
4
|
+
decompress?: boolean;
|
|
5
|
+
decrypt?: boolean;
|
|
6
|
+
key?: string;
|
|
7
|
+
conflictStrategy?: 'restore';
|
|
8
|
+
force?: boolean;
|
|
9
|
+
only?: (keyof engine.TransferGroupFilter)[];
|
|
10
|
+
exclude?: (keyof engine.TransferGroupFilter)[];
|
|
11
|
+
throttle?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Import command.
|
|
15
|
+
*
|
|
16
|
+
* It transfers data from a file to a local Strapi instance
|
|
17
|
+
*/
|
|
18
|
+
declare const _default: (opts: CmdOptions) => Promise<void>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fp_1 = require("lodash/fp");
|
|
27
|
+
const data_transfer_1 = require("../data-transfer");
|
|
28
|
+
const helpers_1 = require("../helpers");
|
|
29
|
+
const engine = __importStar(require("../../engine"));
|
|
30
|
+
const strapiDatatransfer = __importStar(require("../../strapi"));
|
|
31
|
+
const file = __importStar(require("../../file"));
|
|
32
|
+
const { providers: { createLocalFileSourceProvider }, } = file;
|
|
33
|
+
const { providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY }, } = strapiDatatransfer;
|
|
34
|
+
const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } = engine;
|
|
35
|
+
/**
|
|
36
|
+
* Import command.
|
|
37
|
+
*
|
|
38
|
+
* It transfers data from a file to a local Strapi instance
|
|
39
|
+
*/
|
|
40
|
+
exports.default = async (opts) => {
|
|
41
|
+
// validate inputs from Commander
|
|
42
|
+
if (!(0, fp_1.isObject)(opts)) {
|
|
43
|
+
(0, helpers_1.exitWith)(1, 'Could not parse arguments');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* From strapi backup file
|
|
47
|
+
*/
|
|
48
|
+
const sourceOptions = getLocalFileSourceOptions(opts);
|
|
49
|
+
const source = createLocalFileSourceProvider(sourceOptions);
|
|
50
|
+
/**
|
|
51
|
+
* To local Strapi instance
|
|
52
|
+
*/
|
|
53
|
+
const strapiInstance = await (0, data_transfer_1.createStrapiInstance)();
|
|
54
|
+
/**
|
|
55
|
+
* Configure and run the transfer engine
|
|
56
|
+
*/
|
|
57
|
+
const engineOptions = {
|
|
58
|
+
versionStrategy: DEFAULT_VERSION_STRATEGY,
|
|
59
|
+
schemaStrategy: DEFAULT_SCHEMA_STRATEGY,
|
|
60
|
+
exclude: opts.exclude,
|
|
61
|
+
only: opts.only,
|
|
62
|
+
throttle: opts.throttle,
|
|
63
|
+
transforms: {
|
|
64
|
+
links: [
|
|
65
|
+
{
|
|
66
|
+
filter(link) {
|
|
67
|
+
return (!data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&
|
|
68
|
+
!data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type));
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
entities: [
|
|
73
|
+
{
|
|
74
|
+
filter: (entity) => !data_transfer_1.DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type),
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const destinationOptions = {
|
|
80
|
+
async getStrapi() {
|
|
81
|
+
return strapiInstance;
|
|
82
|
+
},
|
|
83
|
+
autoDestroy: false,
|
|
84
|
+
strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,
|
|
85
|
+
restore: (0, data_transfer_1.parseRestoreFromOptions)(engineOptions),
|
|
86
|
+
};
|
|
87
|
+
const destination = createLocalStrapiDestinationProvider(destinationOptions);
|
|
88
|
+
const engine = createTransferEngine(source, destination, engineOptions);
|
|
89
|
+
engine.diagnostics.onDiagnostic((0, data_transfer_1.formatDiagnostic)('import'));
|
|
90
|
+
const progress = engine.progress.stream;
|
|
91
|
+
const { updateLoader } = (0, data_transfer_1.loadersFactory)();
|
|
92
|
+
engine.onSchemaDiff((0, data_transfer_1.getDiffHandler)(engine, { force: opts.force, action: 'import' }));
|
|
93
|
+
progress.on(`stage::start`, ({ stage, data }) => {
|
|
94
|
+
updateLoader(stage, data).start();
|
|
95
|
+
});
|
|
96
|
+
progress.on('stage::finish', ({ stage, data }) => {
|
|
97
|
+
updateLoader(stage, data).succeed();
|
|
98
|
+
});
|
|
99
|
+
progress.on('stage::progress', ({ stage, data }) => {
|
|
100
|
+
updateLoader(stage, data);
|
|
101
|
+
});
|
|
102
|
+
progress.on('transfer::start', async () => {
|
|
103
|
+
console.log('Starting import...');
|
|
104
|
+
await strapiInstance.telemetry.send('didDEITSProcessStart', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
105
|
+
});
|
|
106
|
+
let results;
|
|
107
|
+
try {
|
|
108
|
+
// Abort transfer if user interrupts process
|
|
109
|
+
(0, data_transfer_1.setSignalHandler)(() => (0, data_transfer_1.abortTransfer)({ engine, strapi: strapi }));
|
|
110
|
+
results = await engine.transfer();
|
|
111
|
+
try {
|
|
112
|
+
const table = (0, data_transfer_1.buildTransferTable)(results.engine);
|
|
113
|
+
console.log(table?.toString());
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
console.error('There was an error displaying the results of the transfer.');
|
|
117
|
+
}
|
|
118
|
+
// Note: we need to await telemetry or else the process ends before it is sent
|
|
119
|
+
await strapiInstance.telemetry.send('didDEITSProcessFinish', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
120
|
+
await strapiInstance.destroy();
|
|
121
|
+
(0, helpers_1.exitWith)(0, (0, data_transfer_1.exitMessageText)('import'));
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
await strapiInstance.telemetry.send('didDEITSProcessFail', (0, data_transfer_1.getTransferTelemetryPayload)(engine));
|
|
125
|
+
(0, helpers_1.exitWith)(1, (0, data_transfer_1.exitMessageText)('import', true));
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Infer local file source provider options based on a given filename
|
|
130
|
+
*/
|
|
131
|
+
const getLocalFileSourceOptions = (opts) => {
|
|
132
|
+
const options = {
|
|
133
|
+
file: { path: opts.file ?? '' },
|
|
134
|
+
compression: { enabled: !!opts.decompress },
|
|
135
|
+
encryption: { enabled: !!opts.decrypt, key: opts.key },
|
|
136
|
+
};
|
|
137
|
+
return options;
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/import/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const data_transfer_1 = require("../data-transfer");
|
|
10
|
+
const commander_2 = require("../commander");
|
|
11
|
+
const helpers_1 = require("../helpers");
|
|
12
|
+
const action_1 = __importDefault(require("./action"));
|
|
13
|
+
/**
|
|
14
|
+
* `$ strapi import`
|
|
15
|
+
*/
|
|
16
|
+
const command = ({ command }) => {
|
|
17
|
+
command
|
|
18
|
+
.command('import')
|
|
19
|
+
.description('Import data from file to Strapi')
|
|
20
|
+
.allowExcessArguments(false)
|
|
21
|
+
.requiredOption('-f, --file <file>', 'path and filename for the Strapi export file you want to import')
|
|
22
|
+
.addOption(new commander_1.Option('-k, --key <string>', 'Provide encryption key in command instead of using the prompt'))
|
|
23
|
+
.addOption(commander_2.forceOption)
|
|
24
|
+
.addOption(data_transfer_1.excludeOption)
|
|
25
|
+
.addOption(data_transfer_1.onlyOption)
|
|
26
|
+
.addOption(data_transfer_1.throttleOption)
|
|
27
|
+
.hook('preAction', data_transfer_1.validateExcludeOnly)
|
|
28
|
+
.hook('preAction', async (thisCommand) => {
|
|
29
|
+
const opts = thisCommand.opts();
|
|
30
|
+
const ext = path_1.default.extname(String(opts.file));
|
|
31
|
+
// check extension to guess if we should prompt for key
|
|
32
|
+
if (ext === '.enc') {
|
|
33
|
+
if (!opts.key) {
|
|
34
|
+
const answers = await inquirer_1.default.prompt([
|
|
35
|
+
{
|
|
36
|
+
type: 'password',
|
|
37
|
+
message: 'Please enter your decryption key',
|
|
38
|
+
name: 'key',
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
if (!answers.key?.length) {
|
|
42
|
+
(0, helpers_1.exitWith)(1, 'No key entered, aborting import.');
|
|
43
|
+
}
|
|
44
|
+
opts.key = answers.key;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
// set decrypt and decompress options based on filename
|
|
49
|
+
.hook('preAction', (thisCommand) => {
|
|
50
|
+
const opts = thisCommand.opts();
|
|
51
|
+
const { extname, parse } = path_1.default;
|
|
52
|
+
let file = opts.file;
|
|
53
|
+
if (extname(file) === '.enc') {
|
|
54
|
+
file = parse(file).name; // trim the .enc extension
|
|
55
|
+
thisCommand.opts().decrypt = true;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
thisCommand.opts().decrypt = false;
|
|
59
|
+
}
|
|
60
|
+
if (extname(file) === '.gz') {
|
|
61
|
+
file = parse(file).name; // trim the .gz extension
|
|
62
|
+
thisCommand.opts().decompress = true;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
thisCommand.opts().decompress = false;
|
|
66
|
+
}
|
|
67
|
+
if (extname(file) !== '.tar') {
|
|
68
|
+
(0, helpers_1.exitWith)(1, `The file '${opts.file}' does not appear to be a valid Strapi data file. It must have an extension ending in .tar[.gz][.enc]`);
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
.hook('preAction', (0, commander_2.getCommanderConfirmMessage)('The import will delete your existing data! Are you sure you want to proceed?', { failMessage: 'Import process aborted' }))
|
|
72
|
+
.action(action_1.default);
|
|
73
|
+
};
|
|
74
|
+
exports.default = command;
|
|
75
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/import/command.ts"],"names":[],"mappings":"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"}
|