eddev 0.2.0-beta.3 → 0.2.0-beta.32

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 (130) hide show
  1. package/build/build-favicon.d.ts +1 -0
  2. package/build/build-favicon.js +71 -0
  3. package/build/create-serverless-dev-worker.d.ts +3 -0
  4. package/build/create-serverless-dev-worker.js +99 -0
  5. package/build/get-webpack-config.js +24 -11
  6. package/build/reporter.js +0 -109
  7. package/build/serverless/create-next-app.d.ts +2 -0
  8. package/build/serverless/create-next-app.js +309 -77
  9. package/build/state/serverless-state.d.ts +26 -0
  10. package/build/state/serverless-state.js +2 -0
  11. package/build/workers/codegen-worker-script.js +2 -0
  12. package/build/workers/serverless-worker-dev-script.d.ts +1 -0
  13. package/build/workers/serverless-worker-dev-script.js +21 -0
  14. package/cli/build.dev.js +30 -7
  15. package/cli/build.prod.js +5 -0
  16. package/cli/cli.js +26 -18
  17. package/cli/display/components/DevCLIDisplay.d.ts +3 -0
  18. package/cli/display/components/DevCLIDisplay.js +20 -1
  19. package/cli/display/components/ServerlessDisplay.d.ts +9 -0
  20. package/cli/display/components/ServerlessDisplay.js +68 -0
  21. package/config/config-schema.d.ts +55 -0
  22. package/config/config-schema.js +19 -0
  23. package/config/create-schema-file.d.ts +1 -0
  24. package/config/create-schema-file.js +20 -0
  25. package/config/get-config.d.ts +39 -0
  26. package/config/get-config.js +32 -0
  27. package/config/index.d.ts +2 -0
  28. package/config/index.js +14 -0
  29. package/config/parse-config.d.ts +25 -0
  30. package/config/parse-config.js +8 -0
  31. package/config/print-zod-errors.d.ts +2 -0
  32. package/config/print-zod-errors.js +14 -0
  33. package/dev-ui/components/BreakpointColumnHeader.d.ts +11 -0
  34. package/dev-ui/components/BreakpointColumnHeader.js +47 -0
  35. package/dev-ui/components/BreakpointIndicator.d.ts +2 -0
  36. package/dev-ui/components/BreakpointIndicator.js +138 -0
  37. package/dev-ui/components/DevUI.d.ts +2 -0
  38. package/dev-ui/components/DevUI.js +28 -0
  39. package/dev-ui/components/Launcher.d.ts +98 -0
  40. package/dev-ui/components/Launcher.js +94 -0
  41. package/dev-ui/components/PanelWrapper.d.ts +8 -0
  42. package/dev-ui/components/PanelWrapper.js +37 -0
  43. package/dev-ui/components/ResponsiveLerpControl.d.ts +8 -0
  44. package/dev-ui/components/ResponsiveLerpControl.js +177 -0
  45. package/dev-ui/components/ResponsiveScaleEditor.d.ts +26 -0
  46. package/dev-ui/components/ResponsiveScaleEditor.js +233 -0
  47. package/dev-ui/components/atoms/Button.d.ts +47 -0
  48. package/dev-ui/components/atoms/Button.js +67 -0
  49. package/dev-ui/components/atoms/Dropdown.d.ts +13 -0
  50. package/dev-ui/components/atoms/Dropdown.js +50 -0
  51. package/dev-ui/components/atoms/NumberField.d.ts +12 -0
  52. package/dev-ui/components/atoms/NumberField.js +111 -0
  53. package/dev-ui/components/atoms/Spacer.d.ts +42 -0
  54. package/dev-ui/components/atoms/Spacer.js +8 -0
  55. package/dev-ui/components/atoms/Text.d.ts +45 -0
  56. package/dev-ui/components/atoms/Text.js +39 -0
  57. package/dev-ui/components/atoms/ToggleButton.d.ts +8 -0
  58. package/dev-ui/components/atoms/ToggleButton.js +41 -0
  59. package/dev-ui/components/atoms/Tooltip.d.ts +9 -0
  60. package/dev-ui/components/atoms/Tooltip.js +66 -0
  61. package/dev-ui/components/panels/PageDataDebugger.d.ts +2 -0
  62. package/dev-ui/components/panels/PageDataDebugger.js +30 -0
  63. package/dev-ui/components/panels/SpacingEditor.d.ts +2 -0
  64. package/dev-ui/components/panels/SpacingEditor.js +88 -0
  65. package/dev-ui/components/panels/TypographyEditor.d.ts +2 -0
  66. package/dev-ui/components/panels/TypographyEditor.js +88 -0
  67. package/dev-ui/hooks/useBreakpoint.d.ts +11 -0
  68. package/dev-ui/hooks/useBreakpoint.js +59 -0
  69. package/dev-ui/hooks/usePersistState.d.ts +1 -0
  70. package/dev-ui/hooks/usePersistState.js +36 -0
  71. package/dev-ui/hooks/useStylesheet.d.ts +4 -0
  72. package/dev-ui/hooks/useStylesheet.js +31 -0
  73. package/dev-ui/icons.d.ts +15 -0
  74. package/dev-ui/icons.js +29 -0
  75. package/dev-ui/index.d.ts +1 -0
  76. package/dev-ui/index.js +13 -0
  77. package/dev-ui/loader.d.ts +2 -0
  78. package/dev-ui/loader.js +42 -0
  79. package/dev-ui/panels.d.ts +11 -0
  80. package/dev-ui/panels.js +33 -0
  81. package/dev-ui/theme.d.ts +151 -0
  82. package/dev-ui/theme.js +50 -0
  83. package/entry/Root.d.ts +3 -1
  84. package/entry/Root.js +18 -6
  85. package/hooks/index.d.ts +1 -0
  86. package/hooks/index.js +1 -0
  87. package/hooks/rpc-client.d.ts +3 -0
  88. package/hooks/rpc-client.js +15 -0
  89. package/hooks/useAppData.js +0 -1
  90. package/hooks/useRPC.d.ts +4 -0
  91. package/hooks/useRPC.js +16 -0
  92. package/package.json +18 -8
  93. package/serverless/create-rpc-client.d.ts +20 -0
  94. package/serverless/create-rpc-client.js +20 -0
  95. package/serverless/define-api.d.ts +2 -0
  96. package/serverless/define-api.js +66 -0
  97. package/serverless/define-rpc-router.d.ts +4 -0
  98. package/serverless/define-rpc-router.js +33 -0
  99. package/serverless/error-codes.d.ts +2 -0
  100. package/serverless/error-codes.js +14 -0
  101. package/serverless/index.d.ts +3 -0
  102. package/serverless/index.js +15 -0
  103. package/serverless/rpc-client.d.ts +3 -0
  104. package/serverless/rpc-client.js +15 -0
  105. package/serverless/rpc-provider.d.ts +1 -0
  106. package/serverless/rpc-provider.js +5 -0
  107. package/serverless-template/_utils/PageMeta.tsx +44 -0
  108. package/serverless-template/_utils/ed-config.ts +5 -0
  109. package/serverless-template/_utils/fetch-wordpress-props.ts +36 -6
  110. package/serverless-template/_utils/fetch-wp.ts +16 -0
  111. package/serverless-template/global.d.ts +1 -0
  112. package/serverless-template/next.config.js +72 -53
  113. package/serverless-template/package.json +5 -3
  114. package/serverless-template/pages/_app.tsx +20 -4
  115. package/serverless-template/pages/_document.tsx +19 -0
  116. package/serverless-template/pages/api/trpc/[...trpc].ts +29 -0
  117. package/style/createStitches.d.ts +71 -1
  118. package/style/createStitches.js +151 -45
  119. package/utils/getRepoName.d.ts +2 -2
  120. package/utils/getRepoName.js +14 -52
  121. package/utils/updateEnvFile.d.ts +1 -0
  122. package/utils/updateEnvFile.js +76 -0
  123. package/cli/prepare-next.d.ts +0 -0
  124. package/cli/prepare-next.js +0 -1
  125. package/entry/entry.serverless.dev.d.ts +0 -0
  126. package/entry/entry.serverless.dev.js +0 -2
  127. package/fields/ImageWell.d.ts +0 -8
  128. package/fields/ImageWell.js +0 -64
  129. package/serverless-template/package-lock.json +0 -641
  130. package/serverless-template/pages/api/hello.ts +0 -10
@@ -10,6 +10,25 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
13
32
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
33
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
34
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -59,65 +78,159 @@ var fs_1 = require("fs");
59
78
  var manifest_blocks_1 = require("../manifests/manifest-blocks");
60
79
  var promises_1 = require("fs/promises");
61
80
  var manifest_views_1 = require("../manifests/manifest-views");
81
+ var getRepoName_1 = require("../../utils/getRepoName");
82
+ var updateEnvFile_1 = require("../../utils/updateEnvFile");
83
+ function requireConfig(dir) {
84
+ var configPath = (0, path_1.resolve)(dir, "ed.config.json");
85
+ return require(configPath);
86
+ }
62
87
  function createNextApp(opts) {
88
+ var _a;
63
89
  return __awaiter(this, void 0, void 0, function () {
64
- var serverlessDirectory;
65
- return __generator(this, function (_a) {
66
- switch (_a.label) {
90
+ var isVercel, serverlessDirectory, sendSignal, repoName, assetPaths, port;
91
+ return __generator(this, function (_b) {
92
+ switch (_b.label) {
67
93
  case 0:
68
- serverlessDirectory = (0, path_1.resolve)(opts.baseDirectory, ".serverless");
69
- // Clean first
70
- return [4 /*yield*/, clean(serverlessDirectory)
71
- // Copy the template folder
72
- ];
94
+ isVercel = process.env.VERCEL;
95
+ serverlessDirectory = isVercel ? opts.baseDirectory : (0, path_1.resolve)(opts.baseDirectory, ".serverless");
96
+ sendSignal = opts.sendSignal || (function () { });
97
+ sendSignal({ code: "preparing" });
98
+ repoName = (0, getRepoName_1.getRepoName)(opts.baseDirectory);
99
+ if (!!isVercel) return [3 /*break*/, 2];
100
+ return [4 /*yield*/, clean(serverlessDirectory)];
73
101
  case 1:
74
- // Clean first
75
- _a.sent();
76
- // Copy the template folder
77
- return [4 /*yield*/, copyTemplate(serverlessDirectory)
78
- // Update package.json
79
- ];
80
- case 2:
81
- // Copy the template folder
82
- _a.sent();
102
+ _b.sent();
103
+ _b.label = 2;
104
+ case 2:
105
+ // Copy the template folder
106
+ return [4 /*yield*/, copyTemplate(serverlessDirectory)
83
107
  // Update package.json
84
- return [4 /*yield*/, updatePackagesFile(opts.baseDirectory, serverlessDirectory)
85
- // Update packages
86
- // TODO: On vercel, can we maybe just symlink or copy node_modules?
87
- ];
108
+ ];
88
109
  case 3:
89
- // Update package.json
90
- _a.sent();
91
- // Update packages
92
- // TODO: On vercel, can we maybe just symlink or copy node_modules?
93
- return [4 /*yield*/, updatePackages(serverlessDirectory)
94
- // Symlink important files and directories
95
- ];
110
+ // Copy the template folder
111
+ _b.sent();
112
+ if (!!isVercel) return [3 /*break*/, 5];
113
+ return [4 /*yield*/, updatePackagesFile(opts.baseDirectory, serverlessDirectory)];
96
114
  case 4:
97
- // Update packages
98
- // TODO: On vercel, can we maybe just symlink or copy node_modules?
99
- _a.sent();
100
- // Symlink important files and directories
101
- return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory)
102
- // Create manifests
103
- ];
115
+ _b.sent();
116
+ _b.label = 5;
104
117
  case 5:
105
- // Symlink important files and directories
106
- _a.sent();
107
- // Create manifests
108
- initManifests(serverlessDirectory, opts.dev);
109
- if (!opts.dev) return [3 /*break*/, 7];
110
- return [4 /*yield*/, runScript(serverlessDirectory, "dev")];
118
+ assetPaths = ((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.themeAssets) || [];
119
+ if (!!isVercel) return [3 /*break*/, 12];
120
+ // Sync important files during development, as they change
121
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, [
122
+ "blocks/**/*",
123
+ "components/**/*",
124
+ "hooks/**/*",
125
+ "queries/**/*",
126
+ ".env",
127
+ "views/**/*",
128
+ "theme.css.tsx",
129
+ "types.graphql.ts",
130
+ "types.views.ts",
131
+ "types.blocks.ts",
132
+ "types.api.ts",
133
+ "utils/**/*",
134
+ "ed.config.json",
135
+ ])
136
+ // Also sync APIs into the APIs folder
137
+ ];
111
138
  case 6:
112
- _a.sent();
113
- return [3 /*break*/, 9];
139
+ // Sync important files during development, as they change
140
+ _b.sent();
141
+ // Also sync APIs into the APIs folder
142
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory, "api"), (0, path_1.join)(serverlessDirectory, "api"), ["**/*.{tsx,ts,js,jsx}"])];
114
143
  case 7:
115
- if (!opts.build) return [3 /*break*/, 9];
116
- return [4 /*yield*/, runScript(serverlessDirectory, "build")];
144
+ // Also sync APIs into the APIs folder
145
+ _b.sent();
146
+ return [4 /*yield*/, syncAPIProxies((0, path_1.join)(serverlessDirectory, "api"), (0, path_1.join)(serverlessDirectory, "pages/api"))
147
+ // Sync the public folder
148
+ ];
117
149
  case 8:
118
- _a.sent();
119
- _a.label = 9;
120
- case 9: return [2 /*return*/];
150
+ _b.sent();
151
+ if (!assetPaths.length) return [3 /*break*/, 10];
152
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
153
+ case 9:
154
+ _b.sent();
155
+ _b.label = 10;
156
+ case 10:
157
+ // Sync favicon
158
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])];
159
+ case 11:
160
+ // Sync favicon
161
+ _b.sent();
162
+ return [3 /*break*/, 17];
163
+ case 12:
164
+ if (!assetPaths.length) return [3 /*break*/, 14];
165
+ return [4 /*yield*/, copyFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
166
+ case 13:
167
+ _b.sent();
168
+ _b.label = 14;
169
+ case 14:
170
+ // Sync favicon
171
+ return [4 /*yield*/, copyFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])
172
+ // Write APIs proxy code
173
+ ];
174
+ case 15:
175
+ // Sync favicon
176
+ _b.sent();
177
+ // Write APIs proxy code
178
+ return [4 /*yield*/, writeAPIProxies((0, path_1.join)(opts.baseDirectory, "api"), (0, path_1.join)(serverlessDirectory, "pages/api"))
179
+ // Remove pages/api/trpc directory if no _rpc is found
180
+ ];
181
+ case 16:
182
+ // Write APIs proxy code
183
+ _b.sent();
184
+ // Remove pages/api/trpc directory if no _rpc is found
185
+ console.log({
186
+ index: (0, path_1.join)(opts.baseDirectory, "api/_rpc/index.ts"),
187
+ rpc: (0, path_1.join)(opts.baseDirectory, "api/_rpc.ts"),
188
+ });
189
+ if (!(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "api/_rpc/index.ts")) &&
190
+ !(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "api/_rpc.ts"))) {
191
+ // removeSync(join(serverlessDirectory, "pages/api/trpc"))
192
+ }
193
+ _b.label = 17;
194
+ case 17:
195
+ if (!!isVercel) return [3 /*break*/, 19];
196
+ sendSignal({ code: "packaging" });
197
+ return [4 /*yield*/, updatePackages(serverlessDirectory)];
198
+ case 18:
199
+ _b.sent();
200
+ _b.label = 19;
201
+ case 19:
202
+ sendSignal({ code: "compiling" });
203
+ // Create manifests
204
+ return [4 /*yield*/, initManifests(serverlessDirectory, opts.dev)
205
+ // Start
206
+ ];
207
+ case 20:
208
+ // Create manifests
209
+ _b.sent();
210
+ if (!opts.dev) return [3 /*break*/, 23];
211
+ return [4 /*yield*/, getPort(3000)
212
+ // Write the endpoint URL to .env
213
+ ];
214
+ case 21:
215
+ port = _b.sent();
216
+ // Write the endpoint URL to .env
217
+ (0, updateEnvFile_1.updateEnvFile)({
218
+ DEBUG_SERVERLESS_ENDPOINT: "http://localhost:".concat(port),
219
+ }, opts.baseDirectory);
220
+ sendSignal({ code: "url", url: "http://127.0.0.1:".concat(port) });
221
+ // await devNext(serverlessDirectory, port)
222
+ return [4 /*yield*/, runScript(serverlessDirectory, ["dev", "--port", String(port)])];
223
+ case 22:
224
+ // await devNext(serverlessDirectory, port)
225
+ _b.sent();
226
+ return [3 /*break*/, 25];
227
+ case 23:
228
+ if (!opts.build) return [3 /*break*/, 25];
229
+ return [4 /*yield*/, runScript(serverlessDirectory, ["build"])];
230
+ case 24:
231
+ _b.sent();
232
+ _b.label = 25;
233
+ case 25: return [2 /*return*/];
121
234
  }
122
235
  });
123
236
  });
@@ -152,7 +265,6 @@ function copyTemplate(targetFolder) {
152
265
  switch (_a.label) {
153
266
  case 0:
154
267
  sourceFolder = (0, path_1.resolve)(__dirname, "../../serverless-template");
155
- console.log("Copying from", sourceFolder, "to", targetFolder);
156
268
  (0, fs_extra_1.mkdirp)(targetFolder);
157
269
  return [4 /*yield*/, (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, "**/*.*"))];
158
270
  case 1:
@@ -160,9 +272,6 @@ function copyTemplate(targetFolder) {
160
272
  return [4 /*yield*/, Promise.all(files.map(function (src) {
161
273
  var dest = src.replace(sourceFolder, targetFolder);
162
274
  return (0, fs_extra_1.copy)(src, dest);
163
- // return new Promise((resolve) => {
164
- // console.log("Copy", src, "to", dest)
165
- // })
166
275
  }))];
167
276
  case 2:
168
277
  _a.sent();
@@ -197,7 +306,7 @@ function updatePackagesFile(sourceFolder, targetFolder) {
197
306
  targetPackageFile = (0, path_1.resolve)(targetFolder, "package.json");
198
307
  sourcePackage = require(sourcePackageFile);
199
308
  targetPackage = require(targetPackageFile);
200
- mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (sourcePackage.dependencies || {})), (targetPackage.dependencies || {})), devDependencies: __assign(__assign({}, (sourcePackage.devDependencies || {})), (targetPackage.devDependencies || {})) });
309
+ mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (targetPackage.dependencies || {})), (sourcePackage.dependencies || {})), devDependencies: __assign(__assign({}, (targetPackage.devDependencies || {})), (sourcePackage.devDependencies || {})) });
201
310
  (0, fs_extra_1.writeJSON)(targetPackageFile, mergedPackage, {
202
311
  spaces: 2,
203
312
  });
@@ -205,45 +314,130 @@ function updatePackagesFile(sourceFolder, targetFolder) {
205
314
  });
206
315
  });
207
316
  }
208
- function syncFiles(sourceFolder, targetFolder) {
317
+ function writeAPIProxies(sourceFolder, targetFolder) {
209
318
  return __awaiter(this, void 0, void 0, function () {
210
- var links;
319
+ var files;
211
320
  return __generator(this, function (_a) {
212
321
  switch (_a.label) {
213
- case 0:
214
- links = [
215
- "blocks",
216
- "components",
217
- "hooks",
218
- "queries",
219
- ".env",
220
- "views",
221
- "theme.css.tsx",
222
- "types.graphql.ts",
223
- "types.views.ts",
224
- "types.blocks.ts",
225
- "utils",
226
- ];
227
- return [4 /*yield*/, Promise.all(links.map(function (file) {
228
- var src = (0, path_1.resolve)(sourceFolder, file);
229
- var dest = (0, path_1.resolve)(targetFolder, file);
230
- if ((0, fs_1.existsSync)(src)) {
231
- return (0, fs_extra_1.copy)(src, dest);
232
- }
322
+ case 0: return [4 /*yield*/, (0, glob_promise_1.default)((0, path_1.join)(sourceFolder, "**/*.{tsx,ts,js}"))];
323
+ case 1:
324
+ files = _a.sent();
325
+ return [4 /*yield*/, Promise.all(files.map(function (file) {
326
+ var name = file.replace(sourceFolder, "");
327
+ var outputPath = (0, path_1.join)(targetFolder, name);
328
+ if (name.includes("_rpc"))
329
+ return;
330
+ return (0, promises_1.writeFile)(outputPath, "import handler from \"".concat(file, "\"; export default handler;"));
233
331
  }))];
332
+ case 2:
333
+ _a.sent();
334
+ return [2 /*return*/];
335
+ }
336
+ });
337
+ });
338
+ }
339
+ function syncAPIProxies(sourceFolder, targetFolder) {
340
+ return __awaiter(this, void 0, void 0, function () {
341
+ return __generator(this, function (_a) {
342
+ return [2 /*return*/, syncFiles(sourceFolder, targetFolder, ["**/*.{tsx,ts,js}"], function (inputPath) {
343
+ if (inputPath.includes("_rpc"))
344
+ return null;
345
+ return "import handler from \"".concat(inputPath.replace(/\.(ts|js)x?$/, ""), "\"; export default handler;");
346
+ })];
347
+ });
348
+ });
349
+ }
350
+ function copyFiles(sourceFolder, targetFolder, patterns) {
351
+ return __awaiter(this, void 0, void 0, function () {
352
+ var files;
353
+ return __generator(this, function (_a) {
354
+ switch (_a.label) {
355
+ case 0: return [4 /*yield*/, Promise.all(patterns.map(function (pattern) { return (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, pattern)); }))];
234
356
  case 1:
357
+ files = (_a.sent()).flat();
358
+ // Replace sourceFolder in each path, and copy to target folder
359
+ return [4 /*yield*/, Promise.all(files.map(function (file) {
360
+ var stat = (0, fs_1.statSync)(file);
361
+ if (!stat.isDirectory()) {
362
+ return (0, fs_extra_1.copy)(file, file.replace(sourceFolder, targetFolder));
363
+ }
364
+ }))];
365
+ case 2:
366
+ // Replace sourceFolder in each path, and copy to target folder
235
367
  _a.sent();
236
368
  return [2 /*return*/];
237
369
  }
238
370
  });
239
371
  });
240
372
  }
241
- function runScript(dir, script) {
373
+ function syncFiles(sourceFolder, targetFolder, patterns, proxy) {
374
+ return __awaiter(this, void 0, void 0, function () {
375
+ var _this = this;
376
+ return __generator(this, function (_a) {
377
+ return [2 /*return*/, new Promise(function (ready) { return __awaiter(_this, void 0, void 0, function () {
378
+ var chokidar;
379
+ return __generator(this, function (_a) {
380
+ switch (_a.label) {
381
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("chokidar")); })];
382
+ case 1:
383
+ chokidar = (_a.sent()).default;
384
+ chokidar
385
+ .watch(patterns, {
386
+ cwd: sourceFolder,
387
+ })
388
+ .on("add", function (path) {
389
+ if (proxy) {
390
+ var output = proxy((0, path_1.relative)(targetFolder, (0, path_1.join)(sourceFolder, path)), (0, path_1.join)(targetFolder, path));
391
+ if (typeof output === "string") {
392
+ (0, promises_1.writeFile)((0, path_1.join)(targetFolder, path), output);
393
+ }
394
+ }
395
+ else {
396
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
397
+ }
398
+ })
399
+ .on("unlink", function (path) {
400
+ (0, fs_extra_1.remove)((0, path_1.join)(targetFolder, path));
401
+ })
402
+ .on("change", function (path) {
403
+ if (!proxy) {
404
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
405
+ }
406
+ })
407
+ .on("ready", function () {
408
+ ready(undefined);
409
+ });
410
+ return [2 /*return*/];
411
+ }
412
+ });
413
+ }); })];
414
+ });
415
+ });
416
+ }
417
+ // async function devNext(dir: string, port: number) {
418
+ // const { createServer } = await import("http")
419
+ // const { parse } = await import("url")
420
+ // const { default: next } = await import("next")
421
+ // const app = next({
422
+ // dev: true,
423
+ // dir: dir,
424
+ // minimalMode: true,
425
+ // customServer: true,
426
+ // port: port,
427
+ // })
428
+ // const handle = app.getRequestHandler()
429
+ // app.prepare().then(() => {
430
+ // createServer((req, res) => {
431
+ // handle(req, res, parse(req.url || "", true))
432
+ // }).listen(app.port)
433
+ // })
434
+ // }
435
+ function runScript(dir, args) {
242
436
  var _a, _b;
243
437
  return __awaiter(this, void 0, void 0, function () {
244
438
  var proc;
245
439
  return __generator(this, function (_c) {
246
- proc = (0, child_process_1.spawn)("yarn", [script], {
440
+ proc = (0, child_process_1.spawn)("yarn", args, {
247
441
  cwd: dir,
248
442
  });
249
443
  (_a = proc.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
@@ -296,3 +490,41 @@ function initManifests(dir, dev) {
296
490
  });
297
491
  });
298
492
  }
493
+ function getPort(port) {
494
+ if (port === void 0) { port = 3000; }
495
+ return __awaiter(this, void 0, void 0, function () {
496
+ var createServer;
497
+ var _this = this;
498
+ return __generator(this, function (_a) {
499
+ switch (_a.label) {
500
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("net")); })];
501
+ case 1:
502
+ createServer = (_a.sent()).createServer;
503
+ return [4 /*yield*/, new Promise(function (resolve) {
504
+ var server = createServer();
505
+ server.listen(port, "127.0.0.1");
506
+ server.on("listening", function () {
507
+ server.once("close", function () {
508
+ resolve(port);
509
+ });
510
+ server.close();
511
+ });
512
+ server.on("error", function () { return __awaiter(_this, void 0, void 0, function () {
513
+ var _a;
514
+ return __generator(this, function (_b) {
515
+ switch (_b.label) {
516
+ case 0:
517
+ _a = resolve;
518
+ return [4 /*yield*/, getPort(port + 1)];
519
+ case 1:
520
+ _a.apply(void 0, [_b.sent()]);
521
+ return [2 /*return*/];
522
+ }
523
+ });
524
+ }); });
525
+ })];
526
+ case 2: return [2 /*return*/, _a.sent()];
527
+ }
528
+ });
529
+ });
530
+ }
@@ -0,0 +1,26 @@
1
+ export declare type ServerlessStatus = "starting" | "packaging" | "preparing" | "compiling" | "success" | "waiting" | "error";
2
+ export declare type ServerlessState = {
3
+ title: string;
4
+ status: ServerlessStatus;
5
+ statusLabel?: string;
6
+ duration?: number;
7
+ log?: string;
8
+ url?: string;
9
+ };
10
+ export declare type ServerlessSignal = {
11
+ code: "packaging";
12
+ } | {
13
+ code: "preparing";
14
+ } | {
15
+ code: "compiling";
16
+ } | {
17
+ code: "finished";
18
+ duration: number;
19
+ } | {
20
+ code: "error";
21
+ } | {
22
+ code: "log";
23
+ } | {
24
+ code: "url";
25
+ url: string;
26
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -162,6 +162,8 @@ function beginWork(opts) {
162
162
  }
163
163
  });
164
164
  }); };
165
+ // Create RPC/API types
166
+ (0, promises_1.writeFile)(Path.join(opts.baseDirectory, "types.api.ts"), "\n import type { router, createContext } from \"./api/_rpc\"\n import { createReactQueryHooks } from \"@trpc/react\"\n export {}\n \n const createQueryHooks = () => createReactQueryHooks<typeof router>()\n \n declare global {\n type RPCUse = ReturnType<typeof createQueryHooks>\n type RPCRouter = typeof router\n type RPCContextType = Awaited<ReturnType<typeof createContext>>\n type RPCClient = ReturnType<RPCUse[\"createClient\"]>\n type RPCUseQuery = RPCUse[\"useQuery\"]\n type RPCUseMutation = RPCUse[\"useMutation\"]\n type RPCUseInfiniteQuery = RPCUse[\"useInfiniteQuery\"]\n } \n ");
165
167
  regenerate = debounce(100, function () { return __awaiter(_this, void 0, void 0, function () {
166
168
  var startTime, hasChanged, err_1, documentSets, parseErrors, _loop_1, _a, _b, _i, key, generates, errors, _c, _d, _e, file, base, config, output, err_2;
167
169
  var _this = this;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var worker_threads_1 = require("worker_threads");
4
+ var create_next_app_1 = require("../serverless/create-next-app");
5
+ var sendSignal = function (sig) {
6
+ if (worker_threads_1.parentPort) {
7
+ worker_threads_1.parentPort.postMessage(sig);
8
+ }
9
+ };
10
+ function beginWork() {
11
+ process.on("uncaughtException", function (err) {
12
+ sendSignal({ code: "error" });
13
+ });
14
+ (0, create_next_app_1.createNextApp)({
15
+ baseDirectory: process.cwd(),
16
+ build: false,
17
+ dev: true,
18
+ sendSignal: sendSignal,
19
+ });
20
+ }
21
+ beginWork();
package/cli/build.dev.js CHANGED
@@ -48,18 +48,37 @@ var ink_1 = require("ink");
48
48
  var DevCLIDisplay_1 = require("./display/components/DevCLIDisplay");
49
49
  var create_webpack_worker_1 = require("../build/create-webpack-worker");
50
50
  var create_codegen_worker_1 = require("../build/create-codegen-worker");
51
+ var create_schema_file_1 = require("../config/create-schema-file");
52
+ var get_config_1 = require("../config/get-config");
53
+ var print_zod_errors_1 = require("../config/print-zod-errors");
54
+ var Observable_1 = require("../utils/Observable");
55
+ var fs_extra_1 = require("fs-extra");
56
+ var create_serverless_dev_worker_1 = require("../build/create-serverless-dev-worker");
57
+ var build_favicon_1 = require("../build/build-favicon");
51
58
  function devCommand(opts) {
59
+ var _a;
52
60
  return __awaiter(this, void 0, void 0, function () {
53
- var themeName, enableFrontend, enableAdmin, enableCodegen, frontendObservable, adminObservable, codegenObservable;
54
- return __generator(this, function (_a) {
55
- switch (_a.label) {
56
- case 0: return [4 /*yield*/, (0, promptIfRepoNameIncorrect_1.promptIfRepoThemeMismatch)()];
61
+ var configResult, config, themeName, enableFrontend, enableAdmin, enableCodegen, enableServerless, frontendObservable, adminObservable, codegenObservable, configChanged, serverlessObservable;
62
+ return __generator(this, function (_b) {
63
+ switch (_b.label) {
64
+ case 0:
65
+ (0, create_schema_file_1.createConfigSchemaFile)(path_1.default.resolve(process.cwd(), ".ed.config.schema.json"));
66
+ (0, build_favicon_1.buildFavicon)().catch(function () { });
67
+ return [4 /*yield*/, (0, promptIfRepoNameIncorrect_1.promptIfRepoThemeMismatch)()];
57
68
  case 1:
58
- _a.sent();
69
+ _b.sent();
70
+ configResult = (0, get_config_1.getEDConfig)();
71
+ if (!configResult.success) {
72
+ (0, print_zod_errors_1.printZodErrors)(configResult.error);
73
+ console.log("\nPlease fix the above config errors, and restart the dev command.");
74
+ return [2 /*return*/];
75
+ }
76
+ config = configResult.data;
59
77
  themeName = path_1.default.basename(process.cwd());
60
78
  enableFrontend = !opts.mode || opts.mode === "frontend";
61
79
  enableAdmin = !opts.mode || opts.mode === "admin";
62
80
  enableCodegen = !opts.mode || opts.mode === "codegen";
81
+ enableServerless = (_a = config.serverless) === null || _a === void 0 ? void 0 : _a.enabled;
63
82
  frontendObservable = enableFrontend
64
83
  ? (0, create_webpack_worker_1.createWebpackWorker)({
65
84
  title: "Frontend Bundle",
@@ -93,9 +112,13 @@ function devCommand(opts) {
93
112
  retainLog: opts.retainLog,
94
113
  })
95
114
  : undefined;
96
- // Set up a process which will regenerate schemas, and watch for changes
115
+ configChanged = new Observable_1.Observable(false);
116
+ (0, fs_extra_1.watchFile)((0, get_config_1.getEDConfigFile)(), {}, function () {
117
+ configChanged.update(true);
118
+ });
119
+ serverlessObservable = enableServerless ? (0, create_serverless_dev_worker_1.createServerlessWorker)() : undefined;
97
120
  // Render output to screen
98
- (0, ink_1.render)((0, jsx_runtime_1.jsx)(DevCLIDisplay_1.DevCLIDisplay, { bundles: [frontendObservable, adminObservable].filter(Boolean), codegen: codegenObservable }, void 0));
121
+ (0, ink_1.render)((0, jsx_runtime_1.jsx)(DevCLIDisplay_1.DevCLIDisplay, { bundles: [frontendObservable, adminObservable].filter(Boolean), serverless: serverlessObservable, codegen: codegenObservable, configChanged: configChanged }, void 0));
99
122
  return [2 /*return*/];
100
123
  }
101
124
  });
package/cli/build.prod.js CHANGED
@@ -45,6 +45,7 @@ var webpack_1 = require("webpack");
45
45
  var promptIfRepoNameIncorrect_1 = require("../utils/promptIfRepoNameIncorrect");
46
46
  var path_1 = __importDefault(require("path"));
47
47
  var clean_1 = require("../build/clean");
48
+ var build_favicon_1 = require("../build/build-favicon");
48
49
  function prodCommand(opts) {
49
50
  return __awaiter(this, void 0, void 0, function () {
50
51
  var contentBase, themeName, compiler, _a, _b;
@@ -52,6 +53,10 @@ function prodCommand(opts) {
52
53
  switch (_c.label) {
53
54
  case 0:
54
55
  contentBase = process.cwd() + "/dist/";
56
+ (0, build_favicon_1.buildFavicon)().catch(function (err) {
57
+ console.log("Error building favicon:");
58
+ console.error(err);
59
+ });
55
60
  return [4 /*yield*/, (0, promptIfRepoNameIncorrect_1.promptIfRepoThemeMismatch)()];
56
61
  case 1:
57
62
  _c.sent();