eddev 0.2.0-beta.9 → 0.2.1

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 (120) 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 +11 -1
  6. package/build/manifests/manifest-views.js +1 -1
  7. package/build/reporter.js +0 -109
  8. package/build/serverless/create-next-app.d.ts +2 -0
  9. package/build/serverless/create-next-app.js +243 -47
  10. package/build/state/serverless-state.d.ts +26 -0
  11. package/{config/schema.js → build/state/serverless-state.js} +0 -0
  12. package/build/workers/codegen-worker-script.js +33 -0
  13. package/{config/schema.d.ts → build/workers/serverless-worker-dev-script.d.ts} +0 -0
  14. package/build/workers/serverless-worker-dev-script.js +21 -0
  15. package/cli/build.dev.js +34 -6
  16. package/cli/build.prod.js +13 -1
  17. package/cli/cli.js +32 -17
  18. package/cli/display/components/DevCLIDisplay.d.ts +3 -0
  19. package/cli/display/components/DevCLIDisplay.js +20 -1
  20. package/cli/display/components/ServerlessDisplay.d.ts +9 -0
  21. package/cli/display/components/ServerlessDisplay.js +68 -0
  22. package/cli/preinstall.d.ts +1 -0
  23. package/cli/preinstall.js +14 -0
  24. package/components/NextRouter.js +3 -2
  25. package/config/config-schema.d.ts +17 -9
  26. package/config/config-schema.js +3 -1
  27. package/config/get-config.d.ts +39 -0
  28. package/config/get-config.js +32 -0
  29. package/config/parse-config.d.ts +8 -4
  30. package/config/print-zod-errors.d.ts +2 -0
  31. package/config/print-zod-errors.js +14 -0
  32. package/dev-ui/components/BreakpointColumnHeader.d.ts +11 -0
  33. package/dev-ui/components/BreakpointColumnHeader.js +47 -0
  34. package/dev-ui/components/BreakpointIndicator.d.ts +2 -0
  35. package/dev-ui/components/BreakpointIndicator.js +138 -0
  36. package/dev-ui/components/DevUI.d.ts +2 -0
  37. package/dev-ui/components/DevUI.js +28 -0
  38. package/dev-ui/components/Launcher.d.ts +98 -0
  39. package/dev-ui/components/Launcher.js +94 -0
  40. package/dev-ui/components/PanelWrapper.d.ts +8 -0
  41. package/dev-ui/components/PanelWrapper.js +37 -0
  42. package/dev-ui/components/ResponsiveLerpControl.d.ts +8 -0
  43. package/dev-ui/components/ResponsiveLerpControl.js +177 -0
  44. package/dev-ui/components/ResponsiveScaleEditor.d.ts +26 -0
  45. package/dev-ui/components/ResponsiveScaleEditor.js +233 -0
  46. package/dev-ui/components/atoms/Button.d.ts +47 -0
  47. package/dev-ui/components/atoms/Button.js +67 -0
  48. package/dev-ui/components/atoms/Dropdown.d.ts +13 -0
  49. package/dev-ui/components/atoms/Dropdown.js +50 -0
  50. package/dev-ui/components/atoms/NumberField.d.ts +12 -0
  51. package/dev-ui/components/atoms/NumberField.js +111 -0
  52. package/dev-ui/components/atoms/Spacer.d.ts +42 -0
  53. package/dev-ui/components/atoms/Spacer.js +8 -0
  54. package/dev-ui/components/atoms/Text.d.ts +45 -0
  55. package/dev-ui/components/atoms/Text.js +39 -0
  56. package/dev-ui/components/atoms/ToggleButton.d.ts +8 -0
  57. package/dev-ui/components/atoms/ToggleButton.js +41 -0
  58. package/dev-ui/components/atoms/Tooltip.d.ts +9 -0
  59. package/dev-ui/components/atoms/Tooltip.js +66 -0
  60. package/dev-ui/components/panels/PageDataDebugger.d.ts +2 -0
  61. package/dev-ui/components/panels/PageDataDebugger.js +30 -0
  62. package/dev-ui/components/panels/SpacingEditor.d.ts +2 -0
  63. package/dev-ui/components/panels/SpacingEditor.js +88 -0
  64. package/dev-ui/components/panels/TypographyEditor.d.ts +2 -0
  65. package/dev-ui/components/panels/TypographyEditor.js +88 -0
  66. package/dev-ui/hooks/useBreakpoint.d.ts +11 -0
  67. package/dev-ui/hooks/useBreakpoint.js +59 -0
  68. package/dev-ui/hooks/usePersistState.d.ts +1 -0
  69. package/dev-ui/hooks/usePersistState.js +36 -0
  70. package/dev-ui/hooks/useStylesheet.d.ts +4 -0
  71. package/dev-ui/hooks/useStylesheet.js +31 -0
  72. package/dev-ui/icons.d.ts +15 -0
  73. package/dev-ui/icons.js +29 -0
  74. package/dev-ui/index.d.ts +1 -0
  75. package/dev-ui/index.js +13 -0
  76. package/dev-ui/loader.d.ts +2 -0
  77. package/dev-ui/loader.js +42 -0
  78. package/dev-ui/panels.d.ts +11 -0
  79. package/dev-ui/panels.js +33 -0
  80. package/dev-ui/theme.d.ts +151 -0
  81. package/dev-ui/theme.js +50 -0
  82. package/entry/Root.d.ts +3 -1
  83. package/entry/Root.js +18 -6
  84. package/hooks/index.d.ts +1 -0
  85. package/hooks/index.js +1 -0
  86. package/{serverless/create-rpc-client.d.ts → hooks/useRPC.d.ts} +18 -18
  87. package/hooks/useRPC.js +18 -0
  88. package/package.json +15 -7
  89. package/routing/routing.js +1 -1
  90. package/serverless/define-rpc-router.d.ts +5 -1
  91. package/serverless/define-rpc-router.js +11 -3
  92. package/serverless/index.d.ts +2 -1
  93. package/serverless/index.js +3 -1
  94. package/serverless-template/_utils/PageMeta.tsx +44 -0
  95. package/serverless-template/_utils/fetch-wordpress-props.ts +14 -3
  96. package/serverless-template/_utils/fetch-wp.ts +16 -0
  97. package/serverless-template/global.d.ts +7 -1
  98. package/serverless-template/next.config.js +10 -3
  99. package/serverless-template/package.json +5 -3
  100. package/serverless-template/pages/404.tsx +12 -0
  101. package/serverless-template/pages/[...slug].tsx +7 -2
  102. package/serverless-template/pages/_app.tsx +32 -12
  103. package/serverless-template/pages/_document.tsx +19 -0
  104. package/serverless-template/pages/api/rest/{[...method].ts → [method].ts} +4 -2
  105. package/serverless-template/pages/api/trpc/[...trpc].ts +26 -0
  106. package/serverless-template/pages/index.tsx +2 -2
  107. package/style/createStitches.d.ts +71 -1
  108. package/style/createStitches.js +151 -45
  109. package/utils/getRepoName.js +13 -5
  110. package/utils/updateEnvFile.d.ts +1 -0
  111. package/utils/updateEnvFile.js +76 -0
  112. package/cli/prepare-next.d.ts +0 -0
  113. package/cli/prepare-next.js +0 -1
  114. package/entry/entry.serverless.dev.d.ts +0 -0
  115. package/entry/entry.serverless.dev.js +0 -2
  116. package/fields/ImageWell.d.ts +0 -8
  117. package/fields/ImageWell.js +0 -64
  118. package/serverless/create-rpc-client.js +0 -20
  119. package/serverless-template/package-lock.json +0 -641
  120. package/serverless-template/pages/api/hello.ts +0 -10
@@ -65,15 +65,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
65
65
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
66
  }
67
67
  };
68
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
69
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
70
- if (ar || !(i in from)) {
71
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
72
- ar[i] = from[i];
73
- }
74
- }
75
- return to.concat(ar || Array.prototype.slice.call(from));
76
- };
77
68
  var __importDefault = (this && this.__importDefault) || function (mod) {
78
69
  return (mod && mod.__esModule) ? mod : { "default": mod };
79
70
  };
@@ -85,8 +76,9 @@ var glob_promise_1 = __importDefault(require("glob-promise"));
85
76
  var child_process_1 = require("child_process");
86
77
  var fs_1 = require("fs");
87
78
  var manifest_blocks_1 = require("../manifests/manifest-blocks");
88
- var promises_1 = require("fs/promises");
89
79
  var manifest_views_1 = require("../manifests/manifest-views");
80
+ var getRepoName_1 = require("../../utils/getRepoName");
81
+ var updateEnvFile_1 = require("../../utils/updateEnvFile");
90
82
  function requireConfig(dir) {
91
83
  var configPath = (0, path_1.resolve)(dir, "ed.config.json");
92
84
  return require(configPath);
@@ -94,12 +86,15 @@ function requireConfig(dir) {
94
86
  function createNextApp(opts) {
95
87
  var _a;
96
88
  return __awaiter(this, void 0, void 0, function () {
97
- var isVercel, serverlessDirectory;
89
+ var isVercel, serverlessDirectory, sendSignal, repoName, assetPaths, port;
98
90
  return __generator(this, function (_b) {
99
91
  switch (_b.label) {
100
92
  case 0:
101
93
  isVercel = process.env.VERCEL;
102
94
  serverlessDirectory = isVercel ? opts.baseDirectory : (0, path_1.resolve)(opts.baseDirectory, ".serverless");
95
+ sendSignal = opts.sendSignal || (function () { });
96
+ sendSignal({ code: "preparing" });
97
+ repoName = (0, getRepoName_1.getRepoName)(opts.baseDirectory);
103
98
  if (!!isVercel) return [3 /*break*/, 2];
104
99
  return [4 /*yield*/, clean(serverlessDirectory)];
105
100
  case 1:
@@ -113,21 +108,20 @@ function createNextApp(opts) {
113
108
  case 3:
114
109
  // Copy the template folder
115
110
  _b.sent();
116
- if (!!isVercel) return [3 /*break*/, 5];
117
- return [4 /*yield*/, updatePackagesFile(opts.baseDirectory, serverlessDirectory)];
111
+ if (!isVercel) return [3 /*break*/, 5];
112
+ return [4 /*yield*/, updatePackagesFile((0, path_1.resolve)(__dirname, "../../serverless-template"), opts.baseDirectory, opts.baseDirectory)];
118
113
  case 4:
119
114
  _b.sent();
120
- _b.label = 5;
121
- case 5:
122
- if (!!isVercel) return [3 /*break*/, 7];
123
- return [4 /*yield*/, updatePackages(serverlessDirectory)];
115
+ return [3 /*break*/, 7];
116
+ case 5: return [4 /*yield*/, updatePackagesFile((0, path_1.resolve)(__dirname, "../../serverless-template"), opts.baseDirectory, serverlessDirectory)];
124
117
  case 6:
125
118
  _b.sent();
126
119
  _b.label = 7;
127
120
  case 7:
128
- if (!!isVercel) return [3 /*break*/, 10];
121
+ assetPaths = ((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.themeAssets) || [];
122
+ if (!!isVercel) return [3 /*break*/, 14];
129
123
  // Sync important files during development, as they change
130
- return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, __spreadArray([
124
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, [
131
125
  "blocks/**/*",
132
126
  "components/**/*",
133
127
  "hooks/**/*",
@@ -138,35 +132,108 @@ function createNextApp(opts) {
138
132
  "types.graphql.ts",
139
133
  "types.views.ts",
140
134
  "types.blocks.ts",
135
+ "types.api.ts",
141
136
  "utils/**/*",
142
- "ed.config.json"
143
- ], (((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.devAssets) || []), true))
137
+ "ed.config.json",
138
+ ])
144
139
  // Also sync APIs into the APIs folder
145
140
  ];
146
141
  case 8:
147
142
  // Sync important files during development, as they change
148
143
  _b.sent();
149
144
  // Also sync APIs into the APIs folder
150
- return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "pages/"), ["api/**/*"])];
145
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "apis"), ["**/*.{tsx,ts,js,jsx}"])];
151
146
  case 9:
152
147
  // Also sync APIs into the APIs folder
153
148
  _b.sent();
154
- _b.label = 10;
149
+ return [4 /*yield*/, syncAPIProxies((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "pages/api"))
150
+ // Sync the public folder
151
+ ];
155
152
  case 10:
156
- // Create manifests
157
- initManifests(serverlessDirectory, opts.dev);
158
- if (!opts.dev) return [3 /*break*/, 12];
159
- return [4 /*yield*/, runScript(serverlessDirectory, "dev")];
153
+ _b.sent();
154
+ if (!assetPaths.length) return [3 /*break*/, 12];
155
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
160
156
  case 11:
161
157
  _b.sent();
162
- return [3 /*break*/, 14];
163
- case 12:
164
- if (!opts.build) return [3 /*break*/, 14];
165
- return [4 /*yield*/, runScript(serverlessDirectory, "build")];
158
+ _b.label = 12;
159
+ case 12:
160
+ // Sync favicon
161
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])];
166
162
  case 13:
163
+ // Sync favicon
164
+ _b.sent();
165
+ return [3 /*break*/, 19];
166
+ case 14:
167
+ if (!assetPaths.length) return [3 /*break*/, 16];
168
+ return [4 /*yield*/, copyFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
169
+ case 15:
170
+ _b.sent();
171
+ _b.label = 16;
172
+ case 16:
173
+ // Sync favicon
174
+ return [4 /*yield*/, copyFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])
175
+ // Write APIs proxy code
176
+ ];
177
+ case 17:
178
+ // Sync favicon
179
+ _b.sent();
180
+ // Write APIs proxy code
181
+ return [4 /*yield*/, writeAPIProxies((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "pages/api"))
182
+ // Remove pages/api/trpc directory if no _rpc is found
183
+ ];
184
+ case 18:
185
+ // Write APIs proxy code
186
+ _b.sent();
187
+ // Remove pages/api/trpc directory if no _rpc is found
188
+ console.log({
189
+ index: (0, path_1.join)(opts.baseDirectory, "apis/_rpc/index.ts"),
190
+ rpc: (0, path_1.join)(opts.baseDirectory, "apis/_rpc.ts"),
191
+ });
192
+ if (!(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "apis/_rpc/index.ts")) &&
193
+ !(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "apis/_rpc.ts"))) {
194
+ // removeSync(join(serverlessDirectory, "pages/api/trpc"))
195
+ }
196
+ _b.label = 19;
197
+ case 19:
198
+ // Create manifests
199
+ return [4 /*yield*/, initManifests(serverlessDirectory, opts.dev)
200
+ // Update packages
201
+ ];
202
+ case 20:
203
+ // Create manifests
167
204
  _b.sent();
168
- _b.label = 14;
169
- case 14: return [2 /*return*/];
205
+ if (!!isVercel) return [3 /*break*/, 22];
206
+ sendSignal({ code: "packaging" });
207
+ return [4 /*yield*/, updatePackages(serverlessDirectory)];
208
+ case 21:
209
+ _b.sent();
210
+ _b.label = 22;
211
+ case 22:
212
+ sendSignal({ code: "compiling" });
213
+ if (!opts.dev) return [3 /*break*/, 25];
214
+ return [4 /*yield*/, getPort(3000)
215
+ // Write the endpoint URL to .env
216
+ ];
217
+ case 23:
218
+ port = _b.sent();
219
+ // Write the endpoint URL to .env
220
+ (0, updateEnvFile_1.updateEnvFile)({
221
+ DEBUG_SERVERLESS_ENDPOINT: "http://localhost:".concat(port),
222
+ }, opts.baseDirectory);
223
+ sendSignal({ code: "url", url: "http://127.0.0.1:".concat(port) });
224
+ // await devNext(serverlessDirectory, port)
225
+ return [4 /*yield*/, runScript(serverlessDirectory, ["dev", "--port", String(port)])];
226
+ case 24:
227
+ // await devNext(serverlessDirectory, port)
228
+ _b.sent();
229
+ return [3 /*break*/, 27];
230
+ case 25:
231
+ if (!opts.build) return [3 /*break*/, 27];
232
+ return [4 /*yield*/, runScript(serverlessDirectory, ["build"])];
233
+ case 26:
234
+ _b.sent();
235
+ _b.label = 27;
236
+ case 27: return [2 /*return*/];
170
237
  }
171
238
  });
172
239
  });
@@ -206,6 +273,8 @@ function copyTemplate(targetFolder) {
206
273
  case 1:
207
274
  files = _a.sent();
208
275
  return [4 /*yield*/, Promise.all(files.map(function (src) {
276
+ if (src.includes("package.json"))
277
+ return null;
209
278
  var dest = src.replace(sourceFolder, targetFolder);
210
279
  return (0, fs_extra_1.copy)(src, dest);
211
280
  }))];
@@ -234,23 +303,81 @@ function updatePackages(dir) {
234
303
  });
235
304
  });
236
305
  }
237
- function updatePackagesFile(sourceFolder, targetFolder) {
306
+ function updatePackagesFile(templateFolder, appFolder, outDirectory) {
238
307
  return __awaiter(this, void 0, void 0, function () {
239
- var sourcePackageFile, targetPackageFile, sourcePackage, targetPackage, mergedPackage;
308
+ var sourcePackageFile, targetPackageFile, outPackageFile, sourcePackage, targetPackage, mergedPackage;
240
309
  return __generator(this, function (_a) {
241
- sourcePackageFile = (0, path_1.resolve)(sourceFolder, "package.json");
242
- targetPackageFile = (0, path_1.resolve)(targetFolder, "package.json");
310
+ sourcePackageFile = (0, path_1.resolve)(templateFolder, "package.json");
311
+ targetPackageFile = (0, path_1.resolve)(appFolder, "package.json");
312
+ outPackageFile = (0, path_1.resolve)(outDirectory, "package.json");
243
313
  sourcePackage = require(sourcePackageFile);
244
314
  targetPackage = require(targetPackageFile);
245
- mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (sourcePackage.dependencies || {})), (targetPackage.dependencies || {})), devDependencies: __assign(__assign({}, (sourcePackage.devDependencies || {})), (targetPackage.devDependencies || {})) });
246
- (0, fs_extra_1.writeJSON)(targetPackageFile, mergedPackage, {
315
+ mergedPackage = __assign(__assign({}, sourcePackage), { dependencies: __assign(__assign({}, (sourcePackage.dependencies || {})), (targetPackage.dependencies || {})), devDependencies: __assign(__assign({}, (sourcePackage.devDependencies || {})), (targetPackage.devDependencies || {})) });
316
+ (0, fs_extra_1.writeJSON)(outPackageFile, mergedPackage, {
247
317
  spaces: 2,
248
318
  });
249
319
  return [2 /*return*/];
250
320
  });
251
321
  });
252
322
  }
253
- function syncFiles(sourceFolder, targetFolder, patterns) {
323
+ function writeAPIProxies(sourceFolder, targetFolder) {
324
+ return __awaiter(this, void 0, void 0, function () {
325
+ var files;
326
+ return __generator(this, function (_a) {
327
+ switch (_a.label) {
328
+ case 0: return [4 /*yield*/, (0, glob_promise_1.default)((0, path_1.join)(sourceFolder, "**/*.{tsx,ts,js}"))];
329
+ case 1:
330
+ files = _a.sent();
331
+ return [4 /*yield*/, Promise.all(files.map(function (file) {
332
+ var name = file.replace(sourceFolder, "");
333
+ var outputPath = (0, path_1.join)(targetFolder, name);
334
+ if (name.includes("_rpc"))
335
+ return;
336
+ (0, fs_extra_1.ensureFileSync)((0, path_1.join)(outputPath));
337
+ return (0, fs_extra_1.writeFile)(outputPath, "import handler from \"".concat(file, "\"; export default handler;"));
338
+ }))];
339
+ case 2:
340
+ _a.sent();
341
+ return [2 /*return*/];
342
+ }
343
+ });
344
+ });
345
+ }
346
+ function syncAPIProxies(sourceFolder, targetFolder) {
347
+ return __awaiter(this, void 0, void 0, function () {
348
+ return __generator(this, function (_a) {
349
+ return [2 /*return*/, syncFiles(sourceFolder, targetFolder, ["**/*"], function (inputPath) {
350
+ if (inputPath.includes("_rpc"))
351
+ return null;
352
+ return "import handler from \"".concat(inputPath.replace(/\.(ts|js)x?$/, ""), "\"; export default handler;");
353
+ })];
354
+ });
355
+ });
356
+ }
357
+ function copyFiles(sourceFolder, targetFolder, patterns) {
358
+ return __awaiter(this, void 0, void 0, function () {
359
+ var files;
360
+ return __generator(this, function (_a) {
361
+ switch (_a.label) {
362
+ case 0: return [4 /*yield*/, Promise.all(patterns.map(function (pattern) { return (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, pattern)); }))];
363
+ case 1:
364
+ files = (_a.sent()).flat();
365
+ // Replace sourceFolder in each path, and copy to target folder
366
+ return [4 /*yield*/, Promise.all(files.map(function (file) {
367
+ var stat = (0, fs_1.statSync)(file);
368
+ if (!stat.isDirectory()) {
369
+ return (0, fs_extra_1.copy)(file, file.replace(sourceFolder, targetFolder));
370
+ }
371
+ }))];
372
+ case 2:
373
+ // Replace sourceFolder in each path, and copy to target folder
374
+ _a.sent();
375
+ return [2 /*return*/];
376
+ }
377
+ });
378
+ });
379
+ }
380
+ function syncFiles(sourceFolder, targetFolder, patterns, proxy) {
254
381
  return __awaiter(this, void 0, void 0, function () {
255
382
  var _this = this;
256
383
  return __generator(this, function (_a) {
@@ -262,15 +389,28 @@ function syncFiles(sourceFolder, targetFolder, patterns) {
262
389
  case 1:
263
390
  chokidar = (_a.sent()).default;
264
391
  chokidar
265
- .watch(patterns)
392
+ .watch(patterns, {
393
+ cwd: sourceFolder,
394
+ })
266
395
  .on("add", function (path) {
267
- (0, fs_extra_1.copy)(path, (0, path_1.join)(targetFolder, path));
396
+ if (proxy) {
397
+ var output = proxy((0, path_1.relative)(targetFolder, (0, path_1.join)(sourceFolder, path)), (0, path_1.join)(targetFolder, path));
398
+ if (typeof output === "string") {
399
+ (0, fs_extra_1.ensureFileSync)((0, path_1.join)(targetFolder, path));
400
+ (0, fs_extra_1.writeFile)((0, path_1.join)(targetFolder, path), output);
401
+ }
402
+ }
403
+ else {
404
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
405
+ }
268
406
  })
269
407
  .on("unlink", function (path) {
270
408
  (0, fs_extra_1.remove)((0, path_1.join)(targetFolder, path));
271
409
  })
272
410
  .on("change", function (path) {
273
- (0, fs_extra_1.copy)(path, (0, path_1.join)(targetFolder, path));
411
+ if (!proxy) {
412
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
413
+ }
274
414
  })
275
415
  .on("ready", function () {
276
416
  ready(undefined);
@@ -282,12 +422,30 @@ function syncFiles(sourceFolder, targetFolder, patterns) {
282
422
  });
283
423
  });
284
424
  }
285
- function runScript(dir, script) {
425
+ // async function devNext(dir: string, port: number) {
426
+ // const { createServer } = await import("http")
427
+ // const { parse } = await import("url")
428
+ // const { default: next } = await import("next")
429
+ // const app = next({
430
+ // dev: true,
431
+ // dir: dir,
432
+ // minimalMode: true,
433
+ // customServer: true,
434
+ // port: port,
435
+ // })
436
+ // const handle = app.getRequestHandler()
437
+ // app.prepare().then(() => {
438
+ // createServer((req, res) => {
439
+ // handle(req, res, parse(req.url || "", true))
440
+ // }).listen(app.port)
441
+ // })
442
+ // }
443
+ function runScript(dir, args) {
286
444
  var _a, _b;
287
445
  return __awaiter(this, void 0, void 0, function () {
288
446
  var proc;
289
447
  return __generator(this, function (_c) {
290
- proc = (0, child_process_1.spawn)("yarn", [script], {
448
+ proc = (0, child_process_1.spawn)("yarn", args, {
291
449
  cwd: dir,
292
450
  });
293
451
  (_a = proc.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
@@ -313,7 +471,7 @@ function initManifests(dir, dev) {
313
471
  isServerless: true,
314
472
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
315
473
  return __generator(this, function (_a) {
316
- (0, promises_1.writeFile)((0, path_1.resolve)(dir, "manifest_blocks.ts"), manifest);
474
+ (0, fs_extra_1.writeFile)((0, path_1.resolve)(dir, "manifest_blocks.ts"), manifest);
317
475
  return [2 /*return*/];
318
476
  });
319
477
  }); },
@@ -326,7 +484,7 @@ function initManifests(dir, dev) {
326
484
  isServerless: true,
327
485
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
328
486
  return __generator(this, function (_a) {
329
- (0, promises_1.writeFile)((0, path_1.resolve)(dir, "manifest_views.ts"), manifest);
487
+ (0, fs_extra_1.writeFile)((0, path_1.resolve)(dir, "manifest_views.ts"), manifest);
330
488
  return [2 /*return*/];
331
489
  });
332
490
  }); },
@@ -340,3 +498,41 @@ function initManifests(dir, dev) {
340
498
  });
341
499
  });
342
500
  }
501
+ function getPort(port) {
502
+ if (port === void 0) { port = 3000; }
503
+ return __awaiter(this, void 0, void 0, function () {
504
+ var createServer;
505
+ var _this = this;
506
+ return __generator(this, function (_a) {
507
+ switch (_a.label) {
508
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("net")); })];
509
+ case 1:
510
+ createServer = (_a.sent()).createServer;
511
+ return [4 /*yield*/, new Promise(function (resolve) {
512
+ var server = createServer();
513
+ server.listen(port, "127.0.0.1");
514
+ server.on("listening", function () {
515
+ server.once("close", function () {
516
+ resolve(port);
517
+ });
518
+ server.close();
519
+ });
520
+ server.on("error", function () { return __awaiter(_this, void 0, void 0, function () {
521
+ var _a;
522
+ return __generator(this, function (_b) {
523
+ switch (_b.label) {
524
+ case 0:
525
+ _a = resolve;
526
+ return [4 /*yield*/, getPort(port + 1)];
527
+ case 1:
528
+ _a.apply(void 0, [_b.sent()]);
529
+ return [2 /*return*/];
530
+ }
531
+ });
532
+ }); });
533
+ })];
534
+ case 2: return [2 /*return*/, _a.sent()];
535
+ }
536
+ });
537
+ });
538
+ }
@@ -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
+ };
@@ -150,6 +150,7 @@ function beginWork(opts) {
150
150
  schemaDescription: false,
151
151
  specifiedByUrl: true,
152
152
  });
153
+ processSchema(schema);
153
154
  hash = JSON.stringify(schema);
154
155
  if (hash !== lastSchemaHash) {
155
156
  lastSchemaHash = hash;
@@ -162,6 +163,8 @@ function beginWork(opts) {
162
163
  }
163
164
  });
164
165
  }); };
166
+ // Create RPC/API types
167
+ (0, promises_1.writeFile)(Path.join(opts.baseDirectory, "types.api.ts"), "\n import type { router, createContext } from \"./apis/_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\n declare global {\n namespace NodeJS {\n interface Process {\n // @ts-ignore\n browser: boolean\n dev: boolean\n admin: boolean\n serverless: boolean\n }\n }\n }\n \n ");
165
168
  regenerate = debounce(100, function () { return __awaiter(_this, void 0, void 0, function () {
166
169
  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
170
  var _this = this;
@@ -575,4 +578,34 @@ function debounce(wait, fn) {
575
578
  };
576
579
  return debounced;
577
580
  }
581
+ function processSchema(schema) {
582
+ var walkFields = function (fields) { };
583
+ var updateFieldType = function (fieldType) {
584
+ var _a;
585
+ if (fieldType.kind === "LIST") {
586
+ if (((_a = fieldType.ofType) === null || _a === void 0 ? void 0 : _a.kind) !== "NON_NULL") {
587
+ fieldType.ofType = {
588
+ kind: "NON_NULL",
589
+ name: null,
590
+ ofType: fieldType.ofType,
591
+ };
592
+ }
593
+ }
594
+ };
595
+ var updateType = function (type) {
596
+ if (typeof type.type === "object" && type.type) {
597
+ updateFieldType(type.type);
598
+ }
599
+ if (type.fields) {
600
+ for (var _i = 0, _a = type.fields; _i < _a.length; _i++) {
601
+ var field = _a[_i];
602
+ updateType(field);
603
+ }
604
+ }
605
+ };
606
+ for (var _i = 0, _a = schema.__schema.types; _i < _a.length; _i++) {
607
+ var type = _a[_i];
608
+ updateType(type);
609
+ }
610
+ }
578
611
  beginWork(worker_threads_1.workerData);
@@ -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
@@ -49,20 +49,44 @@ 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
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");
58
+ var compare_versions_1 = __importDefault(require("compare-versions"));
59
+ var chalk_1 = __importDefault(require("chalk"));
52
60
  function devCommand(opts) {
61
+ var _a;
53
62
  return __awaiter(this, void 0, void 0, function () {
54
- var themeName, enableFrontend, enableAdmin, enableCodegen, frontendObservable, adminObservable, codegenObservable;
55
- return __generator(this, function (_a) {
56
- switch (_a.label) {
63
+ var version, requiredVersion, configResult, config, themeName, enableFrontend, enableAdmin, enableCodegen, enableServerless, frontendObservable, adminObservable, codegenObservable, configChanged, serverlessObservable;
64
+ return __generator(this, function (_b) {
65
+ switch (_b.label) {
57
66
  case 0:
67
+ version = require(path_1.default.join(__dirname, "../package.json")).version;
68
+ requiredVersion = require(path_1.default.join(process.cwd(), "package.json")).devDependencies.eddev;
69
+ if ((0, compare_versions_1.default)(version, requiredVersion) < 0) {
70
+ console.log(chalk_1.default.red("\uD83D\uDEA8 Incorrect 'eddev' version installed!\n\uD83D\uDEA8 Your package.json requires ".concat(chalk_1.default.yellow(requiredVersion), ", but you have ").concat(chalk_1.default.yellow(version), ".\n\uD83D\uDEA8 Do you need to run 'yarn'?")));
71
+ process.exit(1);
72
+ }
58
73
  (0, create_schema_file_1.createConfigSchemaFile)(path_1.default.resolve(process.cwd(), ".ed.config.schema.json"));
74
+ (0, build_favicon_1.buildFavicon)().catch(function () { });
59
75
  return [4 /*yield*/, (0, promptIfRepoNameIncorrect_1.promptIfRepoThemeMismatch)()];
60
76
  case 1:
61
- _a.sent();
77
+ _b.sent();
78
+ configResult = (0, get_config_1.getEDConfig)();
79
+ if (configResult.success === false) {
80
+ (0, print_zod_errors_1.printZodErrors)(configResult.error);
81
+ console.log("\nPlease fix the above config errors, and restart the dev command.");
82
+ return [2 /*return*/];
83
+ }
84
+ config = configResult.data;
62
85
  themeName = path_1.default.basename(process.cwd());
63
86
  enableFrontend = !opts.mode || opts.mode === "frontend";
64
87
  enableAdmin = !opts.mode || opts.mode === "admin";
65
88
  enableCodegen = !opts.mode || opts.mode === "codegen";
89
+ enableServerless = (_a = config.serverless) === null || _a === void 0 ? void 0 : _a.enabled;
66
90
  frontendObservable = enableFrontend
67
91
  ? (0, create_webpack_worker_1.createWebpackWorker)({
68
92
  title: "Frontend Bundle",
@@ -96,9 +120,13 @@ function devCommand(opts) {
96
120
  retainLog: opts.retainLog,
97
121
  })
98
122
  : undefined;
99
- // Set up a process which will regenerate schemas, and watch for changes
123
+ configChanged = new Observable_1.Observable(false);
124
+ (0, fs_extra_1.watchFile)((0, get_config_1.getEDConfigFile)(), {}, function () {
125
+ configChanged.update(true);
126
+ });
127
+ serverlessObservable = enableServerless ? (0, create_serverless_dev_worker_1.createServerlessWorker)() : undefined;
100
128
  // Render output to screen
101
- (0, ink_1.render)((0, jsx_runtime_1.jsx)(DevCLIDisplay_1.DevCLIDisplay, { bundles: [frontendObservable, adminObservable].filter(Boolean), codegen: codegenObservable }, void 0));
129
+ (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));
102
130
  return [2 /*return*/];
103
131
  }
104
132
  });
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();
@@ -86,7 +91,14 @@ function prodCommand(opts) {
86
91
  compiler = _a.apply(void 0, [_b.concat([
87
92
  _c.sent()
88
93
  ])]);
89
- compiler.run(function () { });
94
+ compiler.run(function (err, stats) {
95
+ if (stats === null || stats === void 0 ? void 0 : stats.hasErrors()) {
96
+ process.exit(1);
97
+ }
98
+ if (err) {
99
+ process.exit(1);
100
+ }
101
+ });
90
102
  return [2 /*return*/];
91
103
  }
92
104
  });