{"version":3,"file":"internal.mjs","sources":["../../src/migrations/internal.ts"],"sourcesContent":["import type { Umzug } from 'umzug';\n\nimport { wrapTransaction } from './common';\nimport { internalMigrations } from './internal-migrations';\nimport { createStorage } from './storage';\nimport { transformLogMessage } from './logger';\n\nimport type { InternalMigrationProvider, Migration } from './common';\nimport type { Database } from '..';\n\nexport const createInternalMigrationProvider = (db: Database): InternalMigrationProvider => {\n  const context = { db };\n  const migrations: Migration[] = [...internalMigrations];\n\n  // Lazy: defer `umzug` (and its inquirer / @rushstack chain) until first call\n  let lazyProvider: Umzug<typeof context> | undefined;\n  const provider = (): Umzug<typeof context> => {\n    if (lazyProvider) return lazyProvider;\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const { Umzug: UmzugCtor } = require('umzug') as typeof import('umzug');\n    lazyProvider = new UmzugCtor({\n      storage: createStorage({ db, tableName: 'strapi_migrations_internal' }),\n      logger: {\n        info(message) {\n          // NOTE: only log internal migration in debug mode\n          db.logger.debug(transformLogMessage('info', message));\n        },\n        warn(message) {\n          db.logger.warn(transformLogMessage('warn', message));\n        },\n        error(message) {\n          db.logger.error(transformLogMessage('error', message));\n        },\n        debug(message) {\n          db.logger.debug(transformLogMessage('debug', message));\n        },\n      },\n      context,\n      migrations: () =>\n        migrations.map((migration) => {\n          return {\n            name: migration.name,\n            up: wrapTransaction(context.db)(migration.up),\n            down: wrapTransaction(context.db)(migration.down),\n          };\n        }),\n    });\n    return lazyProvider;\n  };\n\n  return {\n    async register(migration: Migration) {\n      migrations.push(migration);\n    },\n    async shouldRun() {\n      const pendingMigrations = await provider().pending();\n      return pendingMigrations.length > 0;\n    },\n    async up() {\n      await provider().up();\n    },\n    async down() {\n      await provider().down();\n    },\n  };\n};\n"],"names":["createInternalMigrationProvider","db","context","migrations","internalMigrations","lazyProvider","provider","Umzug","UmzugCtor","require","storage","createStorage","tableName","logger","info","message","debug","transformLogMessage","warn","error","map","migration","name","up","wrapTransaction","down","register","push","shouldRun","pendingMigrations","pending","length"],"mappings":";;;;;AAUO,MAAMA,kCAAkC,CAACC,EAAAA,GAAAA;AAC9C,IAAA,MAAMC,OAAAA,GAAU;AAAED,QAAAA;AAAG,KAAA;AACrB,IAAA,MAAME,UAAAA,GAA0B;AAAIC,QAAAA,GAAAA;AAAmB,KAAA;;IAGvD,IAAIC,YAAAA;AACJ,IAAA,MAAMC,QAAAA,GAAW,IAAA;AACf,QAAA,IAAID,cAAc,OAAOA,YAAAA;;AAEzB,QAAA,MAAM,EAAEE,KAAAA,EAAOC,SAAS,EAAE,GAAGC,OAAAA,CAAQ,OAAA,CAAA;AACrCJ,QAAAA,YAAAA,GAAe,IAAIG,SAAAA,CAAU;AAC3BE,YAAAA,OAAAA,EAASC,aAAAA,CAAc;AAAEV,gBAAAA,EAAAA;gBAAIW,SAAAA,EAAW;AAA6B,aAAA,CAAA;YACrEC,MAAAA,EAAQ;AACNC,gBAAAA,IAAAA,CAAAA,CAAKC,OAAO,EAAA;;AAEVd,oBAAAA,EAAAA,CAAGY,MAAM,CAACG,KAAK,CAACC,oBAAoB,MAAA,EAAQF,OAAAA,CAAAA,CAAAA;AAC9C,gBAAA,CAAA;AACAG,gBAAAA,IAAAA,CAAAA,CAAKH,OAAO,EAAA;AACVd,oBAAAA,EAAAA,CAAGY,MAAM,CAACK,IAAI,CAACD,oBAAoB,MAAA,EAAQF,OAAAA,CAAAA,CAAAA;AAC7C,gBAAA,CAAA;AACAI,gBAAAA,KAAAA,CAAAA,CAAMJ,OAAO,EAAA;AACXd,oBAAAA,EAAAA,CAAGY,MAAM,CAACM,KAAK,CAACF,oBAAoB,OAAA,EAASF,OAAAA,CAAAA,CAAAA;AAC/C,gBAAA,CAAA;AACAC,gBAAAA,KAAAA,CAAAA,CAAMD,OAAO,EAAA;AACXd,oBAAAA,EAAAA,CAAGY,MAAM,CAACG,KAAK,CAACC,oBAAoB,OAAA,EAASF,OAAAA,CAAAA,CAAAA;AAC/C,gBAAA;AACF,aAAA;AACAb,YAAAA,OAAAA;AACAC,YAAAA,UAAAA,EAAY,IACVA,UAAAA,CAAWiB,GAAG,CAAC,CAACC,SAAAA,GAAAA;oBACd,OAAO;AACLC,wBAAAA,IAAAA,EAAMD,UAAUC,IAAI;AACpBC,wBAAAA,EAAAA,EAAIC,eAAAA,CAAgBtB,OAAAA,CAAQD,EAAE,CAAA,CAAEoB,UAAUE,EAAE,CAAA;AAC5CE,wBAAAA,IAAAA,EAAMD,eAAAA,CAAgBtB,OAAAA,CAAQD,EAAE,CAAA,CAAEoB,UAAUI,IAAI;AAClD,qBAAA;AACF,gBAAA,CAAA;AACJ,SAAA,CAAA;QACA,OAAOpB,YAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACL,QAAA,MAAMqB,UAASL,SAAoB,EAAA;AACjClB,YAAAA,UAAAA,CAAWwB,IAAI,CAACN,SAAAA,CAAAA;AAClB,QAAA,CAAA;QACA,MAAMO,SAAAA,CAAAA,GAAAA;YACJ,MAAMC,iBAAAA,GAAoB,MAAMvB,QAAAA,EAAAA,CAAWwB,OAAO,EAAA;YAClD,OAAOD,iBAAAA,CAAkBE,MAAM,GAAG,CAAA;AACpC,QAAA,CAAA;QACA,MAAMR,EAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMjB,WAAWiB,EAAE,EAAA;AACrB,QAAA,CAAA;QACA,MAAME,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMnB,WAAWmB,IAAI,EAAA;AACvB,QAAA;AACF,KAAA;AACF;;;;"}