create-payload-app 1.0.0 → 3.0.0-alpha.54

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.
Files changed (91) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +3 -3
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/configure-payload-config.d.ts +11 -0
  7. package/dist/lib/configure-payload-config.d.ts.map +1 -0
  8. package/dist/lib/configure-payload-config.js +15 -53
  9. package/dist/lib/configure-payload-config.js.map +1 -0
  10. package/dist/lib/create-project.d.ts +14 -0
  11. package/dist/lib/create-project.d.ts.map +1 -0
  12. package/dist/lib/create-project.js +84 -24
  13. package/dist/lib/create-project.js.map +1 -0
  14. package/dist/lib/create-project.spec.d.ts +2 -0
  15. package/dist/lib/create-project.spec.d.ts.map +1 -0
  16. package/dist/lib/create-project.spec.js +30 -75
  17. package/dist/lib/create-project.spec.js.map +1 -0
  18. package/dist/lib/generate-secret.d.ts +2 -0
  19. package/dist/lib/generate-secret.d.ts.map +1 -0
  20. package/dist/lib/generate-secret.js +1 -1
  21. package/dist/lib/generate-secret.js.map +1 -0
  22. package/dist/lib/init-next.d.ts +29 -0
  23. package/dist/lib/init-next.d.ts.map +1 -0
  24. package/dist/lib/init-next.js +285 -0
  25. package/dist/lib/init-next.js.map +1 -0
  26. package/dist/lib/packages.d.ts +9 -0
  27. package/dist/lib/packages.d.ts.map +1 -0
  28. package/dist/lib/packages.js +8 -52
  29. package/dist/lib/packages.js.map +1 -0
  30. package/dist/lib/parse-project-name.d.ts +3 -0
  31. package/dist/lib/parse-project-name.d.ts.map +1 -0
  32. package/dist/lib/parse-project-name.js +53 -12
  33. package/dist/lib/parse-project-name.js.map +1 -0
  34. package/dist/lib/parse-template.d.ts +3 -0
  35. package/dist/lib/parse-template.d.ts.map +1 -0
  36. package/dist/lib/parse-template.js +50 -20
  37. package/dist/lib/parse-template.js.map +1 -0
  38. package/dist/lib/select-db.d.ts +3 -0
  39. package/dist/lib/select-db.d.ts.map +1 -0
  40. package/dist/lib/select-db.js +72 -31
  41. package/dist/lib/select-db.js.map +1 -0
  42. package/dist/lib/templates.d.ts +4 -0
  43. package/dist/lib/templates.d.ts.map +1 -0
  44. package/dist/lib/templates.js +17 -11
  45. package/dist/lib/templates.js.map +1 -0
  46. package/dist/lib/wrap-next-config.d.ts +12 -0
  47. package/dist/lib/wrap-next-config.d.ts.map +1 -0
  48. package/dist/lib/wrap-next-config.js +110 -0
  49. package/dist/lib/wrap-next-config.js.map +1 -0
  50. package/dist/lib/wrap-next-config.spec.d.ts +2 -0
  51. package/dist/lib/wrap-next-config.spec.d.ts.map +1 -0
  52. package/dist/lib/wrap-next-config.spec.js +98 -0
  53. package/dist/lib/wrap-next-config.spec.js.map +1 -0
  54. package/dist/lib/write-env-file.d.ts +10 -0
  55. package/dist/lib/write-env-file.d.ts.map +1 -0
  56. package/dist/lib/write-env-file.js +9 -6
  57. package/dist/lib/write-env-file.js.map +1 -0
  58. package/dist/main.d.ts +7 -0
  59. package/dist/main.d.ts.map +1 -0
  60. package/dist/main.js +176 -60
  61. package/dist/main.js.map +1 -0
  62. package/dist/scripts/pack-template-files.d.ts +2 -0
  63. package/dist/scripts/pack-template-files.d.ts.map +1 -0
  64. package/dist/scripts/pack-template-files.js +43 -0
  65. package/dist/scripts/pack-template-files.js.map +1 -0
  66. package/dist/template/src/app/(payload)/admin/[[...segments]]/page.tsx +17 -0
  67. package/dist/template/src/app/(payload)/api/[...slug]/route.ts +9 -0
  68. package/dist/template/src/app/(payload)/api/graphql/route.ts +6 -0
  69. package/dist/template/src/app/(payload)/api/graphql-playground/route.ts +6 -0
  70. package/dist/template/src/app/(payload)/custom.scss +0 -0
  71. package/dist/template/src/app/(payload)/layout.tsx +16 -0
  72. package/dist/template/src/app/my-route/route.ts +14 -0
  73. package/dist/template/src/collections/Users.ts +13 -0
  74. package/dist/template/src/payload.config.ts +38 -0
  75. package/dist/types.d.ts +55 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +1 -1
  78. package/dist/types.js.map +1 -0
  79. package/dist/utils/copy-recursive-sync.d.ts +5 -0
  80. package/dist/utils/copy-recursive-sync.d.ts.map +1 -0
  81. package/dist/utils/copy-recursive-sync.js +34 -0
  82. package/dist/utils/copy-recursive-sync.js.map +1 -0
  83. package/dist/utils/log.d.ts +6 -0
  84. package/dist/utils/log.d.ts.map +1 -0
  85. package/dist/utils/log.js +62 -15
  86. package/dist/utils/log.js.map +1 -0
  87. package/dist/utils/messages.d.ts +11 -0
  88. package/dist/utils/messages.d.ts.map +1 -0
  89. package/dist/utils/messages.js +47 -16
  90. package/dist/utils/messages.js.map +1 -0
  91. package/package.json +27 -10
package/README.md CHANGED
@@ -10,7 +10,7 @@ CLI for easily starting new Payload project
10
10
 
11
11
  $ npx create-payload-app
12
12
  $ npx create-payload-app my-project
13
- $ npx create-payload-app -n my-project -t blog
13
+ $ npx create-payload-app -n my-project -t website
14
14
 
15
15
  OPTIONS
16
16
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- const _main = require("./main");
6
- const _log = require("./utils/log");
5
+ const _main = require("./main.js");
6
+ const _log = require("./utils/log.js");
7
7
  async function main() {
8
8
  await new _main.Main().init();
9
9
  }
10
10
  main().catch((e)=>(0, _log.error)(`An error has occurred: ${e instanceof Error ? e.message : e}`));
11
11
 
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYWluIH0gZnJvbSAnLi9tYWluJ1xuaW1wb3J0IHsgZXJyb3IgfSBmcm9tICcuL3V0aWxzL2xvZydcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IE1haW4oKS5pbml0KClcbn1cblxubWFpbigpLmNhdGNoKChlKSA9PiBlcnJvcihgQW4gZXJyb3IgaGFzIG9jY3VycmVkOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YCkpXG4iXSwibmFtZXMiOlsibWFpbiIsIk1haW4iLCJpbml0IiwiY2F0Y2giLCJlIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7c0JBQXFCO3FCQUNDO0FBRXRCLGVBQWVBO0lBQ2IsTUFBTSxJQUFJQyxVQUFJLEdBQUdDLElBQUk7QUFDdkI7QUFFQUYsT0FBT0csS0FBSyxDQUFDLENBQUNDLElBQU1DLElBQUFBLFVBQUssRUFBQyxDQUFDLHVCQUF1QixFQUFFRCxhQUFhRSxRQUFRRixFQUFFRyxPQUFPLEdBQUdILEVBQUUsQ0FBQyJ9
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Main } from './main.js'\nimport { error } from './utils/log.js'\n\nasync function main(): Promise<void> {\n await new Main().init()\n}\n\nmain().catch((e) => error(`An error has occurred: ${e instanceof Error ? e.message : e}`))\n"],"names":["main","Main","init","catch","e","error","Error","message"],"mappings":";;;;sBAAqB;qBACC;AAEtB,eAAeA;IACb,MAAM,IAAIC,UAAI,GAAGC,IAAI;AACvB;AAEAF,OAAOG,KAAK,CAAC,CAACC,IAAMC,IAAAA,UAAK,EAAC,CAAC,uBAAuB,EAAED,aAAaE,QAAQF,EAAEG,OAAO,GAAGH,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DbDetails } from '../types.js';
2
+ /** Update payload config with necessary imports and adapters */
3
+ export declare function configurePayloadConfig(args: {
4
+ dbDetails: DbDetails | undefined;
5
+ projectDirOrConfigPath: {
6
+ payloadConfigPath: string;
7
+ } | {
8
+ projectDir: string;
9
+ };
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=configure-payload-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-payload-config.d.ts","sourceRoot":"","sources":["../../src/lib/configure-payload-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAK5C,gEAAgE;AAChE,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;IAChC,sBAAsB,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/E,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DhB"}
@@ -9,9 +9,9 @@ Object.defineProperty(exports, "configurePayloadConfig", {
9
9
  }
10
10
  });
11
11
  const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
12
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
- const _log = require("../utils/log");
14
- const _packages = require("./packages");
12
+ const _globby = /*#__PURE__*/ _interop_require_default(require("globby"));
13
+ const _log = require("../utils/log.js");
14
+ const _packages = require("./packages.js");
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
@@ -21,67 +21,29 @@ async function configurePayloadConfig(args) {
21
21
  if (!args.dbDetails) {
22
22
  return;
23
23
  }
24
- // Update package.json
25
- const packageJsonPath = _path.default.resolve(args.projectDir, 'package.json');
26
24
  try {
27
- const packageObj = await _fsextra.default.readJson(packageJsonPath);
28
- packageObj.dependencies['payload'] = '^2.0.0';
29
- const dbPackage = _packages.dbPackages[args.dbDetails.type];
30
- const bundlerPackage = _packages.bundlerPackages['webpack'];
31
- const editorPackage = _packages.editorPackages['slate'];
32
- // Delete all other db adapters
33
- Object.values(_packages.dbPackages).forEach((p)=>{
34
- if (p.packageName !== dbPackage.packageName) {
35
- delete packageObj.dependencies[p.packageName];
36
- }
37
- });
38
- packageObj.dependencies[dbPackage.packageName] = dbPackage.version;
39
- packageObj.dependencies[bundlerPackage.packageName] = bundlerPackage.version;
40
- packageObj.dependencies[editorPackage.packageName] = editorPackage.version;
41
- await _fsextra.default.writeJson(packageJsonPath, packageObj, {
42
- spaces: 2
43
- });
44
- } catch (err) {
45
- (0, _log.warning)('Unable to update name in package.json');
46
- }
47
- try {
48
- const possiblePaths = [
49
- _path.default.resolve(args.projectDir, 'src/payload.config.ts'),
50
- _path.default.resolve(args.projectDir, 'src/payload/payload.config.ts')
51
- ];
52
25
  let payloadConfigPath;
53
- possiblePaths.forEach((p)=>{
54
- if (_fsextra.default.pathExistsSync(p) && !payloadConfigPath) {
55
- payloadConfigPath = p;
56
- }
57
- });
26
+ if (!('payloadConfigPath' in args.projectDirOrConfigPath)) {
27
+ payloadConfigPath = (await (0, _globby.default)('**/payload.config.ts', {
28
+ absolute: true,
29
+ cwd: args.projectDirOrConfigPath.projectDir
30
+ }))?.[0];
31
+ } else {
32
+ payloadConfigPath = args.projectDirOrConfigPath.payloadConfigPath;
33
+ }
58
34
  if (!payloadConfigPath) {
59
- (0, _log.warning)('Unable to update payload.config.ts with plugins');
35
+ (0, _log.warning)('Unable to update payload.config.ts with plugins. Could not find payload.config.ts.');
60
36
  return;
61
37
  }
62
38
  const configContent = _fsextra.default.readFileSync(payloadConfigPath, 'utf-8');
63
39
  const configLines = configContent.split('\n');
64
- const dbReplacement = _packages.dbPackages[args.dbDetails.type];
65
- const bundlerReplacement = _packages.bundlerPackages['webpack'];
66
- const editorReplacement = _packages.editorPackages['slate'];
40
+ const dbReplacement = _packages.dbReplacements[args.dbDetails.type];
67
41
  let dbConfigStartLineIndex;
68
42
  let dbConfigEndLineIndex;
69
43
  configLines.forEach((l, i)=>{
70
44
  if (l.includes('// database-adapter-import')) {
71
45
  configLines[i] = dbReplacement.importReplacement;
72
46
  }
73
- if (l.includes('// bundler-import')) {
74
- configLines[i] = bundlerReplacement.importReplacement;
75
- }
76
- if (l.includes('// bundler-config')) {
77
- configLines[i] = bundlerReplacement.configReplacement;
78
- }
79
- if (l.includes('// editor-import')) {
80
- configLines[i] = editorReplacement.importReplacement;
81
- }
82
- if (l.includes('// editor-config')) {
83
- configLines[i] = editorReplacement.configReplacement;
84
- }
85
47
  if (l.includes('// database-adapter-config-start')) {
86
48
  dbConfigStartLineIndex = i;
87
49
  }
@@ -97,8 +59,8 @@ async function configurePayloadConfig(args) {
97
59
  }
98
60
  _fsextra.default.writeFileSync(payloadConfigPath, configLines.join('\n'));
99
61
  } catch (err) {
100
- (0, _log.warning)('Unable to update payload.config.ts with plugins');
62
+ (0, _log.warning)(`Unable to update payload.config.ts with plugins: ${err instanceof Error ? err.message : ''}`);
101
63
  }
102
64
  }
103
65
 
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uZmlndXJlLXBheWxvYWQtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmc2UgZnJvbSAnZnMtZXh0cmEnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuXG5pbXBvcnQgdHlwZSB7IERiRGV0YWlscyB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyB3YXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvbG9nJ1xuaW1wb3J0IHsgYnVuZGxlclBhY2thZ2VzLCBkYlBhY2thZ2VzLCBlZGl0b3JQYWNrYWdlcyB9IGZyb20gJy4vcGFja2FnZXMnXG5cbi8qKiBVcGRhdGUgcGF5bG9hZCBjb25maWcgd2l0aCBuZWNlc3NhcnkgaW1wb3J0cyBhbmQgYWRhcHRlcnMgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25maWd1cmVQYXlsb2FkQ29uZmlnKGFyZ3M6IHtcbiAgZGJEZXRhaWxzOiBEYkRldGFpbHMgfCB1bmRlZmluZWRcbiAgcHJvamVjdERpcjogc3RyaW5nXG59KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghYXJncy5kYkRldGFpbHMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb25cbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5yZXNvbHZlKGFyZ3MucHJvamVjdERpciwgJ3BhY2thZ2UuanNvbicpXG4gIHRyeSB7XG4gICAgY29uc3QgcGFja2FnZU9iaiA9IGF3YWl0IGZzZS5yZWFkSnNvbihwYWNrYWdlSnNvblBhdGgpXG5cbiAgICBwYWNrYWdlT2JqLmRlcGVuZGVuY2llc1sncGF5bG9hZCddID0gJ14yLjAuMCdcblxuICAgIGNvbnN0IGRiUGFja2FnZSA9IGRiUGFja2FnZXNbYXJncy5kYkRldGFpbHMudHlwZV1cbiAgICBjb25zdCBidW5kbGVyUGFja2FnZSA9IGJ1bmRsZXJQYWNrYWdlc1snd2VicGFjayddXG4gICAgY29uc3QgZWRpdG9yUGFja2FnZSA9IGVkaXRvclBhY2thZ2VzWydzbGF0ZSddXG5cbiAgICAvLyBEZWxldGUgYWxsIG90aGVyIGRiIGFkYXB0ZXJzXG4gICAgT2JqZWN0LnZhbHVlcyhkYlBhY2thZ2VzKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICBpZiAocC5wYWNrYWdlTmFtZSAhPT0gZGJQYWNrYWdlLnBhY2thZ2VOYW1lKSB7XG4gICAgICAgIGRlbGV0ZSBwYWNrYWdlT2JqLmRlcGVuZGVuY2llc1twLnBhY2thZ2VOYW1lXVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBwYWNrYWdlT2JqLmRlcGVuZGVuY2llc1tkYlBhY2thZ2UucGFja2FnZU5hbWVdID0gZGJQYWNrYWdlLnZlcnNpb25cbiAgICBwYWNrYWdlT2JqLmRlcGVuZGVuY2llc1tidW5kbGVyUGFja2FnZS5wYWNrYWdlTmFtZV0gPSBidW5kbGVyUGFja2FnZS52ZXJzaW9uXG4gICAgcGFja2FnZU9iai5kZXBlbmRlbmNpZXNbZWRpdG9yUGFja2FnZS5wYWNrYWdlTmFtZV0gPSBlZGl0b3JQYWNrYWdlLnZlcnNpb25cblxuICAgIGF3YWl0IGZzZS53cml0ZUpzb24ocGFja2FnZUpzb25QYXRoLCBwYWNrYWdlT2JqLCB7IHNwYWNlczogMiB9KVxuICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICB3YXJuaW5nKCdVbmFibGUgdG8gdXBkYXRlIG5hbWUgaW4gcGFja2FnZS5qc29uJylcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcG9zc2libGVQYXRocyA9IFtcbiAgICAgIHBhdGgucmVzb2x2ZShhcmdzLnByb2plY3REaXIsICdzcmMvcGF5bG9hZC5jb25maWcudHMnKSxcbiAgICAgIHBhdGgucmVzb2x2ZShhcmdzLnByb2plY3REaXIsICdzcmMvcGF5bG9hZC9wYXlsb2FkLmNvbmZpZy50cycpLFxuICAgIF1cblxuICAgIGxldCBwYXlsb2FkQ29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgICBwb3NzaWJsZVBhdGhzLmZvckVhY2goKHApID0+IHtcbiAgICAgIGlmIChmc2UucGF0aEV4aXN0c1N5bmMocCkgJiYgIXBheWxvYWRDb25maWdQYXRoKSB7XG4gICAgICAgIHBheWxvYWRDb25maWdQYXRoID0gcFxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoIXBheWxvYWRDb25maWdQYXRoKSB7XG4gICAgICB3YXJuaW5nKCdVbmFibGUgdG8gdXBkYXRlIHBheWxvYWQuY29uZmlnLnRzIHdpdGggcGx1Z2lucycpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb25maWdDb250ZW50ID0gZnNlLnJlYWRGaWxlU3luYyhwYXlsb2FkQ29uZmlnUGF0aCwgJ3V0Zi04JylcbiAgICBjb25zdCBjb25maWdMaW5lcyA9IGNvbmZpZ0NvbnRlbnQuc3BsaXQoJ1xcbicpXG5cbiAgICBjb25zdCBkYlJlcGxhY2VtZW50ID0gZGJQYWNrYWdlc1thcmdzLmRiRGV0YWlscy50eXBlXVxuICAgIGNvbnN0IGJ1bmRsZXJSZXBsYWNlbWVudCA9IGJ1bmRsZXJQYWNrYWdlc1snd2VicGFjayddXG4gICAgY29uc3QgZWRpdG9yUmVwbGFjZW1lbnQgPSBlZGl0b3JQYWNrYWdlc1snc2xhdGUnXVxuXG4gICAgbGV0IGRiQ29uZmlnU3RhcnRMaW5lSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICAgIGxldCBkYkNvbmZpZ0VuZExpbmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICBjb25maWdMaW5lcy5mb3JFYWNoKChsLCBpKSA9PiB7XG4gICAgICBpZiAobC5pbmNsdWRlcygnLy8gZGF0YWJhc2UtYWRhcHRlci1pbXBvcnQnKSkge1xuICAgICAgICBjb25maWdMaW5lc1tpXSA9IGRiUmVwbGFjZW1lbnQuaW1wb3J0UmVwbGFjZW1lbnRcbiAgICAgIH1cbiAgICAgIGlmIChsLmluY2x1ZGVzKCcvLyBidW5kbGVyLWltcG9ydCcpKSB7XG4gICAgICAgIGNvbmZpZ0xpbmVzW2ldID0gYnVuZGxlclJlcGxhY2VtZW50LmltcG9ydFJlcGxhY2VtZW50XG4gICAgICB9XG5cbiAgICAgIGlmIChsLmluY2x1ZGVzKCcvLyBidW5kbGVyLWNvbmZpZycpKSB7XG4gICAgICAgIGNvbmZpZ0xpbmVzW2ldID0gYnVuZGxlclJlcGxhY2VtZW50LmNvbmZpZ1JlcGxhY2VtZW50XG4gICAgICB9XG5cbiAgICAgIGlmIChsLmluY2x1ZGVzKCcvLyBlZGl0b3ItaW1wb3J0JykpIHtcbiAgICAgICAgY29uZmlnTGluZXNbaV0gPSBlZGl0b3JSZXBsYWNlbWVudC5pbXBvcnRSZXBsYWNlbWVudFxuICAgICAgfVxuXG4gICAgICBpZiAobC5pbmNsdWRlcygnLy8gZWRpdG9yLWNvbmZpZycpKSB7XG4gICAgICAgIGNvbmZpZ0xpbmVzW2ldID0gZWRpdG9yUmVwbGFjZW1lbnQuY29uZmlnUmVwbGFjZW1lbnRcbiAgICAgIH1cblxuICAgICAgaWYgKGwuaW5jbHVkZXMoJy8vIGRhdGFiYXNlLWFkYXB0ZXItY29uZmlnLXN0YXJ0JykpIHtcbiAgICAgICAgZGJDb25maWdTdGFydExpbmVJbmRleCA9IGlcbiAgICAgIH1cbiAgICAgIGlmIChsLmluY2x1ZGVzKCcvLyBkYXRhYmFzZS1hZGFwdGVyLWNvbmZpZy1lbmQnKSkge1xuICAgICAgICBkYkNvbmZpZ0VuZExpbmVJbmRleCA9IGlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKCFkYkNvbmZpZ1N0YXJ0TGluZUluZGV4IHx8ICFkYkNvbmZpZ0VuZExpbmVJbmRleCkge1xuICAgICAgd2FybmluZygnVW5hYmxlIHRvIHVwZGF0ZSBwYXlsb2FkLmNvbmZpZy50cyB3aXRoIGRhdGFiYXNlIGFkYXB0ZXIgaW1wb3J0JylcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVwbGFjZXMgbGluZXMgYmV0d2VlbiBgLy8gZGF0YWJhc2UtYWRhcHRlci1jb25maWctc3RhcnRgIGFuZCBgLy8gZGF0YWJhc2UtYWRhcHRlci1jb25maWctZW5kYFxuICAgICAgY29uZmlnTGluZXMuc3BsaWNlKFxuICAgICAgICBkYkNvbmZpZ1N0YXJ0TGluZUluZGV4LFxuICAgICAgICBkYkNvbmZpZ0VuZExpbmVJbmRleCAtIGRiQ29uZmlnU3RhcnRMaW5lSW5kZXggKyAxLFxuICAgICAgICAuLi5kYlJlcGxhY2VtZW50LmNvbmZpZ1JlcGxhY2VtZW50LFxuICAgICAgKVxuICAgIH1cblxuICAgIGZzZS53cml0ZUZpbGVTeW5jKHBheWxvYWRDb25maWdQYXRoLCBjb25maWdMaW5lcy5qb2luKCdcXG4nKSlcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgd2FybmluZygnVW5hYmxlIHRvIHVwZGF0ZSBwYXlsb2FkLmNvbmZpZy50cyB3aXRoIHBsdWdpbnMnKVxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uZmlndXJlUGF5bG9hZENvbmZpZyIsImFyZ3MiLCJkYkRldGFpbHMiLCJwYWNrYWdlSnNvblBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsInByb2plY3REaXIiLCJwYWNrYWdlT2JqIiwiZnNlIiwicmVhZEpzb24iLCJkZXBlbmRlbmNpZXMiLCJkYlBhY2thZ2UiLCJkYlBhY2thZ2VzIiwidHlwZSIsImJ1bmRsZXJQYWNrYWdlIiwiYnVuZGxlclBhY2thZ2VzIiwiZWRpdG9yUGFja2FnZSIsImVkaXRvclBhY2thZ2VzIiwiT2JqZWN0IiwidmFsdWVzIiwiZm9yRWFjaCIsInAiLCJwYWNrYWdlTmFtZSIsInZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJlcnIiLCJ3YXJuaW5nIiwicG9zc2libGVQYXRocyIsInBheWxvYWRDb25maWdQYXRoIiwicGF0aEV4aXN0c1N5bmMiLCJjb25maWdDb250ZW50IiwicmVhZEZpbGVTeW5jIiwiY29uZmlnTGluZXMiLCJzcGxpdCIsImRiUmVwbGFjZW1lbnQiLCJidW5kbGVyUmVwbGFjZW1lbnQiLCJlZGl0b3JSZXBsYWNlbWVudCIsImRiQ29uZmlnU3RhcnRMaW5lSW5kZXgiLCJkYkNvbmZpZ0VuZExpbmVJbmRleCIsImwiLCJpIiwiaW5jbHVkZXMiLCJpbXBvcnRSZXBsYWNlbWVudCIsImNv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
66
+ //# sourceMappingURL=configure-payload-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/configure-payload-config.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport globby from 'globby'\n\nimport type { DbDetails } from '../types.js'\n\nimport { warning } from '../utils/log.js'\nimport { dbReplacements } from './packages.js'\n\n/** Update payload config with necessary imports and adapters */\nexport async function configurePayloadConfig(args: {\n dbDetails: DbDetails | undefined\n projectDirOrConfigPath: { payloadConfigPath: string } | { projectDir: string }\n}): Promise<void> {\n if (!args.dbDetails) {\n return\n }\n\n try {\n let payloadConfigPath: string | undefined\n if (!('payloadConfigPath' in args.projectDirOrConfigPath)) {\n payloadConfigPath = (\n await globby('**/payload.config.ts', {\n absolute: true,\n cwd: args.projectDirOrConfigPath.projectDir,\n })\n )?.[0]\n } else {\n payloadConfigPath = args.projectDirOrConfigPath.payloadConfigPath\n }\n\n if (!payloadConfigPath) {\n warning('Unable to update payload.config.ts with plugins. Could not find payload.config.ts.')\n return\n }\n\n const configContent = fse.readFileSync(payloadConfigPath, 'utf-8')\n const configLines = configContent.split('\\n')\n\n const dbReplacement = dbReplacements[args.dbDetails.type]\n\n let dbConfigStartLineIndex: number | undefined\n let dbConfigEndLineIndex: number | undefined\n\n configLines.forEach((l, i) => {\n if (l.includes('// database-adapter-import')) {\n configLines[i] = dbReplacement.importReplacement\n }\n\n if (l.includes('// database-adapter-config-start')) {\n dbConfigStartLineIndex = i\n }\n if (l.includes('// database-adapter-config-end')) {\n dbConfigEndLineIndex = i\n }\n })\n\n if (!dbConfigStartLineIndex || !dbConfigEndLineIndex) {\n warning('Unable to update payload.config.ts with database adapter import')\n } else {\n // Replaces lines between `// database-adapter-config-start` and `// database-adapter-config-end`\n configLines.splice(\n dbConfigStartLineIndex,\n dbConfigEndLineIndex - dbConfigStartLineIndex + 1,\n ...dbReplacement.configReplacement,\n )\n }\n\n fse.writeFileSync(payloadConfigPath, configLines.join('\\n'))\n } catch (err: unknown) {\n warning(\n `Unable to update payload.config.ts with plugins: ${err instanceof Error ? err.message : ''}`,\n )\n }\n}\n"],"names":["configurePayloadConfig","args","dbDetails","payloadConfigPath","projectDirOrConfigPath","globby","absolute","cwd","projectDir","warning","configContent","fse","readFileSync","configLines","split","dbReplacement","dbReplacements","type","dbConfigStartLineIndex","dbConfigEndLineIndex","forEach","l","i","includes","importReplacement","splice","configReplacement","writeFileSync","join","err","Error","message"],"mappings":";;;;+BASsBA;;;eAAAA;;;gEATN;+DACG;qBAIK;0BACO;;;;;;AAGxB,eAAeA,uBAAuBC,IAG5C;IACC,IAAI,CAACA,KAAKC,SAAS,EAAE;QACnB;IACF;IAEA,IAAI;QACF,IAAIC;QACJ,IAAI,CAAE,CAAA,uBAAuBF,KAAKG,sBAAsB,AAAD,GAAI;YACzDD,oBACE,CAAA,MAAME,IAAAA,eAAM,EAAC,wBAAwB;gBACnCC,UAAU;gBACVC,KAAKN,KAAKG,sBAAsB,CAACI,UAAU;YAC7C,EAAC,GACA,CAAC,EAAE;QACR,OAAO;YACLL,oBAAoBF,KAAKG,sBAAsB,CAACD,iBAAiB;QACnE;QAEA,IAAI,CAACA,mBAAmB;YACtBM,IAAAA,YAAO,EAAC;YACR;QACF;QAEA,MAAMC,gBAAgBC,gBAAG,CAACC,YAAY,CAACT,mBAAmB;QAC1D,MAAMU,cAAcH,cAAcI,KAAK,CAAC;QAExC,MAAMC,gBAAgBC,wBAAc,CAACf,KAAKC,SAAS,CAACe,IAAI,CAAC;QAEzD,IAAIC;QACJ,IAAIC;QAEJN,YAAYO,OAAO,CAAC,CAACC,GAAGC;YACtB,IAAID,EAAEE,QAAQ,CAAC,+BAA+B;gBAC5CV,WAAW,CAACS,EAAE,GAAGP,cAAcS,iBAAiB;YAClD;YAEA,IAAIH,EAAEE,QAAQ,CAAC,qCAAqC;gBAClDL,yBAAyBI;YAC3B;YACA,IAAID,EAAEE,QAAQ,CAAC,mCAAmC;gBAChDJ,uBAAuBG;YACzB;QACF;QAEA,IAAI,CAACJ,0BAA0B,CAACC,sBAAsB;YACpDV,IAAAA,YAAO,EAAC;QACV,OAAO;YACL,iGAAiG;YACjGI,YAAYY,MAAM,CAChBP,wBACAC,uBAAuBD,yBAAyB,MAC7CH,cAAcW,iBAAiB;QAEtC;QAEAf,gBAAG,CAACgB,aAAa,CAACxB,mBAAmBU,YAAYe,IAAI,CAAC;IACxD,EAAE,OAAOC,KAAc;QACrBpB,IAAAA,YAAO,EACL,CAAC,iDAAiD,EAAEoB,eAAeC,QAAQD,IAAIE,OAAO,GAAG,GAAG,CAAC;IAEjG;AACF"}
@@ -0,0 +1,14 @@
1
+ import type { CliArgs, DbDetails, PackageManager, ProjectTemplate } from '../types.js';
2
+ export declare function createProject(args: {
3
+ cliArgs: CliArgs;
4
+ dbDetails?: DbDetails;
5
+ packageManager: PackageManager;
6
+ projectDir: string;
7
+ projectName: string;
8
+ template: ProjectTemplate;
9
+ }): Promise<void>;
10
+ export declare function updatePackageJSON(args: {
11
+ projectDir: string;
12
+ projectName: string;
13
+ }): Promise<void>;
14
+ //# sourceMappingURL=create-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../src/lib/create-project.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AA2CtF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,eAAe,CAAA;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDhB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
@@ -16,19 +16,63 @@ _export(exports, {
16
16
  return updatePackageJSON;
17
17
  }
18
18
  });
19
+ const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
19
20
  const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
20
21
  const _degit = /*#__PURE__*/ _interop_require_default(require("degit"));
21
22
  const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
22
23
  const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
23
- const _ora = /*#__PURE__*/ _interop_require_default(require("ora"));
24
+ const _nodeurl = require("node:url");
24
25
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
25
- const _log = require("../utils/log");
26
- const _configurepayloadconfig = require("./configure-payload-config");
26
+ const _log = require("../utils/log.js");
27
+ const _configurepayloadconfig = require("./configure-payload-config.js");
27
28
  function _interop_require_default(obj) {
28
29
  return obj && obj.__esModule ? obj : {
29
30
  default: obj
30
31
  };
31
32
  }
33
+ function _getRequireWildcardCache(nodeInterop) {
34
+ if (typeof WeakMap !== "function") return null;
35
+ var cacheBabelInterop = new WeakMap();
36
+ var cacheNodeInterop = new WeakMap();
37
+ return (_getRequireWildcardCache = function(nodeInterop) {
38
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
39
+ })(nodeInterop);
40
+ }
41
+ function _interop_require_wildcard(obj, nodeInterop) {
42
+ if (!nodeInterop && obj && obj.__esModule) {
43
+ return obj;
44
+ }
45
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
46
+ return {
47
+ default: obj
48
+ };
49
+ }
50
+ var cache = _getRequireWildcardCache(nodeInterop);
51
+ if (cache && cache.has(obj)) {
52
+ return cache.get(obj);
53
+ }
54
+ var newObj = {
55
+ __proto__: null
56
+ };
57
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
58
+ for(var key in obj){
59
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
60
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
61
+ if (desc && (desc.get || desc.set)) {
62
+ Object.defineProperty(newObj, key, desc);
63
+ } else {
64
+ newObj[key] = obj[key];
65
+ }
66
+ }
67
+ }
68
+ newObj.default = obj;
69
+ if (cache) {
70
+ cache.set(obj, newObj);
71
+ }
72
+ return newObj;
73
+ }
74
+ const filename = (0, _nodeurl.fileURLToPath)(require("url").pathToFileURL(__filename).toString());
75
+ const dirname = _path.default.dirname(filename);
32
76
  async function createOrFindProjectDir(projectDir) {
33
77
  const pathExists = await _fsextra.default.pathExists(projectDir);
34
78
  if (!pathExists) {
@@ -52,46 +96,62 @@ async function installDeps(args) {
52
96
  });
53
97
  return true;
54
98
  } catch (err) {
55
- console.log({
56
- err
57
- });
99
+ (0, _log.error)(`Error installing dependencies${err instanceof Error ? `: ${err.message}` : ''}.`);
58
100
  return false;
59
101
  }
60
102
  }
61
103
  async function createProject(args) {
62
104
  const { cliArgs, dbDetails, packageManager, projectDir, projectName, template } = args;
105
+ if (cliArgs['--dry-run']) {
106
+ (0, _log.debug)(`Dry run: Creating project in ${_chalk.default.green(projectDir)}`);
107
+ return;
108
+ }
63
109
  await createOrFindProjectDir(projectDir);
64
- console.log(`\n Creating project in ${_chalk.default.green(_path.default.resolve(projectDir))}\n`);
65
- if ('url' in template) {
66
- const emitter = (0, _degit.default)(template.url);
110
+ if (cliArgs['--local-template']) {
111
+ // Copy template from local path. For development purposes.
112
+ const localTemplate = _path.default.resolve(dirname, '../../../../templates/', cliArgs['--local-template']);
113
+ await _fsextra.default.copy(localTemplate, projectDir);
114
+ } else if ('url' in template) {
115
+ let templateUrl = template.url;
116
+ if (cliArgs['--template-branch']) {
117
+ templateUrl = `${template.url}#${cliArgs['--template-branch']}`;
118
+ (0, _log.debug)(`Using template url: ${templateUrl}`);
119
+ }
120
+ const emitter = (0, _degit.default)(templateUrl);
67
121
  await emitter.clone(projectDir);
68
122
  }
69
- const spinner = (0, _ora.default)('Checking latest Payload version...').start();
123
+ const spinner = _prompts.spinner();
124
+ spinner.start('Checking latest Payload version...');
70
125
  await updatePackageJSON({
71
126
  projectDir,
72
127
  projectName
73
128
  });
129
+ spinner.message('Configuring Payload...');
74
130
  await (0, _configurepayloadconfig.configurePayloadConfig)({
75
131
  dbDetails,
76
- projectDir
132
+ projectDirOrConfigPath: {
133
+ projectDir
134
+ }
77
135
  });
78
136
  // Remove yarn.lock file. This is only desired in Payload Cloud.
79
137
  const lockPath = _path.default.resolve(projectDir, 'yarn.lock');
80
138
  if (_fsextra.default.existsSync(lockPath)) {
81
139
  await _fsextra.default.remove(lockPath);
82
140
  }
83
- spinner.text = 'Installing dependencies...';
84
- const result = await installDeps({
85
- cliArgs,
86
- packageManager,
87
- projectDir
88
- });
89
- spinner.stop();
90
- spinner.clear();
91
- if (result) {
92
- (0, _log.success)('Dependencies installed');
141
+ if (!cliArgs['--no-deps']) {
142
+ spinner.message('Installing dependencies...');
143
+ const result = await installDeps({
144
+ cliArgs,
145
+ packageManager,
146
+ projectDir
147
+ });
148
+ if (result) {
149
+ spinner.stop('Successfully installed Payload and dependencies');
150
+ } else {
151
+ spinner.stop('Error installing dependencies', 1);
152
+ }
93
153
  } else {
94
- (0, _log.error)('Error installing dependencies');
154
+ spinner.stop('Dependency installation skipped');
95
155
  }
96
156
  }
97
157
  async function updatePackageJSON(args) {
@@ -104,8 +164,8 @@ async function updatePackageJSON(args) {
104
164
  spaces: 2
105
165
  });
106
166
  } catch (err) {
107
- (0, _log.warning)('Unable to update name in package.json');
167
+ (0, _log.warning)(`Unable to update name in package.json. ${err instanceof Error ? err.message : ''}`);
108
168
  }
109
169
  }
110
170
 
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3JlYXRlLXByb2plY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IGRlZ2l0IGZyb20gJ2RlZ2l0J1xuaW1wb3J0IGV4ZWNhIGZyb20gJ2V4ZWNhJ1xuaW1wb3J0IGZzZSBmcm9tICdmcy1leHRyYSdcbmltcG9ydCBvcmEgZnJvbSAnb3JhJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuaW1wb3J0IHR5cGUgeyBDbGlBcmdzLCBEYkRldGFpbHMsIFBhY2thZ2VNYW5hZ2VyLCBQcm9qZWN0VGVtcGxhdGUgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZXJyb3IsIHN1Y2Nlc3MsIHdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9sb2cnXG5pbXBvcnQgeyBjb25maWd1cmVQYXlsb2FkQ29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmUtcGF5bG9hZC1jb25maWcnXG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU9yRmluZFByb2plY3REaXIocHJvamVjdERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhdGhFeGlzdHMgPSBhd2FpdCBmc2UucGF0aEV4aXN0cyhwcm9qZWN0RGlyKVxuICBpZiAoIXBhdGhFeGlzdHMpIHtcbiAgICBhd2FpdCBmc2UubWtkaXIocHJvamVjdERpcilcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsRGVwcyhhcmdzOiB7XG4gIGNsaUFyZ3M6IENsaUFyZ3NcbiAgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyXG4gIHByb2plY3REaXI6IHN0cmluZ1xufSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IGNsaUFyZ3MsIHBhY2thZ2VNYW5hZ2VyLCBwcm9qZWN0RGlyIH0gPSBhcmdzXG4gIGlmIChjbGlBcmdzWyctLW5vLWRlcHMnXSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgbGV0IGluc3RhbGxDbWQgPSAnbnBtIGluc3RhbGwgLS1sZWdhY3ktcGVlci1kZXBzJ1xuXG4gIGlmIChwYWNrYWdlTWFuYWdlciA9PT0gJ3lhcm4nKSB7XG4gICAgaW5zdGFsbENtZCA9ICd5YXJuJ1xuICB9IGVsc2UgaWYgKHBhY2thZ2VNYW5hZ2VyID09PSAncG5wbScpIHtcbiAgICBpbnN0YWxsQ21kID0gJ3BucG0gaW5zdGFsbCdcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EuY29tbWFuZChpbnN0YWxsQ21kLCB7XG4gICAgICBjd2Q6IHBhdGgucmVzb2x2ZShwcm9qZWN0RGlyKSxcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgIGNvbnNvbGUubG9nKHsgZXJyIH0pXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVByb2plY3QoYXJnczoge1xuICBjbGlBcmdzOiBDbGlBcmdzXG4gIGRiRGV0YWlscz86IERiRGV0YWlsc1xuICBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXJcbiAgcHJvamVjdERpcjogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgdGVtcGxhdGU6IFByb2plY3RUZW1wbGF0ZVxufSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGNsaUFyZ3MsIGRiRGV0YWlscywgcGFja2FnZU1hbmFnZXIsIHByb2plY3REaXIsIHByb2plY3ROYW1lLCB0ZW1wbGF0ZSB9ID0gYXJnc1xuXG4gIGF3YWl0IGNyZWF0ZU9yRmluZFByb2plY3REaXIocHJvamVjdERpcilcblxuICBjb25zb2xlLmxvZyhgXFxuICBDcmVhdGluZyBwcm9qZWN0IGluICR7Y2hhbGsuZ3JlZW4ocGF0aC5yZXNvbHZlKHByb2plY3REaXIpKX1cXG5gKVxuXG4gIGlmICgndXJsJyBpbiB0ZW1wbGF0ZSkge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBkZWdpdCh0ZW1wbGF0ZS51cmwpXG4gICAgYXdhaXQgZW1pdHRlci5jbG9uZShwcm9qZWN0RGlyKVxuICB9XG5cbiAgY29uc3Qgc3Bpbm5lciA9IG9yYSgnQ2hlY2tpbmcgbGF0ZXN0IFBheWxvYWQgdmVyc2lvbi4uLicpLnN0YXJ0KClcblxuICBhd2FpdCB1cGRhdGVQYWNrYWdlSlNPTih7IHByb2plY3REaXIsIHByb2plY3ROYW1lIH0pXG4gIGF3YWl0IGNvbmZpZ3VyZVBheWxvYWRDb25maWcoeyBkYkRldGFpbHMsIHByb2plY3REaXIgfSlcblxuICAvLyBSZW1vdmUgeWFybi5sb2NrIGZpbGUuIFRoaXMgaXMgb25seSBkZXNpcmVkIGluIFBheWxvYWQgQ2xvdWQuXG4gIGNvbnN0IGxvY2tQYXRoID0gcGF0aC5yZXNvbHZlKHByb2plY3REaXIsICd5YXJuLmxvY2snKVxuICBpZiAoZnNlLmV4aXN0c1N5bmMobG9ja1BhdGgpKSB7XG4gICAgYXdhaXQgZnNlLnJlbW92ZShsb2NrUGF0aClcbiAgfVxuXG4gIHNwaW5uZXIudGV4dCA9ICdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLidcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5zdGFsbERlcHMoeyBjbGlBcmdzLCBwYWNrYWdlTWFuYWdlciwgcHJvamVjdERpciB9KVxuICBzcGlubmVyLnN0b3AoKVxuICBzcGlubmVyLmNsZWFyKClcbiAgaWYgKHJlc3VsdCkge1xuICAgIHN1Y2Nlc3MoJ0RlcGVuZGVuY2llcyBpbnN0YWxsZWQnKVxuICB9IGVsc2Uge1xuICAgIGVycm9yKCdFcnJvciBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBhY2thZ2VKU09OKGFyZ3M6IHtcbiAgcHJvamVjdERpcjogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwcm9qZWN0RGlyLCBwcm9qZWN0TmFtZSB9ID0gYXJnc1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdERpciwgJ3BhY2thZ2UuanNvbicpXG4gIHRyeSB7XG4gICAgY29uc3QgcGFja2FnZU9iaiA9IGF3YWl0IGZzZS5yZWFkSnNvbihwYWNrYWdlSnNvblBhdGgpXG4gICAgcGFja2FnZU9iai5uYW1lID0gcHJvamVjdE5hbWVcbiAgICBhd2FpdCBmc2Uud3JpdGVKc29uKHBhY2thZ2VKc29uUGF0aCwgcGFja2FnZU9iaiwgeyBzcGFjZXM6IDIgfSlcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgd2FybmluZygnVW5hYmxlIHRvIHVwZGF0ZSBuYW1lIGluIHBhY2thZ2UuanNvbicpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVQcm9qZWN0IiwidXBkYXRlUGFja2FnZUpTT04iLCJjcmVhdGVPckZpbmRQcm9qZWN0RGlyIiwicHJvamVjdERpciIsInBhdGhFeGlzdHMiLCJmc2UiLCJta2RpciIsImluc3RhbGxEZXBzIiwiYXJncyIsImNsaUFyZ3MiLCJwYWNrYWdlTWFuYWdlciIsImluc3RhbGxDbWQiLCJleGVjYSIsImNvbW1hbmQiLCJjd2QiLCJwYXRoIiwicmVzb2x2ZSIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJkYkRldGFpbHMiLCJwcm9qZWN0TmFtZSIsInRlbXBsYXRlIiwiY2hhbGsiLCJncmVlbiIsImVtaXR0ZXIiLCJkZWdpdCIsInVybCIsImNsb25lIiwic3Bpbm5lciIsIm9yYSIsInN0YXJ0IiwiY29uZmlndXJlUGF5bG9hZENvbmZpZyIsImxvY2tQYXRoIiwiZXhpc3RzU3luYyIsInJlbW92ZSIsInRleHQiLCJyZXN1bHQiLCJzdG9wIiwiY2xlYXIiLCJzdWNjZXNzIiwiZXJyb3IiLCJwYWNrYWdlSnNvblBhdGgiLCJwYWNrYWdlT2JqIiwicmVhZEpzb24iLCJuYW1lIiwid3JpdGVKc29uIiwic3BhY2VzIiwid2FybmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUErQ3NCQSxhQUFhO2VBQWJBOztJQXlDQUMsaUJBQWlCO2VBQWpC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
171
+ //# sourceMappingURL=create-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/create-project.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport degit from 'degit'\nimport execa from 'execa'\nimport fse from 'fs-extra'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport type { CliArgs, DbDetails, PackageManager, ProjectTemplate } from '../types.js'\n\nimport { debug, error, warning } from '../utils/log.js'\nimport { configurePayloadConfig } from './configure-payload-config.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nasync function createOrFindProjectDir(projectDir: string): Promise<void> {\n const pathExists = await fse.pathExists(projectDir)\n if (!pathExists) {\n await fse.mkdir(projectDir)\n }\n}\n\nasync function installDeps(args: {\n cliArgs: CliArgs\n packageManager: PackageManager\n projectDir: string\n}): Promise<boolean> {\n const { cliArgs, packageManager, projectDir } = args\n if (cliArgs['--no-deps']) {\n return true\n }\n let installCmd = 'npm install --legacy-peer-deps'\n\n if (packageManager === 'yarn') {\n installCmd = 'yarn'\n } else if (packageManager === 'pnpm') {\n installCmd = 'pnpm install'\n }\n\n try {\n await execa.command(installCmd, {\n cwd: path.resolve(projectDir),\n })\n return true\n } catch (err: unknown) {\n error(`Error installing dependencies${err instanceof Error ? `: ${err.message}` : ''}.`)\n return false\n }\n}\n\nexport async function createProject(args: {\n cliArgs: CliArgs\n dbDetails?: DbDetails\n packageManager: PackageManager\n projectDir: string\n projectName: string\n template: ProjectTemplate\n}): Promise<void> {\n const { cliArgs, dbDetails, packageManager, projectDir, projectName, template } = args\n\n if (cliArgs['--dry-run']) {\n debug(`Dry run: Creating project in ${chalk.green(projectDir)}`)\n return\n }\n\n await createOrFindProjectDir(projectDir)\n\n if (cliArgs['--local-template']) {\n // Copy template from local path. For development purposes.\n const localTemplate = path.resolve(\n dirname,\n '../../../../templates/',\n cliArgs['--local-template'],\n )\n await fse.copy(localTemplate, projectDir)\n } else if ('url' in template) {\n let templateUrl = template.url\n if (cliArgs['--template-branch']) {\n templateUrl = `${template.url}#${cliArgs['--template-branch']}`\n debug(`Using template url: ${templateUrl}`)\n }\n const emitter = degit(templateUrl)\n await emitter.clone(projectDir)\n }\n\n const spinner = p.spinner()\n spinner.start('Checking latest Payload version...')\n\n await updatePackageJSON({ projectDir, projectName })\n spinner.message('Configuring Payload...')\n await configurePayloadConfig({ dbDetails, projectDirOrConfigPath: { projectDir } })\n\n // Remove yarn.lock file. This is only desired in Payload Cloud.\n const lockPath = path.resolve(projectDir, 'yarn.lock')\n if (fse.existsSync(lockPath)) {\n await fse.remove(lockPath)\n }\n\n if (!cliArgs['--no-deps']) {\n spinner.message('Installing dependencies...')\n const result = await installDeps({ cliArgs, packageManager, projectDir })\n if (result) {\n spinner.stop('Successfully installed Payload and dependencies')\n } else {\n spinner.stop('Error installing dependencies', 1)\n }\n } else {\n spinner.stop('Dependency installation skipped')\n }\n}\n\nexport async function updatePackageJSON(args: {\n projectDir: string\n projectName: string\n}): Promise<void> {\n const { projectDir, projectName } = args\n const packageJsonPath = path.resolve(projectDir, 'package.json')\n try {\n const packageObj = await fse.readJson(packageJsonPath)\n packageObj.name = projectName\n await fse.writeJson(packageJsonPath, packageObj, { spaces: 2 })\n } catch (err: unknown) {\n warning(`Unable to update name in package.json. ${err instanceof Error ? err.message : ''}`)\n }\n}\n"],"names":["createProject","updatePackageJSON","filename","fileURLToPath","dirname","path","createOrFindProjectDir","projectDir","pathExists","fse","mkdir","installDeps","args","cliArgs","packageManager","installCmd","execa","command","cwd","resolve","err","error","Error","message","dbDetails","projectName","template","debug","chalk","green","localTemplate","copy","templateUrl","url","emitter","degit","clone","spinner","p","start","configurePayloadConfig","projectDirOrConfigPath","lockPath","existsSync","remove","result","stop","packageJsonPath","packageObj","readJson","name","writeJson","spaces","warning"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-project.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-project.spec.d.ts","sourceRoot":"","sources":["../../src/lib/create-project.spec.ts"],"names":[],"mappings":""}
@@ -4,15 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
6
6
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
7
- const _createproject = require("./create-project");
8
- const _packages = require("./packages");
9
- const _templates = require("./templates");
7
+ const _createproject = require("./create-project.js");
8
+ const _nodeurl = require("node:url");
9
+ const _packages = require("./packages.js");
10
+ const _templates = require("./templates.js");
11
+ const _globby = /*#__PURE__*/ _interop_require_default(require("globby"));
10
12
  function _interop_require_default(obj) {
11
13
  return obj && obj.__esModule ? obj : {
12
14
  default: obj
13
15
  };
14
16
  }
15
- const projectDir = _path.default.resolve(__dirname, './tmp');
17
+ const filename = (0, _nodeurl.fileURLToPath)(require("url").pathToFileURL(__filename).toString());
18
+ const dirname = _path.default.dirname(filename);
19
+ const projectDir = _path.default.resolve(dirname, './tmp');
16
20
  describe('createProject', ()=>{
17
21
  beforeAll(()=>{
18
22
  console.log = jest.fn();
@@ -38,29 +42,10 @@ describe('createProject', ()=>{
38
42
  'project-name'
39
43
  ],
40
44
  '--db': 'mongodb',
45
+ '--local-template': 'blank',
41
46
  '--no-deps': true
42
47
  };
43
48
  const packageManager = 'yarn';
44
- it('creates starter project', async ()=>{
45
- const projectName = 'starter-project';
46
- const template = {
47
- name: 'blank',
48
- type: 'starter',
49
- url: 'https://github.com/payloadcms/payload/templates/blank',
50
- description: 'Blank Template'
51
- };
52
- await (0, _createproject.createProject)({
53
- cliArgs: args,
54
- projectName,
55
- projectDir,
56
- template,
57
- packageManager
58
- });
59
- const packageJsonPath = _path.default.resolve(projectDir, 'package.json');
60
- const packageJson = _fsextra.default.readJsonSync(packageJsonPath);
61
- // Check package name and description
62
- expect(packageJson.name).toEqual(projectName);
63
- });
64
49
  it('creates plugin template', async ()=>{
65
50
  const projectName = 'plugin';
66
51
  const template = {
@@ -81,69 +66,47 @@ describe('createProject', ()=>{
81
66
  // Check package name and description
82
67
  expect(packageJson.name).toEqual(projectName);
83
68
  });
84
- describe('db adapters and bundlers', ()=>{
69
+ describe('creates project from template', ()=>{
85
70
  const templates = (0, _templates.getValidTemplates)();
86
71
  it.each([
87
72
  [
88
- 'blank',
89
- 'mongodb',
90
- 'webpack'
91
- ],
92
- [
93
- 'blank',
94
- 'postgres',
95
- 'webpack'
96
- ],
97
- [
98
- 'website',
99
- 'mongodb',
100
- 'webpack'
73
+ 'blank-3.0',
74
+ 'mongodb'
101
75
  ],
102
76
  [
103
- 'website',
104
- 'postgres',
105
- 'webpack'
106
- ],
107
- [
108
- 'ecommerce',
109
- 'mongodb',
110
- 'webpack'
111
- ],
112
- [
113
- 'ecommerce',
114
- 'postgres',
115
- 'webpack'
77
+ 'blank-3.0',
78
+ 'postgres'
116
79
  ]
117
- ])('update config and deps: %s, %s, %s', async (templateName, db, bundler)=>{
80
+ ])('update config and deps: %s, %s', async (templateName, db)=>{
118
81
  const projectName = 'starter-project';
119
82
  const template = templates.find((t)=>t.name === templateName);
83
+ const cliArgs = {
84
+ ...args,
85
+ '--db': db,
86
+ '--local-template': templateName
87
+ };
120
88
  await (0, _createproject.createProject)({
121
- cliArgs: args,
89
+ cliArgs,
122
90
  projectName,
123
91
  projectDir,
124
- template,
92
+ template: template,
125
93
  packageManager,
126
94
  dbDetails: {
127
95
  dbUri: `${db}://localhost:27017/create-project-test`,
128
96
  type: db
129
97
  }
130
98
  });
131
- const dbReplacement = _packages.dbPackages[db];
132
- const bundlerReplacement = _packages.bundlerPackages[bundler];
133
- const editorReplacement = _packages.editorPackages['slate'];
99
+ const dbReplacement = _packages.dbReplacements[db];
134
100
  const packageJsonPath = _path.default.resolve(projectDir, 'package.json');
135
101
  const packageJson = _fsextra.default.readJsonSync(packageJsonPath);
136
- // Check deps
137
- expect(packageJson.dependencies['payload']).toEqual('^2.0.0');
138
- expect(packageJson.dependencies[dbReplacement.packageName]).toEqual(dbReplacement.version);
139
102
  // Should only have one db adapter
140
103
  expect(Object.keys(packageJson.dependencies).filter((n)=>n.startsWith('@payloadcms/db-'))).toHaveLength(1);
141
- expect(packageJson.dependencies[bundlerReplacement.packageName]).toEqual(bundlerReplacement.version);
142
- expect(packageJson.dependencies[editorReplacement.packageName]).toEqual(editorReplacement.version);
143
- let payloadConfigPath = _path.default.resolve(projectDir, 'src/payload.config.ts');
144
- // Website and ecommerce templates have payload.config.ts in src/payload
145
- if (!_fsextra.default.existsSync(payloadConfigPath)) {
146
- payloadConfigPath = _path.default.resolve(projectDir, 'src/payload/payload.config.ts');
104
+ const payloadConfigPath = (await (0, _globby.default)('**/payload.config.ts', {
105
+ absolute: true,
106
+ cwd: projectDir
107
+ }))?.[0];
108
+ if (!payloadConfigPath) {
109
+ throw new Error(`Could not find payload.config.ts inside ${projectDir}`);
147
110
  }
148
111
  const content = _fsextra.default.readFileSync(payloadConfigPath, 'utf-8');
149
112
  // Check payload.config.ts
@@ -152,17 +115,9 @@ describe('createProject', ()=>{
152
115
  expect(content).not.toContain('// database-adapter-config-start');
153
116
  expect(content).not.toContain('// database-adapter-config-end');
154
117
  expect(content).toContain(dbReplacement.configReplacement.join('\n'));
155
- expect(content).not.toContain('// bundler-config-import');
156
- expect(content).toContain(bundlerReplacement.importReplacement);
157
- expect(content).not.toContain('// bundler-config');
158
- expect(content).toContain(bundlerReplacement.configReplacement);
159
118
  });
160
119
  });
161
120
  });
162
- describe('Templates', ()=>{
163
- it.todo('Verify that all templates are valid');
164
- // Loop through all templates.ts that should have replacement comments, and verify that they are present
165
- });
166
121
  });
167
122
 
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3JlYXRlLXByb2plY3Quc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnNlIGZyb20gJ2ZzLWV4dHJhJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCB0eXBlIHsgQnVuZGxlclR5cGUsIENsaUFyZ3MsIERiVHlwZSwgUHJvamVjdFRlbXBsYXRlIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBjcmVhdGVQcm9qZWN0IH0gZnJvbSAnLi9jcmVhdGUtcHJvamVjdCdcbmltcG9ydCB7IGJ1bmRsZXJQYWNrYWdlcywgZGJQYWNrYWdlcywgZWRpdG9yUGFja2FnZXMgfSBmcm9tICcuL3BhY2thZ2VzJ1xuaW1wb3J0IGV4cCBmcm9tICdjb25zdGFudHMnXG5pbXBvcnQgeyBnZXRWYWxpZFRlbXBsYXRlcyB9IGZyb20gJy4vdGVtcGxhdGVzJ1xuXG5jb25zdCBwcm9qZWN0RGlyID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vdG1wJylcbmRlc2NyaWJlKCdjcmVhdGVQcm9qZWN0JywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nID0gamVzdC5mbigpXG4gIH0pXG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgaWYgKGZzZS5leGlzdHNTeW5jKHByb2plY3REaXIpKSB7XG4gICAgICBmc2Uucm1kaXJTeW5jKHByb2plY3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgfVxuICB9KVxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGlmIChmc2UuZXhpc3RzU3luYyhwcm9qZWN0RGlyKSkge1xuICAgICAgZnNlLnJtU3luYyhwcm9qZWN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSlcblxuICBkZXNjcmliZSgnI2NyZWF0ZVByb2plY3QnLCAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICBfOiBbJ3Byb2plY3QtbmFtZSddLFxuICAgICAgJy0tZGInOiAnbW9uZ29kYicsXG4gICAgICAnLS1uby1kZXBzJzogdHJ1ZSxcbiAgICB9IGFzIENsaUFyZ3NcbiAgICBjb25zdCBwYWNrYWdlTWFuYWdlciA9ICd5YXJuJ1xuXG4gICAgaXQoJ2NyZWF0ZXMgc3RhcnRlciBwcm9qZWN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSAnc3RhcnRlci1wcm9qZWN0J1xuICAgICAgY29uc3QgdGVtcGxhdGU6IFByb2plY3RUZW1wbGF0ZSA9IHtcbiAgICAgICAgbmFtZTogJ2JsYW5rJyxcbiAgICAgICAgdHlwZTogJ3N0YXJ0ZXInLFxuICAgICAgICB1cmw6ICdodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3RlbXBsYXRlcy9ibGFuaycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQmxhbmsgVGVtcGxhdGUnLFxuICAgICAgfVxuICAgICAgYXdhaXQgY3JlYXRlUHJvamVjdCh7XG4gICAgICAgIGNsaUFyZ3M6IGFyZ3MsXG4gICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICBwcm9qZWN0RGlyLFxuICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgcGFja2FnZU1hbmFnZXIsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdERpciwgJ3BhY2thZ2UuanNvbicpXG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IGZzZS5yZWFkSnNvblN5bmMocGFja2FnZUpzb25QYXRoKVxuXG4gICAgICAvLyBDaGVjayBwYWNrYWdlIG5hbWUgYW5kIGRlc2NyaXB0aW9uXG4gICAgICBleHBlY3QocGFja2FnZUpzb24ubmFtZSkudG9FcXVhbChwcm9qZWN0TmFtZSlcbiAgICB9KVxuXG4gICAgaXQoJ2NyZWF0ZXMgcGx1Z2luIHRlbXBsYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSAncGx1Z2luJ1xuICAgICAgY29uc3QgdGVtcGxhdGU6IFByb2plY3RUZW1wbGF0ZSA9IHtcbiAgICAgICAgbmFtZTogJ3BsdWdpbicsXG4gICAgICAgIHR5cGU6ICdwbHVnaW4nLFxuICAgICAgICB1cmw6ICdodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkLXBsdWdpbi10ZW1wbGF0ZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgZm9yIGNyZWF0aW5nIGEgUGF5bG9hZCBwbHVnaW4nLFxuICAgICAgfVxuICAgICAgYXdhaXQgY3JlYXRlUHJvamVjdCh7XG4gICAgICAgIGNsaUFyZ3M6IGFyZ3MsXG4gICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICBwcm9qZWN0RGlyLFxuICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgcGFja2FnZU1hbmFnZXIsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdERpciwgJ3BhY2thZ2UuanNvbicpXG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IGZzZS5yZWFkSnNvblN5bmMocGFja2FnZUpzb25QYXRoKVxuXG4gICAgICAvLyBDaGVjayBwYWNrYWdlIG5hbWUgYW5kIGRlc2NyaXB0aW9uXG4gICAgICBleHBlY3QocGFja2FnZUpzb24ubmFtZSkudG9FcXVhbChwcm9qZWN0TmFtZSlcbiAgICB9KVxuXG4gICAgZGVzY3JpYmUoJ2RiIGFkYXB0ZXJzIGFuZCBidW5kbGVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IGdldFZhbGlkVGVtcGxhdGVzKClcblxuICAgICAgaXQuZWFjaChbXG4gICAgICAgIFsnYmxhbmsnLCAnbW9uZ29kYicsICd3ZWJwYWNrJ10sXG4gICAgICAgIFsnYmxhbmsnLCAncG9zdGdyZXMnLCAnd2VicGFjayddLFxuICAgICAgICBbJ3dlYnNpdGUnLCAnbW9uZ29kYicsICd3ZWJwYWNrJ10sXG4gICAgICAgIFsnd2Vic2l0ZScsICdwb3N0Z3JlcycsICd3ZWJwYWNrJ10sXG4gICAgICAgIFsnZWNvbW1lcmNlJywgJ21vbmdvZGInLCAnd2VicGFjayddLFxuICAgICAgICBbJ2Vjb21tZXJjZScsICdwb3N0Z3JlcycsICd3ZWJwYWNrJ10sXG4gICAgICBdKSgndXBkYXRlIGNvbmZpZyBhbmQgZGVwczogJXMsICVzLCAlcycsIGFzeW5jICh0ZW1wbGF0ZU5hbWUsIGRiLCBidW5kbGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gJ3N0YXJ0ZXItcHJvamVjdCdcblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRlbXBsYXRlTmFtZSlcblxuICAgICAgICBhd2FpdCBjcmVhdGVQcm9qZWN0KHtcbiAgICAgICAgICBjbGlBcmdzOiBhcmdzLFxuICAgICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICAgIHByb2plY3REaXIsXG4gICAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgICAgcGFja2FnZU1hbmFnZXIsXG4gICAgICAgICAgZGJEZXRhaWxzOiB7XG4gICAgICAgICAgICBkYlVyaTogYCR7ZGJ9Oi8vbG9jYWxob3N0OjI3MDE3L2NyZWF0ZS1wcm9qZWN0LXRlc3RgLFxuICAgICAgICAgICAgdHlwZTogZGIgYXMgRGJUeXBlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgZGJSZXBsYWNlbWVudCA9IGRiUGFja2FnZXNbZGIgYXMgRGJUeXBlXVxuICAgICAgICBjb25zdCBidW5kbGVyUmVwbGFjZW1lbnQgPSBidW5kbGVyUGFja2FnZXNbYnVuZGxlciBhcyBCdW5kbGVyVHlwZV1cbiAgICAgICAgY29uc3QgZWRpdG9yUmVwbGFjZW1lbnQgPSBlZGl0b3JQYWNrYWdlc1snc2xhdGUnXVxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9qZWN0RGlyLCAncGFja2FnZS5qc29uJylcbiAgICAgICAgY29uc3QgcGFja2FnZUpzb24gPSBmc2UucmVhZEpzb25TeW5jKHBhY2thZ2VKc29uUGF0aClcblxuICAgICAgICAvLyBDaGVjayBkZXBzXG4gICAgICAgIGV4cGVjdChwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXNbJ3BheWxvYWQnXSkudG9FcXVhbCgnXjIuMC4wJylcbiAgICAgICAgZXhwZWN0KHBhY2thZ2VKc29uLmRlcGVuZGVuY2llc1tkYlJlcGxhY2VtZW50LnBhY2thZ2VOYW1lXSkudG9FcXVhbChkYlJlcGxhY2VtZW50LnZlcnNpb24pXG5cbiAgICAgICAgLy8gU2hvdWxkIG9ubHkgaGF2ZSBvbmUgZGIgYWRhcHRlclxuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgT2JqZWN0LmtleXMocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzKS5maWx0ZXIoKG4pID0+IG4uc3RhcnRzV2l0aCgnQHBheWxvYWRjbXMvZGItJykpLFxuICAgICAgICApLnRvSGF2ZUxlbmd0aCgxKVxuXG4gICAgICAgIGV4cGVjdChwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXNbYnVuZGxlclJlcGxhY2VtZW50LnBhY2thZ2VOYW1lXSkudG9FcXVhbChcbiAgICAgICAgICBidW5kbGVyUmVwbGFjZW1lbnQudmVyc2lvbixcbiAgICAgICAgKVxuICAgICAgICBleHBlY3QocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzW2VkaXRvclJlcGxhY2VtZW50LnBhY2thZ2VOYW1lXSkudG9FcXVhbChcbiAgICAgICAgICBlZGl0b3JSZXBsYWNlbWVudC52ZXJzaW9uLFxuICAgICAgICApXG5cbiAgICAgICAgbGV0IHBheWxvYWRDb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHByb2plY3REaXIsICdzcmMvcGF5bG9hZC5jb25maWcudHMnKVxuXG4gICAgICAgIC8vIFdlYnNpdGUgYW5kIGVjb21tZXJjZSB0ZW1wbGF0ZXMgaGF2ZSBwYXlsb2FkLmNvbmZpZy50cyBpbiBzcmMvcGF5bG9hZFxuICAgICAgICBpZiAoIWZzZS5leGlzdHNTeW5jKHBheWxvYWRDb25maWdQYXRoKSkge1xuICAgICAgICAgIHBheWxvYWRDb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHByb2plY3REaXIsICdzcmMvcGF5bG9hZC9wYXlsb2FkLmNvbmZpZy50cycpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudCA9IGZzZS5yZWFkRmlsZVN5bmMocGF5bG9hZENvbmZpZ1BhdGgsICd1dGYtOCcpXG5cbiAgICAgICAgLy8gQ2hlY2sgcGF5bG9hZC5jb25maWcudHNcbiAgICAgICAgZXhwZWN0KGNvbnRlbnQpLm5vdC50b0NvbnRhaW4oJy8vIGRhdGFiYXNlLWFkYXB0ZXItaW1wb3J0JylcbiAgICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvQ29udGFpbihkYlJlcGxhY2VtZW50LmltcG9ydFJlcGxhY2VtZW50KVxuXG4gICAgICAgIGV4cGVjdChjb250ZW50KS5ub3QudG9Db250YWluKCcvLyBkYXRhYmFzZS1hZGFwdGVyLWNvbmZpZy1zdGFydCcpXG4gICAgICAgIGV4cGVjdChjb250ZW50KS5ub3QudG9Db250YWluKCcvLyBkYXRhYmFzZS1hZGFwdGVyLWNvbmZpZy1lbmQnKVxuICAgICAgICBleHBlY3QoY29udGVudCkudG9Db250YWluKGRiUmVwbGFjZW1lbnQuY29uZmlnUmVwbGFjZW1lbnQuam9pbignXFxuJykpXG5cbiAgICAgICAgZXhwZWN0KGNvbnRlbnQpLm5vdC50b0NvbnRhaW4oJy8vIGJ1bmRsZXItY29uZmlnLWltcG9ydCcpXG4gICAgICAgIGV4cGVjdChjb250ZW50KS50b0NvbnRhaW4oYnVuZGxlclJlcGxhY2VtZW50LmltcG9ydFJlcGxhY2VtZW50KVxuXG4gICAgICAgIGV4cGVjdChjb250ZW50KS5ub3QudG9Db250YWluKCcvLyBidW5kbGVyLWNvbmZpZycpXG4gICAgICAgIGV4cGVjdChjb250ZW50KS50b0NvbnRhaW4oYnVuZGxlclJlcGxhY2VtZW50LmNvbmZpZ1JlcGxhY2VtZW50KVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdUZW1wbGF0ZXMnLCAoKSA9PiB7XG4gICAgaXQudG9kbygnVmVyaWZ5IHRoYXQgYWxsIHRlbXBsYXRlcyBhcmUgdmFsaWQnKVxuICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGVtcGxhdGVzLnRzIHRoYXQgc2hvdWxkIGhhdmUgcmVwbGFjZW1lbnQgY29tbWVudHMsIGFuZCB2ZXJpZnkgdGhhdCB0aGV5IGFyZSBwcmVzZW50XG4gIH0pXG59KVxuIl0sIm5hbWVzIjpbInByb2plY3REaXIiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiY29uc29sZSIsImxvZyIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJmc2UiLCJleGlzdHNTeW5jIiwicm1kaXJTeW5jIiwicmVjdXJzaXZlIiwiYWZ0ZXJFYWNoIiwicm1TeW5jIiwiYXJncyIsIl8iLCJwYWNrYWdlTWFuYWdlciIsIml0IiwicHJvamVjdE5hbWUiLCJ0ZW1wbGF0ZSIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiZGVzY3JpcHRpb24iLCJjcmVhdGVQcm9qZWN0IiwiY2xpQXJncyIsInBhY2thZ2VKc29uUGF0aCIsInBhY2thZ2VKc29uIiwicmVhZEpzb25TeW5jIiwiZXhwZWN0IiwidG9FcXVhbCIsInRlbXBsYXRlcyIsImdldFZhbGlkVGVtcGxhdGVzIiwiZWFjaCIsInRlbXBsYXRlTmFtZSIsImRiIiwiYnVuZGxlciIsImZpbmQiLCJ0IiwiZGJEZXRhaWxzIiwiZGJVcmkiLCJkYlJlcGxhY2VtZW50IiwiZGJQYWNrYWdlcyIsImJ1bmRsZXJSZXBsYWNlbWVudCIsImJ1bmRsZXJQYWNrYWdlcyIsImVkaXRvclJlcGxhY2VtZW50IiwiZWRpdG9yUGFja2FnZXMiLCJkZXBlbmRlbmNpZXMiLCJwYWNrYWdlTmFtZSIsInZlcnNpb24iLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwibiIsInN0YXJ0c1dpdGgiLCJ0b0hhdmVMZW5ndGgiLCJwYXlsb2FkQ29uZmlnUGF0aCIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJub3QiLCJ0b0NvbnRhaW4iLCJpbXBvcnRSZXBsYWNlbWVudCIsImNvbmZpZ1JlcGxhY2VtZW50Iiwiam9pbiIsInRvZG8iXSwibWFwcGluZ3MiOiI7Ozs7Z0VBQWdCOzZEQUNDOytCQUVhOzBCQUM4QjsyQkFFMUI7Ozs7OztBQUVsQyxNQUFNQSxhQUFhQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVztBQUMzQ0MsU0FBUyxpQkFBaUI7SUFDeEJDLFVBQVU7UUFDUkMsUUFBUUMsR0FBRyxHQUFHQyxLQUFLQyxFQUFFO0lBQ3ZCO0lBRUFDLFdBQVc7UUFDVCxJQUFJQyxnQkFBRyxDQUFDQyxVQUFVLENBQUNaLGFBQWE7WUFDOUJXLGdCQUFHLENBQUNFLFNBQVMsQ0FBQ2IsWUFBWTtnQkFBRWMsV0FBVztZQUFLO1FBQzlDO0lBQ0Y7SUFDQUMsVUFBVTtRQUNSLElBQUlKLGdCQUFHLENBQUNDLFVBQVUsQ0FBQ1osYUFBYTtZQUM5QlcsZ0JBQUcsQ0FBQ0ssTUFBTSxDQUFDaEIsWUFBWTtnQkFBRWMsV0FBVztZQUFLO1FBQzNDO0lBQ0Y7SUFFQVYsU0FBUyxrQkFBa0I7UUFDekIseUVBQXlFO1FBQ3pFLE1BQU1hLE9BQU87WUFDWEMsR0FBRztnQkFBQzthQUFlO1lBQ25CLFFBQVE7WUFDUixhQUFhO1FBQ2Y7UUFDQSxNQUFNQyxpQkFBaUI7UUFFdkJDLEdBQUcsMkJBQTJCO1lBQzVCLE1BQU1DLGNBQWM7WUFDcEIsTUFBTUMsV0FBNEI7Z0JBQ2hDQyxNQUFNO2dCQUNOQyxNQUFNO2dCQUNOQyxLQUFLO2dCQUNMQyxhQUFhO1lBQ2Y7WUFDQSxNQUFNQyxJQUFBQSw0QkFBYSxFQUFDO2dCQUNsQkMsU0FBU1g7Z0JBQ1RJO2dCQUNBckI7Z0JBQ0FzQjtnQkFDQUg7WUFDRjtZQUVBLE1BQU1VLGtCQUFrQjVCLGFBQUksQ0FBQ0Ms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
123
+ //# sourceMappingURL=create-project.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/create-project.spec.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport path from 'path'\nimport type { CliArgs, DbType, ProjectTemplate } from '../types.js'\nimport { createProject } from './create-project.js'\nimport { fileURLToPath } from 'node:url'\nimport { dbReplacements } from './packages.js'\nimport { getValidTemplates } from './templates.js'\nimport globby from 'globby'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nconst projectDir = path.resolve(dirname, './tmp')\ndescribe('createProject', () => {\n beforeAll(() => {\n console.log = jest.fn()\n })\n\n beforeEach(() => {\n if (fse.existsSync(projectDir)) {\n fse.rmdirSync(projectDir, { recursive: true })\n }\n })\n afterEach(() => {\n if (fse.existsSync(projectDir)) {\n fse.rmSync(projectDir, { recursive: true })\n }\n })\n\n describe('#createProject', () => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const args = {\n _: ['project-name'],\n '--db': 'mongodb',\n '--local-template': 'blank',\n '--no-deps': true,\n } as CliArgs\n const packageManager = 'yarn'\n\n it('creates plugin template', async () => {\n const projectName = 'plugin'\n const template: ProjectTemplate = {\n name: 'plugin',\n type: 'plugin',\n url: 'https://github.com/payloadcms/payload-plugin-template',\n description: 'Template for creating a Payload plugin',\n }\n await createProject({\n cliArgs: args,\n projectName,\n projectDir,\n template,\n packageManager,\n })\n\n const packageJsonPath = path.resolve(projectDir, 'package.json')\n const packageJson = fse.readJsonSync(packageJsonPath)\n\n // Check package name and description\n expect(packageJson.name).toEqual(projectName)\n })\n\n describe('creates project from template', () => {\n const templates = getValidTemplates()\n\n it.each([\n ['blank-3.0', 'mongodb'],\n ['blank-3.0', 'postgres'],\n\n // TODO: Re-enable these once 3.0 is stable and templates updated\n // ['website', 'mongodb'],\n // ['website', 'postgres'],\n // ['ecommerce', 'mongodb'],\n // ['ecommerce', 'postgres'],\n ])('update config and deps: %s, %s', async (templateName, db) => {\n const projectName = 'starter-project'\n\n const template = templates.find((t) => t.name === templateName)\n\n const cliArgs = {\n ...args,\n '--db': db,\n '--local-template': templateName,\n } as CliArgs\n\n await createProject({\n cliArgs,\n projectName,\n projectDir,\n template: template as ProjectTemplate,\n packageManager,\n dbDetails: {\n dbUri: `${db}://localhost:27017/create-project-test`,\n type: db as DbType,\n },\n })\n\n const dbReplacement = dbReplacements[db as DbType]\n\n const packageJsonPath = path.resolve(projectDir, 'package.json')\n const packageJson = fse.readJsonSync(packageJsonPath)\n\n // Should only have one db adapter\n expect(\n Object.keys(packageJson.dependencies).filter((n) => n.startsWith('@payloadcms/db-')),\n ).toHaveLength(1)\n\n const payloadConfigPath = (\n await globby('**/payload.config.ts', {\n absolute: true,\n cwd: projectDir,\n })\n )?.[0]\n\n if (!payloadConfigPath) {\n throw new Error(`Could not find payload.config.ts inside ${projectDir}`)\n }\n\n const content = fse.readFileSync(payloadConfigPath, 'utf-8')\n\n // Check payload.config.ts\n expect(content).not.toContain('// database-adapter-import')\n expect(content).toContain(dbReplacement.importReplacement)\n\n expect(content).not.toContain('// database-adapter-config-start')\n expect(content).not.toContain('// database-adapter-config-end')\n expect(content).toContain(dbReplacement.configReplacement.join('\\n'))\n })\n })\n })\n})\n"],"names":["filename","fileURLToPath","dirname","path","projectDir","resolve","describe","beforeAll","console","log","jest","fn","beforeEach","fse","existsSync","rmdirSync","recursive","afterEach","rmSync","args","_","packageManager","it","projectName","template","name","type","url","description","createProject","cliArgs","packageJsonPath","packageJson","readJsonSync","expect","toEqual","templates","getValidTemplates","each","templateName","db","find","t","dbDetails","dbUri","dbReplacement","dbReplacements","Object","keys","dependencies","filter","n","startsWith","toHaveLength","payloadConfigPath","globby","absolute","cwd","Error","content","readFileSync","not","toContain","importReplacement","configReplacement","join"],"mappings":";;;;gEAAgB;6DACC;+BAEa;yBACA;0BACC;2BACG;+DACf;;;;;;AAEnB,MAAMA,WAAWC,IAAAA,sBAAa,EAAC;AAC/B,MAAMC,UAAUC,aAAI,CAACD,OAAO,CAACF;AAE7B,MAAMI,aAAaD,aAAI,CAACE,OAAO,CAACH,SAAS;AACzCI,SAAS,iBAAiB;IACxBC,UAAU;QACRC,QAAQC,GAAG,GAAGC,KAAKC,EAAE;IACvB;IAEAC,WAAW;QACT,IAAIC,gBAAG,CAACC,UAAU,CAACV,aAAa;YAC9BS,gBAAG,CAACE,SAAS,CAACX,YAAY;gBAAEY,WAAW;YAAK;QAC9C;IACF;IACAC,UAAU;QACR,IAAIJ,gBAAG,CAACC,UAAU,CAACV,aAAa;YAC9BS,gBAAG,CAACK,MAAM,CAACd,YAAY;gBAAEY,WAAW;YAAK;QAC3C;IACF;IAEAV,SAAS,kBAAkB;QACzB,yEAAyE;QACzE,MAAMa,OAAO;YACXC,GAAG;gBAAC;aAAe;YACnB,QAAQ;YACR,oBAAoB;YACpB,aAAa;QACf;QACA,MAAMC,iBAAiB;QAEvBC,GAAG,2BAA2B;YAC5B,MAAMC,cAAc;YACpB,MAAMC,WAA4B;gBAChCC,MAAM;gBACNC,MAAM;gBACNC,KAAK;gBACLC,aAAa;YACf;YACA,MAAMC,IAAAA,4BAAa,EAAC;gBAClBC,SAASX;gBACTI;gBACAnB;gBACAoB;gBACAH;YACF;YAEA,MAAMU,kBAAkB5B,aAAI,CAACE,OAAO,CAACD,YAAY;YACjD,MAAM4B,cAAcnB,gBAAG,CAACoB,YAAY,CAACF;YAErC,qCAAqC;YACrCG,OAAOF,YAAYP,IAAI,EAAEU,OAAO,CAACZ;QACnC;QAEAjB,SAAS,iCAAiC;YACxC,MAAM8B,YAAYC,IAAAA,4BAAiB;YAEnCf,GAAGgB,IAAI,CAAC;gBACN;oBAAC;oBAAa;iBAAU;gBACxB;oBAAC;oBAAa;iBAAW;aAO1B,EAAE,kCAAkC,OAAOC,cAAcC;gBACxD,MAAMjB,cAAc;gBAEpB,MAAMC,WAAWY,UAAUK,IAAI,CAAC,CAACC,IAAMA,EAAEjB,IAAI,KAAKc;gBAElD,MAAMT,UAAU;oBACd,GAAGX,IAAI;oBACP,QAAQqB;oBACR,oBAAoBD;gBACtB;gBAEA,MAAMV,IAAAA,4BAAa,EAAC;oBAClBC;oBACAP;oBACAnB;oBACAoB,UAAUA;oBACVH;oBACAsB,WAAW;wBACTC,OAAO,CAAC,EAAEJ,GAAG,sCAAsC,CAAC;wBACpDd,MAAMc;oBACR;gBACF;gBAEA,MAAMK,gBAAgBC,wBAAc,CAACN,GAAa;gBAElD,MAAMT,kBAAkB5B,aAAI,CAACE,OAAO,CAACD,YAAY;gBACjD,MAAM4B,cAAcnB,gBAAG,CAACoB,YAAY,CAACF;gBAErC,kCAAkC;gBAClCG,OACEa,OAAOC,IAAI,CAAChB,YAAYiB,YAAY,EAAEC,MAAM,CAAC,CAACC,IAAMA,EAAEC,UAAU,CAAC,qBACjEC,YAAY,CAAC;gBAEf,MAAMC,oBACJ,CAAA,MAAMC,IAAAA,eAAM,EAAC,wBAAwB;oBACnCC,UAAU;oBACVC,KAAKrD;gBACP,EAAC,GACA,CAAC,EAAE;gBAEN,IAAI,CAACkD,mBAAmB;oBACtB,MAAM,IAAII,MAAM,CAAC,wCAAwC,EAAEtD,WAAW,CAAC;gBACzE;gBAEA,MAAMuD,UAAU9C,gBAAG,CAAC+C,YAAY,CAACN,mBAAmB;gBAEpD,0BAA0B;gBAC1BpB,OAAOyB,SAASE,GAAG,CAACC,SAAS,CAAC;gBAC9B5B,OAAOyB,SAASG,SAAS,CAACjB,cAAckB,iBAAiB;gBAEzD7B,OAAOyB,SAASE,GAAG,CAACC,SAAS,CAAC;gBAC9B5B,OAAOyB,SAASE,GAAG,CAACC,SAAS,CAAC;gBAC9B5B,OAAOyB,SAASG,SAAS,CAACjB,cAAcmB,iBAAiB,CAACC,IAAI,CAAC;YACjE;QACF;IACF;AACF"}
@@ -0,0 +1,2 @@
1
+ export declare function generateSecret(): string;
2
+ //# sourceMappingURL=generate-secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-secret.d.ts","sourceRoot":"","sources":["../../src/lib/generate-secret.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}