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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -8,11 +8,47 @@ Object.defineProperty(exports, "parseTemplate", {
8
8
  return parseTemplate;
9
9
  }
10
10
  });
11
- const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
12
- function _interop_require_default(obj) {
13
- return obj && obj.__esModule ? obj : {
14
- default: obj
11
+ const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
12
+ function _getRequireWildcardCache(nodeInterop) {
13
+ if (typeof WeakMap !== "function") return null;
14
+ var cacheBabelInterop = new WeakMap();
15
+ var cacheNodeInterop = new WeakMap();
16
+ return (_getRequireWildcardCache = function(nodeInterop) {
17
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
18
+ })(nodeInterop);
19
+ }
20
+ function _interop_require_wildcard(obj, nodeInterop) {
21
+ if (!nodeInterop && obj && obj.__esModule) {
22
+ return obj;
23
+ }
24
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
25
+ return {
26
+ default: obj
27
+ };
28
+ }
29
+ var cache = _getRequireWildcardCache(nodeInterop);
30
+ if (cache && cache.has(obj)) {
31
+ return cache.get(obj);
32
+ }
33
+ var newObj = {
34
+ __proto__: null
15
35
  };
36
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
37
+ for(var key in obj){
38
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
39
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
40
+ if (desc && (desc.get || desc.set)) {
41
+ Object.defineProperty(newObj, key, desc);
42
+ } else {
43
+ newObj[key] = obj[key];
44
+ }
45
+ }
46
+ }
47
+ newObj.default = obj;
48
+ if (cache) {
49
+ cache.set(obj, newObj);
50
+ }
51
+ return newObj;
16
52
  }
17
53
  async function parseTemplate(args, validTemplates) {
18
54
  if (args['--template']) {
@@ -21,26 +57,20 @@ async function parseTemplate(args, validTemplates) {
21
57
  if (!template) throw new Error('Invalid template given');
22
58
  return template;
23
59
  }
24
- const response = await (0, _prompts.default)({
25
- name: 'value',
26
- choices: validTemplates.map((p)=>{
60
+ const response = await _prompts.select({
61
+ message: 'Choose project template',
62
+ options: validTemplates.map((p)=>{
27
63
  return {
28
- description: p.description,
29
- title: p.name,
64
+ label: p.name,
30
65
  value: p.name
31
66
  };
32
- }),
33
- message: 'Choose project template',
34
- type: 'select',
35
- validate: (value)=>!!value.length
36
- }, {
37
- onCancel: ()=>{
38
- process.exit(0);
39
- }
67
+ })
40
68
  });
41
- const template = validTemplates.find((t)=>t.name === response.value);
42
- if (!template) throw new Error('Template is undefined');
69
+ if (_prompts.isCancel(response)) {
70
+ process.exit(0);
71
+ }
72
+ const template = validTemplates.find((t)=>t.name === response);
43
73
  return template;
44
74
  }
45
75
 
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyc2UtdGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb21wdHMgZnJvbSAncHJvbXB0cydcblxuaW1wb3J0IHR5cGUgeyBDbGlBcmdzLCBQcm9qZWN0VGVtcGxhdGUgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlVGVtcGxhdGUoXG4gIGFyZ3M6IENsaUFyZ3MsXG4gIHZhbGlkVGVtcGxhdGVzOiBQcm9qZWN0VGVtcGxhdGVbXSxcbik6IFByb21pc2U8UHJvamVjdFRlbXBsYXRlPiB7XG4gIGlmIChhcmdzWyctLXRlbXBsYXRlJ10pIHtcbiAgICBjb25zdCB0ZW1wbGF0ZU5hbWUgPSBhcmdzWyctLXRlbXBsYXRlJ11cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHZhbGlkVGVtcGxhdGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGVtcGxhdGVOYW1lKVxuICAgIGlmICghdGVtcGxhdGUpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0ZW1wbGF0ZSBnaXZlbicpXG4gICAgcmV0dXJuIHRlbXBsYXRlXG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHByb21wdHMoXG4gICAge1xuICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgIGNob2ljZXM6IHZhbGlkVGVtcGxhdGVzLm1hcCgocCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHRpdGxlOiBwLm5hbWUsXG4gICAgICAgICAgdmFsdWU6IHAubmFtZSxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtZXNzYWdlOiAnQ2hvb3NlIHByb2plY3QgdGVtcGxhdGUnLFxuICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlOiBzdHJpbmcpID0+ICEhdmFsdWUubGVuZ3RoLFxuICAgIH0sXG4gICAge1xuICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9LFxuICAgIH0sXG4gIClcblxuICBjb25zdCB0ZW1wbGF0ZSA9IHZhbGlkVGVtcGxhdGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gcmVzcG9uc2UudmFsdWUpXG4gIGlmICghdGVtcGxhdGUpIHRocm93IG5ldyBFcnJvcignVGVtcGxhdGUgaXMgdW5kZWZpbmVkJylcblxuICByZXR1cm4gdGVtcGxhdGVcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVRlbXBsYXRlIiwiYXJncyIsInZhbGlkVGVtcGxhdGVzIiwidGVtcGxhdGVOYW1lIiwidGVtcGxhdGUiLCJmaW5kIiwidCIsIm5hbWUiLCJFcnJvciIsInJlc3BvbnNlIiwicHJvbXB0cyIsImNob2ljZXMiLCJtYXAiLCJwIiwiZGVzY3JpcHRpb24iLCJ0aXRsZSIsInZhbHVlIiwibWVzc2FnZSIsInR5cGUiLCJ2YWxpZGF0ZSIsImxlbmd0aCIsIm9uQ2FuY2VsIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBSXNCQTs7O2VBQUFBOzs7Z0VBSkY7Ozs7OztBQUliLGVBQWVBLGNBQ3BCQyxJQUFhLEVBQ2JDLGNBQWlDO0lBRWpDLElBQUlELElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDdEIsTUFBTUUsZUFBZUYsSUFBSSxDQUFDLGFBQWE7UUFDdkMsTUFBTUcsV0FBV0YsZUFBZUcsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLElBQUksS0FBS0o7UUFDdkQsSUFBSSxDQUFDQyxVQUFVLE1BQU0sSUFBSUksTUFBTTtRQUMvQixPQUFPSjtJQUNUO0lBRUEsTUFBTUssV0FBVyxNQUFNQyxJQUFBQSxnQkFBTyxFQUM1QjtRQUNFSCxNQUFNO1FBQ05JLFNBQVNULGVBQWVVLEdBQUcsQ0FBQyxDQUFDQztZQUMzQixPQUFPO2dCQUNMQyxhQUFhRCxFQUFFQyxXQUFXO2dCQUMxQkMsT0FBT0YsRUFBRU4sSUFBSTtnQkFDYlMsT0FBT0gsRUFBRU4sSUFBSTtZQUNmO1FBQ0Y7UUFDQVUsU0FBUztRQUNUQyxNQUFNO1FBQ05DLFVBQVUsQ0FBQ0gsUUFBa0IsQ0FBQyxDQUFDQSxNQUFNSSxNQUFNO0lBQzdDLEdBQ0E7UUFDRUMsVUFBVTtZQUNSQyxRQUFRQyxJQUFJLENBQUM7UUFDZjtJQUNGO0lBR0YsTUFBTW5CLFdBQVdGLGVBQWVHLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtFLFNBQVNPLEtBQUs7SUFDckUsSUFBSSxDQUFDWixVQUFVLE1BQU0sSUFBSUksTUFBTTtJQUUvQixPQUFPSjtBQUNUIn0=
76
+ //# sourceMappingURL=parse-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/parse-template.ts"],"sourcesContent":["import * as p from '@clack/prompts'\n\nimport type { CliArgs, ProjectTemplate } from '../types.js'\n\nexport async function parseTemplate(\n args: CliArgs,\n validTemplates: ProjectTemplate[],\n): Promise<ProjectTemplate | undefined> {\n if (args['--template']) {\n const templateName = args['--template']\n const template = validTemplates.find((t) => t.name === templateName)\n if (!template) throw new Error('Invalid template given')\n return template\n }\n\n const response = await p.select<{ label: string; value: string }[], string>({\n message: 'Choose project template',\n options: validTemplates.map((p) => {\n return {\n label: p.name,\n value: p.name,\n }\n }),\n })\n if (p.isCancel(response)) {\n process.exit(0)\n }\n\n const template = validTemplates.find((t) => t.name === response)\n\n return template\n}\n"],"names":["parseTemplate","args","validTemplates","templateName","template","find","t","name","Error","response","p","select","message","options","map","label","value","isCancel","process","exit"],"mappings":";;;;+BAIsBA;;;eAAAA;;;iEAJH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIZ,eAAeA,cACpBC,IAAa,EACbC,cAAiC;IAEjC,IAAID,IAAI,CAAC,aAAa,EAAE;QACtB,MAAME,eAAeF,IAAI,CAAC,aAAa;QACvC,MAAMG,WAAWF,eAAeG,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ;QACvD,IAAI,CAACC,UAAU,MAAM,IAAII,MAAM;QAC/B,OAAOJ;IACT;IAEA,MAAMK,WAAW,MAAMC,SAAEC,MAAM,CAA6C;QAC1EC,SAAS;QACTC,SAASX,eAAeY,GAAG,CAAC,CAACJ;YAC3B,OAAO;gBACLK,OAAOL,EAAEH,IAAI;gBACbS,OAAON,EAAEH,IAAI;YACf;QACF;IACF;IACA,IAAIG,SAAEO,QAAQ,CAACR,WAAW;QACxBS,QAAQC,IAAI,CAAC;IACf;IAEA,MAAMf,WAAWF,eAAeG,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKE;IAEvD,OAAOL;AACT"}
@@ -0,0 +1,3 @@
1
+ import type { CliArgs, DbDetails } from '../types.js';
2
+ export declare function selectDb(args: CliArgs, projectName: string): Promise<DbDetails>;
3
+ //# sourceMappingURL=select-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-db.d.ts","sourceRoot":"","sources":["../../src/lib/select-db.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAU,MAAM,aAAa,CAAA;AAqB7D,wBAAsB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA8CrF"}
@@ -8,13 +8,54 @@ Object.defineProperty(exports, "selectDb", {
8
8
  return selectDb;
9
9
  }
10
10
  });
11
+ const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
11
12
  const _slugify = /*#__PURE__*/ _interop_require_default(require("@sindresorhus/slugify"));
12
- const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
13
13
  function _interop_require_default(obj) {
14
14
  return obj && obj.__esModule ? obj : {
15
15
  default: obj
16
16
  };
17
17
  }
18
+ function _getRequireWildcardCache(nodeInterop) {
19
+ if (typeof WeakMap !== "function") return null;
20
+ var cacheBabelInterop = new WeakMap();
21
+ var cacheNodeInterop = new WeakMap();
22
+ return (_getRequireWildcardCache = function(nodeInterop) {
23
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
24
+ })(nodeInterop);
25
+ }
26
+ function _interop_require_wildcard(obj, nodeInterop) {
27
+ if (!nodeInterop && obj && obj.__esModule) {
28
+ return obj;
29
+ }
30
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
31
+ return {
32
+ default: obj
33
+ };
34
+ }
35
+ var cache = _getRequireWildcardCache(nodeInterop);
36
+ if (cache && cache.has(obj)) {
37
+ return cache.get(obj);
38
+ }
39
+ var newObj = {
40
+ __proto__: null
41
+ };
42
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
+ for(var key in obj){
44
+ if (key !== "default" && 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
+ }
18
59
  const dbChoiceRecord = {
19
60
  mongodb: {
20
61
  dbConnectionPrefix: 'mongodb://127.0.0.1/',
@@ -35,43 +76,43 @@ async function selectDb(args, projectName) {
35
76
  }
36
77
  dbType = args['--db'];
37
78
  } else {
38
- const dbTypeRes = await (0, _prompts.default)({
39
- name: 'value',
40
- choices: Object.values(dbChoiceRecord).map((dbChoice)=>{
41
- return {
42
- title: dbChoice.title,
43
- value: dbChoice.value
44
- };
45
- }),
46
- message: 'Select a database',
47
- type: 'select',
48
- validate: (value)=>!!value.length
49
- }, {
50
- onCancel: ()=>{
51
- process.exit(0);
52
- }
79
+ dbType = await _prompts.select({
80
+ initialValue: 'mongodb',
81
+ message: `Select a database`,
82
+ options: [
83
+ {
84
+ label: 'MongoDB',
85
+ value: 'mongodb'
86
+ },
87
+ {
88
+ label: 'Postgres',
89
+ value: 'postgres'
90
+ }
91
+ ]
53
92
  });
54
- dbType = dbTypeRes.value;
93
+ if (_prompts.isCancel(dbType)) process.exit(0);
55
94
  }
56
95
  const dbChoice = dbChoiceRecord[dbType];
57
- const dbUriRes = await (0, _prompts.default)({
58
- name: 'value',
59
- initial: `${dbChoice.dbConnectionPrefix}${projectName === '.' ? `payload-${getRandomDigitSuffix()}` : (0, _slugify.default)(projectName)}`,
60
- message: `Enter ${dbChoice.title.split(' ')[0]} connection string`,
61
- type: 'text',
62
- validate: (value)=>!!value.length
63
- }, {
64
- onCancel: ()=>{
65
- process.exit(0);
66
- }
67
- });
96
+ let dbUri = undefined;
97
+ const initialDbUri = `${dbChoice.dbConnectionPrefix}${projectName === '.' ? `payload-${getRandomDigitSuffix()}` : (0, _slugify.default)(projectName)}`;
98
+ if (args['--db-accept-recommended']) {
99
+ dbUri = initialDbUri;
100
+ } else if (args['--db-connection-string']) {
101
+ dbUri = args['--db-connection-string'];
102
+ } else {
103
+ dbUri = await _prompts.text({
104
+ initialValue: initialDbUri,
105
+ message: `Enter ${dbChoice.title.split(' ')[0]} connection string`
106
+ });
107
+ if (_prompts.isCancel(dbUri)) process.exit(0);
108
+ }
68
109
  return {
69
- dbUri: dbUriRes.value,
70
- type: dbChoice.value
110
+ type: dbChoice.value,
111
+ dbUri
71
112
  };
72
113
  }
73
114
  function getRandomDigitSuffix() {
74
115
  return (Math.random() * Math.pow(10, 6)).toFixed(0);
75
116
  }
76
117
 
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2VsZWN0LWRiLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzbHVnaWZ5IGZyb20gJ0BzaW5kcmVzb3JodXMvc2x1Z2lmeSdcbmltcG9ydCBwcm9tcHRzIGZyb20gJ3Byb21wdHMnXG5cbmltcG9ydCB0eXBlIHsgQ2xpQXJncywgRGJEZXRhaWxzLCBEYlR5cGUgfSBmcm9tICcuLi90eXBlcydcblxudHlwZSBEYkNob2ljZSA9IHtcbiAgZGJDb25uZWN0aW9uUHJlZml4OiBgJHtzdHJpbmd9L2BcbiAgdGl0bGU6IHN0cmluZ1xuICB2YWx1ZTogRGJUeXBlXG59XG5cbmNvbnN0IGRiQ2hvaWNlUmVjb3JkOiBSZWNvcmQ8RGJUeXBlLCBEYkNob2ljZT4gPSB7XG4gIG1vbmdvZGI6IHtcbiAgICBkYkNvbm5lY3Rpb25QcmVmaXg6ICdtb25nb2RiOi8vMTI3LjAuMC4xLycsXG4gICAgdGl0bGU6ICdNb25nb0RCJyxcbiAgICB2YWx1ZTogJ21vbmdvZGInLFxuICB9LFxuICBwb3N0Z3Jlczoge1xuICAgIGRiQ29ubmVjdGlvblByZWZpeDogJ3Bvc3RncmVzOi8vMTI3LjAuMC4xOjU0MzIvJyxcbiAgICB0aXRsZTogJ1Bvc3RncmVTUUwgKGJldGEpJyxcbiAgICB2YWx1ZTogJ3Bvc3RncmVzJyxcbiAgfSxcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbGVjdERiKGFyZ3M6IENsaUFyZ3MsIHByb2plY3ROYW1lOiBzdHJpbmcpOiBQcm9taXNlPERiRGV0YWlscz4ge1xuICBsZXQgZGJUeXBlOiBEYlR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgaWYgKGFyZ3NbJy0tZGInXSkge1xuICAgIGlmICghT2JqZWN0LnZhbHVlcyhkYkNob2ljZVJlY29yZCkuc29tZSgoZGJDaG9pY2UpID0+IGRiQ2hvaWNlLnZhbHVlID09PSBhcmdzWyctLWRiJ10pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGRhdGFiYXNlIHR5cGUgZ2l2ZW4uIFZhbGlkIHR5cGVzIGFyZTogJHtPYmplY3QudmFsdWVzKGRiQ2hvaWNlUmVjb3JkKVxuICAgICAgICAgIC5tYXAoKGRiQ2hvaWNlKSA9PiBkYkNob2ljZS52YWx1ZSlcbiAgICAgICAgICAuam9pbignLCAnKX1gLFxuICAgICAgKVxuICAgIH1cbiAgICBkYlR5cGUgPSBhcmdzWyctLWRiJ10gYXMgRGJUeXBlXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGJUeXBlUmVzID0gYXdhaXQgcHJvbXB0cyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgICAgY2hvaWNlczogT2JqZWN0LnZhbHVlcyhkYkNob2ljZVJlY29yZCkubWFwKChkYkNob2ljZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogZGJDaG9pY2UudGl0bGUsXG4gICAgICAgICAgICB2YWx1ZTogZGJDaG9pY2UudmFsdWUsXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgbWVzc2FnZTogJ1NlbGVjdCBhIGRhdGFiYXNlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIHZhbGlkYXRlOiAodmFsdWU6IHN0cmluZykgPT4gISF2YWx1ZS5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gICAgZGJUeXBlID0gZGJUeXBlUmVzLnZhbHVlXG4gIH1cblxuICBjb25zdCBkYkNob2ljZSA9IGRiQ2hvaWNlUmVjb3JkW2RiVHlwZV1cblxuICBjb25zdCBkYlVyaVJlcyA9IGF3YWl0IHByb21wdHMoXG4gICAge1xuICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgIGluaXRpYWw6IGAke2RiQ2hvaWNlLmRiQ29ubmVjdGlvblByZWZpeH0ke1xuICAgICAgICBwcm9qZWN0TmFtZSA9PT0gJy4nID8gYHBheWxvYWQtJHtnZXRSYW5kb21EaWdpdFN1ZmZpeCgpfWAgOiBzbHVnaWZ5KHByb2plY3ROYW1lKVxuICAgICAgfWAsXG4gICAgICBtZXNzYWdlOiBgRW50ZXIgJHtkYkNob2ljZS50aXRsZS5zcGxpdCgnICcpWzBdfSBjb25uZWN0aW9uIHN0cmluZ2AsIC8vIHN0cmlwIGJldGEgZnJvbSB0aXRsZVxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZTogc3RyaW5nKSA9PiAhIXZhbHVlLmxlbmd0aCxcbiAgICB9LFxuICAgIHtcbiAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgfSxcbiAgICB9LFxuICApXG5cbiAgcmV0dXJuIHtcbiAgICBkYlVyaTogZGJVcmlSZXMudmFsdWUsXG4gICAgdHlwZTogZGJDaG9pY2UudmFsdWUsXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmFuZG9tRGlnaXRTdWZmaXgoKTogc3RyaW5nIHtcbiAgcmV0dXJuIChNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMTAsIDYpKS50b0ZpeGVkKDApXG59XG4iXSwibmFtZXMiOlsic2VsZWN0RGIiLCJkYkNob2ljZVJlY29yZCIsIm1vbmdvZGIiLCJkYkNvbm5lY3Rpb25QcmVmaXgiLCJ0aXRsZSIsInZhbHVlIiwicG9zdGdyZXMiLCJhcmdzIiwicHJvamVjdE5hbWUiLCJkYlR5cGUiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwiZGJDaG9pY2UiLCJFcnJvciIsIm1hcCIsImpvaW4iLCJkYlR5cGVSZXMiLCJwcm9tcHRzIiwibmFtZSIsImNob2ljZXMiLCJtZXNzYWdlIiwidHlwZSIsInZhbGlkYXRlIiwibGVuZ3RoIiwib25DYW5jZWwiLCJwcm9jZXNzIiwiZXhpdCIsImRiVXJpUmVzIiwiaW5pdGlhbCIsImdldFJhbmRvbURpZ2l0U3VmZml4Iiwic2x1Z2lmeSIsInNwbGl0IiwiZGJVcmkiLCJNYXRoIiwicmFuZG9tIiwicG93IiwidG9GaXhlZCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF3QnNCQTs7O2VBQUFBOzs7Z0VBeEJGO2dFQUNBOzs7Ozs7QUFVcEIsTUFBTUMsaUJBQTJDO0lBQy9DQyxTQUFTO1FBQ1BDLG9CQUFvQjtRQUNwQkMsT0FBTztRQUNQQyxPQUFPO0lBQ1Q7SUFDQUMsVUFBVTtRQUNSSCxvQkFBb0I7UUFDcEJDLE9BQU87UUFDUEMsT0FBTztJQUNUO0FBQ0Y7QUFFTyxlQUFlTCxTQUFTTyxJQUFhLEVBQUVDLFdBQW1CO0lBQy9ELElBQUlDLFNBQTZCQztJQUNqQyxJQUFJSCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0ksT0FBT0MsTUFBTSxDQUFDWCxnQkFBZ0JZLElBQUksQ0FBQyxDQUFDQyxXQUFhQSxTQUFTVCxLQUFLLEtBQUtFLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDdEYsTUFBTSxJQUFJUSxNQUNSLENBQUMsOENBQThDLEVBQUVKLE9BQU9DLE1BQU0sQ0FBQ1gsZ0JBQzVEZSxHQUFHLENBQUMsQ0FBQ0YsV0FBYUEsU0FBU1QsS0FBSyxFQUNoQ1ksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVuQjtRQUNBUixTQUFTRixJQUFJLENBQUMsT0FBTztJQUN2QixPQUFPO1FBQ0wsTUFBTVcsWUFBWSxNQUFNQyxJQUFBQSxnQkFBTyxFQUM3QjtZQUNFQyxNQUFNO1lBQ05DLFNBQVNWLE9BQU9DLE1BQU0sQ0FBQ1gsZ0JBQWdCZSxHQUFHLENBQUMsQ0FBQ0Y7Z0JBQzFDLE9BQU87b0JBQ0xWLE9BQU9VLFNBQVNWLEtBQUs7b0JBQ3JCQyxPQUFPUyxTQUFTVCxLQUFLO2dCQUN2QjtZQUNGO1lBQ0FpQixTQUFTO1lBQ1RDLE1BQU07WUFDTkMsVUFBVSxDQUFDbkIsUUFBa0IsQ0FBQyxDQUFDQSxNQUFNb0IsTUFBTTtRQUM3QyxHQUNBO1lBQ0VDLFVBQVU7Z0JBQ1JDLFFBQVFDLElBQUksQ0FBQztZQUNmO1FBQ0Y7UUFFRm5CLFNBQVNTLFVBQVViLEtBQUs7SUFDMUI7SUFFQSxNQUFNUyxXQUFXYixjQUFjLENBQUNRLE9BQU87SUFFdkMsTUFBTW9CLFdBQVcsTUFBTVYsSUFBQUEsZ0JBQU8sRUFDNUI7UUFDRUMsTUFBTTtRQUNOVSxTQUFTLENBQUMsRUFBRWhCLFNBQVNYLGtCQUFrQixDQUFDLEVBQ3RDSyxnQkFBZ0IsTUFBTSxDQUFDLFFBQVEsRUFBRXVCLHVCQUF1QixDQUFDLEdBQUdDLElBQUFBLGdCQUFPLEVBQUN4QixhQUNyRSxDQUFDO1FBQ0ZjLFNBQVMsQ0FBQyxNQUFNLEVBQUVSLFNBQVNWLEtBQUssQ0FBQzZCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xFVixNQUFNO1FBQ05DLFVBQVUsQ0FBQ25CLFFBQWtCLENBQUMsQ0FBQ0EsTUFBTW9CLE1BQU07SUFDN0MsR0FDQTtRQUNFQyxVQUFVO1lBQ1JDLFFBQVFDLElBQUksQ0FBQztRQUNmO0lBQ0Y7SUFHRixPQUFPO1FBQ0xNLE9BQU9MLFNBQVN4QixLQUFLO1FBQ3JCa0IsTUFBTVQsU0FBU1QsS0FBSztJQUN0QjtBQUNGO0FBRUEsU0FBUzBCO0lBQ1AsT0FBTyxBQUFDSSxDQUFBQSxLQUFLQyxNQUFNLEtBQUtELEtBQUtFLEdBQUcsQ0FBQyxJQUFJLEVBQUMsRUFBR0MsT0FBTyxDQUFDO0FBQ25EIn0=
118
+ //# sourceMappingURL=select-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/select-db.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\n\nimport type { CliArgs, DbDetails, DbType } from '../types.js'\n\ntype DbChoice = {\n dbConnectionPrefix: `${string}/`\n title: string\n value: DbType\n}\n\nconst dbChoiceRecord: Record<DbType, DbChoice> = {\n mongodb: {\n dbConnectionPrefix: 'mongodb://127.0.0.1/',\n title: 'MongoDB',\n value: 'mongodb',\n },\n postgres: {\n dbConnectionPrefix: 'postgres://127.0.0.1:5432/',\n title: 'PostgreSQL (beta)',\n value: 'postgres',\n },\n}\n\nexport async function selectDb(args: CliArgs, projectName: string): Promise<DbDetails> {\n let dbType: DbType | symbol | undefined = undefined\n if (args['--db']) {\n if (!Object.values(dbChoiceRecord).some((dbChoice) => dbChoice.value === args['--db'])) {\n throw new Error(\n `Invalid database type given. Valid types are: ${Object.values(dbChoiceRecord)\n .map((dbChoice) => dbChoice.value)\n .join(', ')}`,\n )\n }\n dbType = args['--db'] as DbType\n } else {\n dbType = await p.select<{ label: string; value: DbType }[], DbType>({\n initialValue: 'mongodb',\n message: `Select a database`,\n options: [\n { label: 'MongoDB', value: 'mongodb' },\n { label: 'Postgres', value: 'postgres' },\n ],\n })\n if (p.isCancel(dbType)) process.exit(0)\n }\n\n const dbChoice = dbChoiceRecord[dbType]\n\n let dbUri: string | symbol | undefined = undefined\n const initialDbUri = `${dbChoice.dbConnectionPrefix}${\n projectName === '.' ? `payload-${getRandomDigitSuffix()}` : slugify(projectName)\n }`\n\n if (args['--db-accept-recommended']) {\n dbUri = initialDbUri\n } else if (args['--db-connection-string']) {\n dbUri = args['--db-connection-string']\n } else {\n dbUri = await p.text({\n initialValue: initialDbUri,\n message: `Enter ${dbChoice.title.split(' ')[0]} connection string`, // strip beta from title\n })\n if (p.isCancel(dbUri)) process.exit(0)\n }\n\n return {\n type: dbChoice.value,\n dbUri,\n }\n}\n\nfunction getRandomDigitSuffix(): string {\n return (Math.random() * Math.pow(10, 6)).toFixed(0)\n}\n"],"names":["selectDb","dbChoiceRecord","mongodb","dbConnectionPrefix","title","value","postgres","args","projectName","dbType","undefined","Object","values","some","dbChoice","Error","map","join","p","select","initialValue","message","options","label","isCancel","process","exit","dbUri","initialDbUri","getRandomDigitSuffix","slugify","text","split","type","Math","random","pow","toFixed"],"mappings":";;;;+BAwBsBA;;;eAAAA;;;iEAxBH;gEACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUpB,MAAMC,iBAA2C;IAC/CC,SAAS;QACPC,oBAAoB;QACpBC,OAAO;QACPC,OAAO;IACT;IACAC,UAAU;QACRH,oBAAoB;QACpBC,OAAO;QACPC,OAAO;IACT;AACF;AAEO,eAAeL,SAASO,IAAa,EAAEC,WAAmB;IAC/D,IAAIC,SAAsCC;IAC1C,IAAIH,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI,CAACI,OAAOC,MAAM,CAACX,gBAAgBY,IAAI,CAAC,CAACC,WAAaA,SAAST,KAAK,KAAKE,IAAI,CAAC,OAAO,GAAG;YACtF,MAAM,IAAIQ,MACR,CAAC,8CAA8C,EAAEJ,OAAOC,MAAM,CAACX,gBAC5De,GAAG,CAAC,CAACF,WAAaA,SAAST,KAAK,EAChCY,IAAI,CAAC,MAAM,CAAC;QAEnB;QACAR,SAASF,IAAI,CAAC,OAAO;IACvB,OAAO;QACLE,SAAS,MAAMS,SAAEC,MAAM,CAA6C;YAClEC,cAAc;YACdC,SAAS,CAAC,iBAAiB,CAAC;YAC5BC,SAAS;gBACP;oBAAEC,OAAO;oBAAWlB,OAAO;gBAAU;gBACrC;oBAAEkB,OAAO;oBAAYlB,OAAO;gBAAW;aACxC;QACH;QACA,IAAIa,SAAEM,QAAQ,CAACf,SAASgB,QAAQC,IAAI,CAAC;IACvC;IAEA,MAAMZ,WAAWb,cAAc,CAACQ,OAAO;IAEvC,IAAIkB,QAAqCjB;IACzC,MAAMkB,eAAe,CAAC,EAAEd,SAASX,kBAAkB,CAAC,EAClDK,gBAAgB,MAAM,CAAC,QAAQ,EAAEqB,uBAAuB,CAAC,GAAGC,IAAAA,gBAAO,EAACtB,aACrE,CAAC;IAEF,IAAID,IAAI,CAAC,0BAA0B,EAAE;QACnCoB,QAAQC;IACV,OAAO,IAAIrB,IAAI,CAAC,yBAAyB,EAAE;QACzCoB,QAAQpB,IAAI,CAAC,yBAAyB;IACxC,OAAO;QACLoB,QAAQ,MAAMT,SAAEa,IAAI,CAAC;YACnBX,cAAcQ;YACdP,SAAS,CAAC,MAAM,EAAEP,SAASV,KAAK,CAAC4B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;QACpE;QACA,IAAId,SAAEM,QAAQ,CAACG,QAAQF,QAAQC,IAAI,CAAC;IACtC;IAEA,OAAO;QACLO,MAAMnB,SAAST,KAAK;QACpBsB;IACF;AACF;AAEA,SAASE;IACP,OAAO,AAACK,CAAAA,KAAKC,MAAM,KAAKD,KAAKE,GAAG,CAAC,IAAI,EAAC,EAAGC,OAAO,CAAC;AACnD"}
@@ -0,0 +1,4 @@
1
+ import type { ProjectTemplate } from '../types.js';
2
+ export declare function validateTemplate(templateName: string): boolean;
3
+ export declare function getValidTemplates(): ProjectTemplate[];
4
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CA6CrD"}
@@ -9,14 +9,14 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- validateTemplate: function() {
13
- return validateTemplate;
14
- },
15
12
  getValidTemplates: function() {
16
13
  return getValidTemplates;
14
+ },
15
+ validateTemplate: function() {
16
+ return validateTemplate;
17
17
  }
18
18
  });
19
- const _log = require("../utils/log");
19
+ const _log = require("../utils/log.js");
20
20
  function validateTemplate(templateName) {
21
21
  const validTemplates = getValidTemplates();
22
22
  if (!validTemplates.map((t)=>t.name).includes(templateName)) {
@@ -28,43 +28,49 @@ function validateTemplate(templateName) {
28
28
  }
29
29
  function getValidTemplates() {
30
30
  return [
31
+ {
32
+ name: 'blank-3.0',
33
+ type: 'starter',
34
+ description: 'Blank 3.0 Template',
35
+ url: 'https://github.com/payloadcms/payload/templates/blank-3.0'
36
+ },
31
37
  {
32
38
  name: 'blank',
33
- description: 'Blank Template',
34
39
  type: 'starter',
40
+ description: 'Blank Template',
35
41
  url: 'https://github.com/payloadcms/payload/templates/blank'
36
42
  },
37
43
  {
38
44
  name: 'website',
39
- description: 'Website Template',
40
45
  type: 'starter',
46
+ description: 'Website Template',
41
47
  url: 'https://github.com/payloadcms/payload/templates/website'
42
48
  },
43
49
  {
44
50
  name: 'ecommerce',
45
- description: 'E-commerce Template',
46
51
  type: 'starter',
52
+ description: 'E-commerce Template',
47
53
  url: 'https://github.com/payloadcms/payload/templates/ecommerce'
48
54
  },
49
55
  {
50
56
  name: 'plugin',
51
- description: 'Template for creating a Payload plugin',
52
57
  type: 'plugin',
58
+ description: 'Template for creating a Payload plugin',
53
59
  url: 'https://github.com/payloadcms/payload-plugin-template'
54
60
  },
55
61
  {
56
62
  name: 'payload-demo',
57
- description: 'Payload demo site at https://demo.payloadcms.com',
58
63
  type: 'starter',
64
+ description: 'Payload demo site at https://demo.payloadcms.com',
59
65
  url: 'https://github.com/payloadcms/public-demo'
60
66
  },
61
67
  {
62
68
  name: 'payload-website',
63
- description: 'Payload website CMS at https://payloadcms.com',
64
69
  type: 'starter',
70
+ description: 'Payload website CMS at https://payloadcms.com',
65
71
  url: 'https://github.com/payloadcms/website-cms'
66
72
  }
67
73
  ];
68
74
  }
69
75
 
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGVtcGxhdGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvamVjdFRlbXBsYXRlIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGVycm9yLCBpbmZvIH0gZnJvbSAnLi4vdXRpbHMvbG9nJ1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB2YWxpZFRlbXBsYXRlcyA9IGdldFZhbGlkVGVtcGxhdGVzKClcbiAgaWYgKCF2YWxpZFRlbXBsYXRlcy5tYXAoKHQpID0+IHQubmFtZSkuaW5jbHVkZXModGVtcGxhdGVOYW1lKSkge1xuICAgIGVycm9yKGAnJHt0ZW1wbGF0ZU5hbWV9JyBpcyBub3QgYSB2YWxpZCB0ZW1wbGF0ZS5gKVxuICAgIGluZm8oYFZhbGlkIHRlbXBsYXRlczogJHt2YWxpZFRlbXBsYXRlcy5tYXAoKHQpID0+IHQubmFtZSkuam9pbignLCAnKX1gKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZFRlbXBsYXRlcygpOiBQcm9qZWN0VGVtcGxhdGVbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbmFtZTogJ2JsYW5rJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmxhbmsgVGVtcGxhdGUnLFxuICAgICAgdHlwZTogJ3N0YXJ0ZXInLFxuICAgICAgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC90ZW1wbGF0ZXMvYmxhbmsnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3dlYnNpdGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdXZWJzaXRlIFRlbXBsYXRlJyxcbiAgICAgIHR5cGU6ICdzdGFydGVyJyxcbiAgICAgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvdGVtcGxhdGVzL3dlYnNpdGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Vjb21tZXJjZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0UtY29tbWVyY2UgVGVtcGxhdGUnLFxuICAgICAgdHlwZTogJ3N0YXJ0ZXInLFxuICAgICAgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC90ZW1wbGF0ZXMvZWNvbW1lcmNlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwbHVnaW4nLFxuICAgICAgZGVzY3JpcHRpb246ICdUZW1wbGF0ZSBmb3IgY3JlYXRpbmcgYSBQYXlsb2FkIHBsdWdpbicsXG4gICAgICB0eXBlOiAncGx1Z2luJyxcbiAgICAgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQtcGx1Z2luLXRlbXBsYXRlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYXlsb2FkLWRlbW8nLFxuICAgICAgZGVzY3JpcHRpb246ICdQYXlsb2FkIGRlbW8gc2l0ZSBhdCBodHRwczovL2RlbW8ucGF5bG9hZGNtcy5jb20nLFxuICAgICAgdHlwZTogJ3N0YXJ0ZXInLFxuICAgICAgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcHVibGljLWRlbW8nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3BheWxvYWQtd2Vic2l0ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BheWxvYWQgd2Vic2l0ZSBDTVMgYXQgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbScsXG4gICAgICB0eXBlOiAnc3RhcnRlcicsXG4gICAgICB1cmw6ICdodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy93ZWJzaXRlLWNtcycsXG4gICAgfSxcbiAgXVxufVxuIl0sIm5hbWVzIjpbInZhbGlkYXRlVGVtcGxhdGUiLCJnZXRWYWxpZFRlbXBsYXRlcyIsInRlbXBsYXRlTmFtZSIsInZhbGlkVGVtcGxhdGVzIiwibWFwIiwidCIsIm5hbWUiLCJpbmNsdWRlcyIsImVycm9yIiwiaW5mbyIsImpvaW4iLCJkZXNjcmlwdGlvbiIsInR5cGUiLCJ1cmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBSWdCQSxnQkFBZ0I7ZUFBaEJBOztJQVVBQyxpQkFBaUI7ZUFBakJBOzs7cUJBWlk7QUFFckIsU0FBU0QsaUJBQWlCRSxZQUFvQjtJQUNuRCxNQUFNQyxpQkFBaUJGO0lBQ3ZCLElBQUksQ0FBQ0UsZUFBZUMsR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVDLElBQUksRUFBRUMsUUFBUSxDQUFDTCxlQUFlO1FBQzdETSxJQUFBQSxVQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQUVOLGFBQWEsMEJBQTBCLENBQUM7UUFDbERPLElBQUFBLFNBQUksRUFBQyxDQUFDLGlCQUFpQixFQUFFTixlQUFlQyxHQUFHLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsSUFBSSxFQUFFSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZFLE9BQU87SUFDVDtJQUNBLE9BQU87QUFDVDtBQUVPLFNBQVNUO0lBQ2QsT0FBTztRQUNMO1lBQ0VLLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtRQUNBO1lBQ0VQLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtRQUNBO1lBQ0VQLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtRQUNBO1lBQ0VQLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtRQUNBO1lBQ0VQLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtRQUNBO1lBQ0VQLE1BQU07WUFDTkssYUFBYTtZQUNiQyxNQUFNO1lBQ05DLEtBQUs7UUFDUDtLQUNEO0FBQ0gifQ==
76
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/templates.ts"],"sourcesContent":["import type { ProjectTemplate } from '../types.js'\n\nimport { error, info } from '../utils/log.js'\n\nexport function validateTemplate(templateName: string): boolean {\n const validTemplates = getValidTemplates()\n if (!validTemplates.map((t) => t.name).includes(templateName)) {\n error(`'${templateName}' is not a valid template.`)\n info(`Valid templates: ${validTemplates.map((t) => t.name).join(', ')}`)\n return false\n }\n return true\n}\n\nexport function getValidTemplates(): ProjectTemplate[] {\n return [\n {\n name: 'blank-3.0',\n type: 'starter',\n description: 'Blank 3.0 Template',\n url: 'https://github.com/payloadcms/payload/templates/blank-3.0',\n },\n {\n name: 'blank',\n type: 'starter',\n description: 'Blank Template',\n url: 'https://github.com/payloadcms/payload/templates/blank',\n },\n {\n name: 'website',\n type: 'starter',\n description: 'Website Template',\n url: 'https://github.com/payloadcms/payload/templates/website',\n },\n {\n name: 'ecommerce',\n type: 'starter',\n description: 'E-commerce Template',\n url: 'https://github.com/payloadcms/payload/templates/ecommerce',\n },\n {\n name: 'plugin',\n type: 'plugin',\n description: 'Template for creating a Payload plugin',\n url: 'https://github.com/payloadcms/payload-plugin-template',\n },\n {\n name: 'payload-demo',\n type: 'starter',\n description: 'Payload demo site at https://demo.payloadcms.com',\n url: 'https://github.com/payloadcms/public-demo',\n },\n {\n name: 'payload-website',\n type: 'starter',\n description: 'Payload website CMS at https://payloadcms.com',\n url: 'https://github.com/payloadcms/website-cms',\n },\n ]\n}\n"],"names":["getValidTemplates","validateTemplate","templateName","validTemplates","map","t","name","includes","error","info","join","type","description","url"],"mappings":";;;;;;;;;;;IAcgBA,iBAAiB;eAAjBA;;IAVAC,gBAAgB;eAAhBA;;;qBAFY;AAErB,SAASA,iBAAiBC,YAAoB;IACnD,MAAMC,iBAAiBH;IACvB,IAAI,CAACG,eAAeC,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEC,QAAQ,CAACL,eAAe;QAC7DM,IAAAA,UAAK,EAAC,CAAC,CAAC,EAAEN,aAAa,0BAA0B,CAAC;QAClDO,IAAAA,SAAI,EAAC,CAAC,iBAAiB,EAAEN,eAAeC,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,EAAEI,IAAI,CAAC,MAAM,CAAC;QACvE,OAAO;IACT;IACA,OAAO;AACT;AAEO,SAASV;IACd,OAAO;QACL;YACEM,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;QACA;YACEP,MAAM;YACNK,MAAM;YACNC,aAAa;YACbC,KAAK;QACP;KACD;AACH"}
@@ -0,0 +1,12 @@
1
+ export declare const withPayloadImportStatement = "import { withPayload } from '@payloadcms/next'\n";
2
+ export declare const wrapNextConfig: (args: {
3
+ nextConfigPath: string;
4
+ }) => void;
5
+ /**
6
+ * Parses config content with AST and wraps it with withPayload function
7
+ */
8
+ export declare function parseAndModifyConfigContent(content: string): {
9
+ modifiedConfigContent: string;
10
+ success: boolean;
11
+ };
12
+ //# sourceMappingURL=wrap-next-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-next-config.d.ts","sourceRoot":"","sources":["../../src/lib/wrap-next-config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B,qDAAqD,CAAA;AAE5F,eAAO,MAAM,cAAc,SAAU;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,SAU9D,CAAA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAgDA"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ parseAndModifyConfigContent: function() {
13
+ return parseAndModifyConfigContent;
14
+ },
15
+ withPayloadImportStatement: function() {
16
+ return withPayloadImportStatement;
17
+ },
18
+ wrapNextConfig: function() {
19
+ return wrapNextConfig;
20
+ }
21
+ });
22
+ const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
23
+ const _esprima = require("esprima");
24
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
25
+ const _log = require("../utils/log.js");
26
+ function _interop_require_default(obj) {
27
+ return obj && obj.__esModule ? obj : {
28
+ default: obj
29
+ };
30
+ }
31
+ const withPayloadImportStatement = `import { withPayload } from '@payloadcms/next'\n`;
32
+ const wrapNextConfig = (args)=>{
33
+ const { nextConfigPath } = args;
34
+ const configContent = _fs.default.readFileSync(nextConfigPath, 'utf8');
35
+ const { modifiedConfigContent: newConfig, success } = parseAndModifyConfigContent(configContent);
36
+ if (!success) {
37
+ return;
38
+ }
39
+ _fs.default.writeFileSync(nextConfigPath, newConfig);
40
+ };
41
+ function parseAndModifyConfigContent(content) {
42
+ content = withPayloadImportStatement + content;
43
+ const ast = (0, _esprima.parseModule)(content, {
44
+ loc: true
45
+ });
46
+ const exportDefaultDeclaration = ast.body.find((p)=>p.type === 'ExportDefaultDeclaration');
47
+ const exportNamedDeclaration = ast.body.find((p)=>p.type === 'ExportNamedDeclaration');
48
+ if (!exportDefaultDeclaration && !exportNamedDeclaration) {
49
+ throw new Error('Could not find ExportDefaultDeclaration in next.config.js');
50
+ }
51
+ if (exportDefaultDeclaration && exportDefaultDeclaration.declaration?.loc) {
52
+ const modifiedConfigContent = insertBeforeAndAfter(content, exportDefaultDeclaration.declaration.loc);
53
+ return {
54
+ modifiedConfigContent,
55
+ success: true
56
+ };
57
+ } else if (exportNamedDeclaration) {
58
+ const exportSpecifier = exportNamedDeclaration.specifiers.find((s)=>s.type === 'ExportSpecifier' && s.exported?.name === 'default' && s.local?.type === 'Identifier' && s.local?.name);
59
+ if (exportSpecifier) {
60
+ (0, _log.warning)('Could not automatically wrap next.config.js with withPayload.');
61
+ (0, _log.warning)('Automatic wrapping of named exports as default not supported yet.');
62
+ warnUserWrapNotSuccessful();
63
+ return {
64
+ modifiedConfigContent: content,
65
+ success: false
66
+ };
67
+ }
68
+ }
69
+ (0, _log.warning)('Could not automatically wrap next.config.js with withPayload.');
70
+ warnUserWrapNotSuccessful();
71
+ return {
72
+ modifiedConfigContent: content,
73
+ success: false
74
+ };
75
+ }
76
+ function warnUserWrapNotSuccessful() {
77
+ // Output directions for user to update next.config.js
78
+ const withPayloadMessage = `
79
+
80
+ ${_chalk.default.bold(`Please manually wrap your existing next.config.js with the withPayload function. Here is an example:`)}
81
+
82
+ import withPayload from '@payloadcms/next/withPayload'
83
+
84
+ const nextConfig = {
85
+ // Your Next.js config here
86
+ }
87
+
88
+ export default withPayload(nextConfig)
89
+
90
+ `;
91
+ (0, _log.log)(withPayloadMessage);
92
+ }
93
+ function insertBeforeAndAfter(content, loc) {
94
+ const { end, start } = loc;
95
+ const lines = content.split('\n');
96
+ const insert = (line, column, text)=>{
97
+ return line.slice(0, column) + text + line.slice(column);
98
+ };
99
+ // insert ) after end
100
+ lines[end.line - 1] = insert(lines[end.line - 1], end.column, ')');
101
+ // insert withPayload before start
102
+ if (start.line === end.line) {
103
+ lines[end.line - 1] = insert(lines[end.line - 1], start.column, 'withPayload(');
104
+ } else {
105
+ lines[start.line - 1] = insert(lines[start.line - 1], start.column, 'withPayload(');
106
+ }
107
+ return lines.join('\n');
108
+ }
109
+
110
+ //# sourceMappingURL=wrap-next-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/wrap-next-config.ts"],"sourcesContent":["import chalk from 'chalk'\nimport { parseModule } from 'esprima'\nimport fs from 'fs'\n\nimport { warning } from '../utils/log.js'\nimport { log } from '../utils/log.js'\n\nexport const withPayloadImportStatement = `import { withPayload } from '@payloadcms/next'\\n`\n\nexport const wrapNextConfig = (args: { nextConfigPath: string }) => {\n const { nextConfigPath } = args\n const configContent = fs.readFileSync(nextConfigPath, 'utf8')\n const { modifiedConfigContent: newConfig, success } = parseAndModifyConfigContent(configContent)\n\n if (!success) {\n return\n }\n\n fs.writeFileSync(nextConfigPath, newConfig)\n}\n\n/**\n * Parses config content with AST and wraps it with withPayload function\n */\nexport function parseAndModifyConfigContent(content: string): {\n modifiedConfigContent: string\n success: boolean\n} {\n content = withPayloadImportStatement + content\n const ast = parseModule(content, { loc: true })\n const exportDefaultDeclaration = ast.body.find((p) => p.type === 'ExportDefaultDeclaration') as\n | Directive\n | undefined\n\n const exportNamedDeclaration = ast.body.find((p) => p.type === 'ExportNamedDeclaration') as\n | ExportNamedDeclaration\n | undefined\n\n if (!exportDefaultDeclaration && !exportNamedDeclaration) {\n throw new Error('Could not find ExportDefaultDeclaration in next.config.js')\n }\n\n if (exportDefaultDeclaration && exportDefaultDeclaration.declaration?.loc) {\n const modifiedConfigContent = insertBeforeAndAfter(\n content,\n exportDefaultDeclaration.declaration.loc,\n )\n return { modifiedConfigContent, success: true }\n } else if (exportNamedDeclaration) {\n const exportSpecifier = exportNamedDeclaration.specifiers.find(\n (s) =>\n s.type === 'ExportSpecifier' &&\n s.exported?.name === 'default' &&\n s.local?.type === 'Identifier' &&\n s.local?.name,\n )\n\n if (exportSpecifier) {\n warning('Could not automatically wrap next.config.js with withPayload.')\n warning('Automatic wrapping of named exports as default not supported yet.')\n\n warnUserWrapNotSuccessful()\n return {\n modifiedConfigContent: content,\n success: false,\n }\n }\n }\n\n warning('Could not automatically wrap next.config.js with withPayload.')\n warnUserWrapNotSuccessful()\n return {\n modifiedConfigContent: content,\n success: false,\n }\n}\n\nfunction warnUserWrapNotSuccessful() {\n // Output directions for user to update next.config.js\n const withPayloadMessage = `\n\n ${chalk.bold(`Please manually wrap your existing next.config.js with the withPayload function. Here is an example:`)}\n\n import withPayload from '@payloadcms/next/withPayload'\n\n const nextConfig = {\n // Your Next.js config here\n }\n\n export default withPayload(nextConfig)\n\n`\n\n log(withPayloadMessage)\n}\n\ntype Directive = {\n declaration?: {\n loc: Loc\n }\n}\n\ntype ExportNamedDeclaration = {\n declaration: null\n loc: Loc\n specifiers: {\n exported: {\n loc: Loc\n name: string\n type: string\n }\n loc: Loc\n local: {\n loc: Loc\n name: string\n type: string\n }\n type: string\n }[]\n type: string\n}\n\ntype Loc = {\n end: { column: number; line: number }\n start: { column: number; line: number }\n}\n\nfunction insertBeforeAndAfter(content: string, loc: Loc) {\n const { end, start } = loc\n const lines = content.split('\\n')\n\n const insert = (line: string, column: number, text: string) => {\n return line.slice(0, column) + text + line.slice(column)\n }\n\n // insert ) after end\n lines[end.line - 1] = insert(lines[end.line - 1], end.column, ')')\n // insert withPayload before start\n if (start.line === end.line) {\n lines[end.line - 1] = insert(lines[end.line - 1], start.column, 'withPayload(')\n } else {\n lines[start.line - 1] = insert(lines[start.line - 1], start.column, 'withPayload(')\n }\n\n return lines.join('\\n')\n}\n"],"names":["parseAndModifyConfigContent","withPayloadImportStatement","wrapNextConfig","args","nextConfigPath","configContent","fs","readFileSync","modifiedConfigContent","newConfig","success","writeFileSync","content","ast","parseModule","loc","exportDefaultDeclaration","body","find","p","type","exportNamedDeclaration","Error","declaration","insertBeforeAndAfter","exportSpecifier","specifiers","s","exported","name","local","warning","warnUserWrapNotSuccessful","withPayloadMessage","chalk","bold","log","end","start","lines","split","insert","line","column","text","slice","join"],"mappings":";;;;;;;;;;;IAwBgBA,2BAA2B;eAA3BA;;IAjBHC,0BAA0B;eAA1BA;;IAEAC,cAAc;eAAdA;;;8DATK;yBACU;2DACb;qBAES;;;;;;AAGjB,MAAMD,6BAA6B,CAAC,gDAAgD,CAAC;AAErF,MAAMC,iBAAiB,CAACC;IAC7B,MAAM,EAAEC,cAAc,EAAE,GAAGD;IAC3B,MAAME,gBAAgBC,WAAE,CAACC,YAAY,CAACH,gBAAgB;IACtD,MAAM,EAAEI,uBAAuBC,SAAS,EAAEC,OAAO,EAAE,GAAGV,4BAA4BK;IAElF,IAAI,CAACK,SAAS;QACZ;IACF;IAEAJ,WAAE,CAACK,aAAa,CAACP,gBAAgBK;AACnC;AAKO,SAAST,4BAA4BY,OAAe;IAIzDA,UAAUX,6BAA6BW;IACvC,MAAMC,MAAMC,IAAAA,oBAAW,EAACF,SAAS;QAAEG,KAAK;IAAK;IAC7C,MAAMC,2BAA2BH,IAAII,IAAI,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAK;IAIjE,MAAMC,yBAAyBR,IAAII,IAAI,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAK;IAI/D,IAAI,CAACJ,4BAA4B,CAACK,wBAAwB;QACxD,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAIN,4BAA4BA,yBAAyBO,WAAW,EAAER,KAAK;QACzE,MAAMP,wBAAwBgB,qBAC5BZ,SACAI,yBAAyBO,WAAW,CAACR,GAAG;QAE1C,OAAO;YAAEP;YAAuBE,SAAS;QAAK;IAChD,OAAO,IAAIW,wBAAwB;QACjC,MAAMI,kBAAkBJ,uBAAuBK,UAAU,CAACR,IAAI,CAC5D,CAACS,IACCA,EAAEP,IAAI,KAAK,qBACXO,EAAEC,QAAQ,EAAEC,SAAS,aACrBF,EAAEG,KAAK,EAAEV,SAAS,gBAClBO,EAAEG,KAAK,EAAED;QAGb,IAAIJ,iBAAiB;YACnBM,IAAAA,YAAO,EAAC;YACRA,IAAAA,YAAO,EAAC;YAERC;YACA,OAAO;gBACLxB,uBAAuBI;gBACvBF,SAAS;YACX;QACF;IACF;IAEAqB,IAAAA,YAAO,EAAC;IACRC;IACA,OAAO;QACLxB,uBAAuBI;QACvBF,SAAS;IACX;AACF;AAEA,SAASsB;IACP,sDAAsD;IACtD,MAAMC,qBAAqB,CAAC;;EAE5B,EAAEC,cAAK,CAACC,IAAI,CAAC,CAAC,oGAAoG,CAAC,EAAE;;;;;;;;;;AAUvH,CAAC;IAECC,IAAAA,QAAG,EAACH;AACN;AAiCA,SAAST,qBAAqBZ,OAAe,EAAEG,GAAQ;IACrD,MAAM,EAAEsB,GAAG,EAAEC,KAAK,EAAE,GAAGvB;IACvB,MAAMwB,QAAQ3B,QAAQ4B,KAAK,CAAC;IAE5B,MAAMC,SAAS,CAACC,MAAcC,QAAgBC;QAC5C,OAAOF,KAAKG,KAAK,CAAC,GAAGF,UAAUC,OAAOF,KAAKG,KAAK,CAACF;IACnD;IAEA,qBAAqB;IACrBJ,KAAK,CAACF,IAAIK,IAAI,GAAG,EAAE,GAAGD,OAAOF,KAAK,CAACF,IAAIK,IAAI,GAAG,EAAE,EAAEL,IAAIM,MAAM,EAAE;IAC9D,kCAAkC;IAClC,IAAIL,MAAMI,IAAI,KAAKL,IAAIK,IAAI,EAAE;QAC3BH,KAAK,CAACF,IAAIK,IAAI,GAAG,EAAE,GAAGD,OAAOF,KAAK,CAACF,IAAIK,IAAI,GAAG,EAAE,EAAEJ,MAAMK,MAAM,EAAE;IAClE,OAAO;QACLJ,KAAK,CAACD,MAAMI,IAAI,GAAG,EAAE,GAAGD,OAAOF,KAAK,CAACD,MAAMI,IAAI,GAAG,EAAE,EAAEJ,MAAMK,MAAM,EAAE;IACtE;IAEA,OAAOJ,MAAMO,IAAI,CAAC;AACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wrap-next-config.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-next-config.spec.d.ts","sourceRoot":"","sources":["../../src/lib/wrap-next-config.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _wrapnextconfig = require("./wrap-next-config.js");
6
+ const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
7
+ function _getRequireWildcardCache(nodeInterop) {
8
+ if (typeof WeakMap !== "function") return null;
9
+ var cacheBabelInterop = new WeakMap();
10
+ var cacheNodeInterop = new WeakMap();
11
+ return (_getRequireWildcardCache = function(nodeInterop) {
12
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
13
+ })(nodeInterop);
14
+ }
15
+ function _interop_require_wildcard(obj, nodeInterop) {
16
+ if (!nodeInterop && obj && obj.__esModule) {
17
+ return obj;
18
+ }
19
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
20
+ return {
21
+ default: obj
22
+ };
23
+ }
24
+ var cache = _getRequireWildcardCache(nodeInterop);
25
+ if (cache && cache.has(obj)) {
26
+ return cache.get(obj);
27
+ }
28
+ var newObj = {
29
+ __proto__: null
30
+ };
31
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
32
+ for(var key in obj){
33
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
34
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
35
+ if (desc && (desc.get || desc.set)) {
36
+ Object.defineProperty(newObj, key, desc);
37
+ } else {
38
+ newObj[key] = obj[key];
39
+ }
40
+ }
41
+ }
42
+ newObj.default = obj;
43
+ if (cache) {
44
+ cache.set(obj, newObj);
45
+ }
46
+ return newObj;
47
+ }
48
+ const defaultNextConfig = `/** @type {import('next').NextConfig} */
49
+ const nextConfig = {};
50
+
51
+ export default nextConfig;
52
+ `;
53
+ const nextConfigWithFunc = `const nextConfig = {
54
+ // Your Next.js config here
55
+ }
56
+
57
+ export default someFunc(nextConfig)
58
+ `;
59
+ const nextConfigWithFuncMultiline = `const nextConfig = {
60
+ // Your Next.js config here
61
+ }
62
+
63
+ export default someFunc(
64
+ nextConfig
65
+ )
66
+ `;
67
+ const nextConfigExportNamedDefault = `const nextConfig = {
68
+ // Your Next.js config here
69
+ }
70
+ const wrapped = someFunc(asdf)
71
+ export { wrapped as default }
72
+ `;
73
+ describe('parseAndInsertWithPayload', ()=>{
74
+ it('should parse the default next config', ()=>{
75
+ const { modifiedConfigContent } = (0, _wrapnextconfig.parseAndModifyConfigContent)(defaultNextConfig);
76
+ expect(modifiedConfigContent).toContain(_wrapnextconfig.withPayloadImportStatement);
77
+ expect(modifiedConfigContent).toContain('withPayload(nextConfig)');
78
+ });
79
+ it('should parse the config with a function', ()=>{
80
+ const { modifiedConfigContent } = (0, _wrapnextconfig.parseAndModifyConfigContent)(nextConfigWithFunc);
81
+ expect(modifiedConfigContent).toContain('withPayload(someFunc(nextConfig))');
82
+ });
83
+ it('should parse the config with a function on a new line', ()=>{
84
+ const { modifiedConfigContent } = (0, _wrapnextconfig.parseAndModifyConfigContent)(nextConfigWithFuncMultiline);
85
+ expect(modifiedConfigContent).toContain(_wrapnextconfig.withPayloadImportStatement);
86
+ expect(modifiedConfigContent).toMatch(/withPayload\(someFunc\(\n nextConfig\n\)\)/);
87
+ });
88
+ // Unsupported: export { wrapped as default }
89
+ it('should give warning with a named export as default', ()=>{
90
+ const warnLogSpy = jest.spyOn(_prompts.log, 'warn').mockImplementation(()=>{});
91
+ const { modifiedConfigContent, success } = (0, _wrapnextconfig.parseAndModifyConfigContent)(nextConfigExportNamedDefault);
92
+ expect(modifiedConfigContent).toContain(_wrapnextconfig.withPayloadImportStatement);
93
+ expect(success).toBe(false);
94
+ expect(warnLogSpy).toHaveBeenCalledWith(expect.stringContaining('Could not automatically wrap'));
95
+ });
96
+ });
97
+
98
+ //# sourceMappingURL=wrap-next-config.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/wrap-next-config.spec.ts"],"sourcesContent":["import { parseAndModifyConfigContent, withPayloadImportStatement } from './wrap-next-config.js'\nimport * as p from '@clack/prompts'\n\nconst defaultNextConfig = `/** @type {import('next').NextConfig} */\nconst nextConfig = {};\n\nexport default nextConfig;\n`\n\nconst nextConfigWithFunc = `const nextConfig = {\n // Your Next.js config here\n}\n\nexport default someFunc(nextConfig)\n`\nconst nextConfigWithFuncMultiline = `const nextConfig = {\n // Your Next.js config here\n}\n\nexport default someFunc(\n nextConfig\n)\n`\n\nconst nextConfigExportNamedDefault = `const nextConfig = {\n // Your Next.js config here\n}\nconst wrapped = someFunc(asdf)\nexport { wrapped as default }\n`\n\ndescribe('parseAndInsertWithPayload', () => {\n it('should parse the default next config', () => {\n const { modifiedConfigContent } = parseAndModifyConfigContent(defaultNextConfig)\n expect(modifiedConfigContent).toContain(withPayloadImportStatement)\n expect(modifiedConfigContent).toContain('withPayload(nextConfig)')\n })\n it('should parse the config with a function', () => {\n const { modifiedConfigContent } = parseAndModifyConfigContent(nextConfigWithFunc)\n expect(modifiedConfigContent).toContain('withPayload(someFunc(nextConfig))')\n })\n\n it('should parse the config with a function on a new line', () => {\n const { modifiedConfigContent } = parseAndModifyConfigContent(nextConfigWithFuncMultiline)\n expect(modifiedConfigContent).toContain(withPayloadImportStatement)\n expect(modifiedConfigContent).toMatch(/withPayload\\(someFunc\\(\\n nextConfig\\n\\)\\)/)\n })\n\n // Unsupported: export { wrapped as default }\n it('should give warning with a named export as default', () => {\n const warnLogSpy = jest.spyOn(p.log, 'warn').mockImplementation(() => {})\n\n const { modifiedConfigContent, success } = parseAndModifyConfigContent(\n nextConfigExportNamedDefault,\n )\n expect(modifiedConfigContent).toContain(withPayloadImportStatement)\n expect(success).toBe(false)\n\n expect(warnLogSpy).toHaveBeenCalledWith(expect.stringContaining('Could not automatically wrap'))\n })\n})\n"],"names":["defaultNextConfig","nextConfigWithFunc","nextConfigWithFuncMultiline","nextConfigExportNamedDefault","describe","it","modifiedConfigContent","parseAndModifyConfigContent","expect","toContain","withPayloadImportStatement","toMatch","warnLogSpy","jest","spyOn","p","log","mockImplementation","success","toBe","toHaveBeenCalledWith","stringContaining"],"mappings":";;;;gCAAwE;iEACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnB,MAAMA,oBAAoB,CAAC;;;;AAI3B,CAAC;AAED,MAAMC,qBAAqB,CAAC;;;;;AAK5B,CAAC;AACD,MAAMC,8BAA8B,CAAC;;;;;;;AAOrC,CAAC;AAED,MAAMC,+BAA+B,CAAC;;;;;AAKtC,CAAC;AAEDC,SAAS,6BAA6B;IACpCC,GAAG,wCAAwC;QACzC,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,IAAAA,2CAA2B,EAACP;QAC9DQ,OAAOF,uBAAuBG,SAAS,CAACC,0CAA0B;QAClEF,OAAOF,uBAAuBG,SAAS,CAAC;IAC1C;IACAJ,GAAG,2CAA2C;QAC5C,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,IAAAA,2CAA2B,EAACN;QAC9DO,OAAOF,uBAAuBG,SAAS,CAAC;IAC1C;IAEAJ,GAAG,yDAAyD;QAC1D,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,IAAAA,2CAA2B,EAACL;QAC9DM,OAAOF,uBAAuBG,SAAS,CAACC,0CAA0B;QAClEF,OAAOF,uBAAuBK,OAAO,CAAC;IACxC;IAEA,6CAA6C;IAC7CN,GAAG,sDAAsD;QACvD,MAAMO,aAAaC,KAAKC,KAAK,CAACC,SAAEC,GAAG,EAAE,QAAQC,kBAAkB,CAAC,KAAO;QAEvE,MAAM,EAAEX,qBAAqB,EAAEY,OAAO,EAAE,GAAGX,IAAAA,2CAA2B,EACpEJ;QAEFK,OAAOF,uBAAuBG,SAAS,CAACC,0CAA0B;QAClEF,OAAOU,SAASC,IAAI,CAAC;QAErBX,OAAOI,YAAYQ,oBAAoB,CAACZ,OAAOa,gBAAgB,CAAC;IAClE;AACF"}
@@ -0,0 +1,10 @@
1
+ import type { CliArgs, ProjectTemplate } from '../types.js';
2
+ /** Parse and swap .env.example values and write .env */
3
+ export declare function writeEnvFile(args: {
4
+ cliArgs: CliArgs;
5
+ databaseUri: string;
6
+ payloadSecret: string;
7
+ projectDir: string;
8
+ template?: ProjectTemplate;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=write-env-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-env-file.d.ts","sourceRoot":"","sources":["../../src/lib/write-env-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI3D,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ChB"}