verify-partytown-setup.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.verifyPartytownSetup = verifyPartytownSetup;
  6. var _fs = require("fs");
  7. var _chalk = _interopRequireDefault(require("next/dist/compiled/chalk"));
  8. var _path = _interopRequireDefault(require("path"));
  9. var _hasNecessaryDependencies = require("./has-necessary-dependencies");
  10. var _fileExists = require("./file-exists");
  11. var _fatalError = require("./fatal-error");
  12. var _recursiveDelete = require("./recursive-delete");
  13. var Log = _interopRequireWildcard(require("../build/output/log"));
  14. var _getPkgManager = require("./helpers/get-pkg-manager");
  15. function _interopRequireDefault(obj) {
  16. return obj && obj.__esModule ? obj : {
  17. default: obj
  18. };
  19. }
  20. function _getRequireWildcardCache() {
  21. if (typeof WeakMap !== "function") return null;
  22. var cache = new WeakMap();
  23. _getRequireWildcardCache = function() {
  24. return cache;
  25. };
  26. return cache;
  27. }
  28. function _interopRequireWildcard(obj) {
  29. if (obj && obj.__esModule) {
  30. return obj;
  31. }
  32. if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
  33. return {
  34. default: obj
  35. };
  36. }
  37. var cache = _getRequireWildcardCache();
  38. if (cache && cache.has(obj)) {
  39. return cache.get(obj);
  40. }
  41. var newObj = {};
  42. var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
  43. for(var key in obj){
  44. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  45. var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
  46. if (desc && (desc.get || desc.set)) {
  47. Object.defineProperty(newObj, key, desc);
  48. } else {
  49. newObj[key] = obj[key];
  50. }
  51. }
  52. }
  53. newObj.default = obj;
  54. if (cache) {
  55. cache.set(obj, newObj);
  56. }
  57. return newObj;
  58. }
  59. async function missingDependencyError(dir) {
  60. const packageManager = (0, _getPkgManager).getPkgManager(dir);
  61. throw new _fatalError.FatalError(_chalk.default.bold.red("It looks like you're trying to use Partytown with next/script but do not have the required package(s) installed.") + "\n\n" + _chalk.default.bold(`Please install Partytown by running:`) + "\n\n" + `\t${_chalk.default.bold.cyan((packageManager === "yarn" ? "yarn add --dev" : packageManager === "pnpm" ? "pnpm install --save-dev" : "npm install --save-dev") + " @builder.io/partytown")}` + "\n\n" + _chalk.default.bold(`If you are not trying to use Partytown, please disable the experimental ${_chalk.default.cyan('"nextScriptWorkers"')} flag in next.config.js.`) + "\n");
  62. }
  63. async function copyPartytownStaticFiles(deps, staticDir) {
  64. const partytownLibDir = _path.default.join(staticDir, "~partytown");
  65. const hasPartytownLibDir = await (0, _fileExists).fileExists(partytownLibDir, "directory");
  66. if (hasPartytownLibDir) {
  67. await (0, _recursiveDelete).recursiveDelete(partytownLibDir);
  68. await _fs.promises.rmdir(partytownLibDir);
  69. }
  70. const { copyLibFiles } = await Promise.resolve(require(_path.default.join(deps.resolved.get("@builder.io/partytown"), "../utils")));
  71. await copyLibFiles(partytownLibDir);
  72. }
  73. async function verifyPartytownSetup(dir, targetDir) {
  74. try {
  75. var ref;
  76. const partytownDeps = await (0, _hasNecessaryDependencies).hasNecessaryDependencies(dir, [
  77. {
  78. file: "@builder.io/partytown",
  79. pkg: "@builder.io/partytown",
  80. exportsRestrict: false
  81. },
  82. ]);
  83. if (((ref = partytownDeps.missing) == null ? void 0 : ref.length) > 0) {
  84. await missingDependencyError(dir);
  85. } else {
  86. try {
  87. await copyPartytownStaticFiles(partytownDeps, targetDir);
  88. } catch (err) {
  89. Log.warn(`Partytown library files could not be copied to the static directory. Please ensure that ${_chalk.default.bold.cyan("@builder.io/partytown")} is installed as a dependency.`);
  90. }
  91. }
  92. } catch (err) {
  93. // Don't show a stack trace when there is an error due to missing dependencies
  94. if (err instanceof _fatalError.FatalError) {
  95. console.error(err.message);
  96. process.exit(1);
  97. }
  98. throw err;
  99. }
  100. }
  101. //# sourceMappingURL=verify-partytown-setup.js.map