eddev 0.2.0-beta.7 → 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 (133) 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 +26 -11
  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 +314 -68
  10. package/build/state/serverless-state.d.ts +26 -0
  11. package/build/state/serverless-state.js +2 -0
  12. package/build/workers/codegen-worker-script.js +33 -0
  13. package/build/workers/serverless-worker-dev-script.d.ts +1 -0
  14. package/build/workers/serverless-worker-dev-script.js +21 -0
  15. package/cli/build.dev.js +38 -7
  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 +55 -0
  26. package/config/config-schema.js +19 -0
  27. package/config/create-schema-file.d.ts +1 -0
  28. package/config/create-schema-file.js +20 -0
  29. package/config/get-config.d.ts +39 -0
  30. package/config/get-config.js +32 -0
  31. package/config/index.d.ts +2 -0
  32. package/config/index.js +14 -0
  33. package/config/parse-config.d.ts +25 -0
  34. package/config/parse-config.js +8 -0
  35. package/config/print-zod-errors.d.ts +2 -0
  36. package/config/print-zod-errors.js +14 -0
  37. package/dev-ui/components/BreakpointColumnHeader.d.ts +11 -0
  38. package/dev-ui/components/BreakpointColumnHeader.js +47 -0
  39. package/dev-ui/components/BreakpointIndicator.d.ts +2 -0
  40. package/dev-ui/components/BreakpointIndicator.js +138 -0
  41. package/dev-ui/components/DevUI.d.ts +2 -0
  42. package/dev-ui/components/DevUI.js +28 -0
  43. package/dev-ui/components/Launcher.d.ts +98 -0
  44. package/dev-ui/components/Launcher.js +94 -0
  45. package/dev-ui/components/PanelWrapper.d.ts +8 -0
  46. package/dev-ui/components/PanelWrapper.js +37 -0
  47. package/dev-ui/components/ResponsiveLerpControl.d.ts +8 -0
  48. package/dev-ui/components/ResponsiveLerpControl.js +177 -0
  49. package/dev-ui/components/ResponsiveScaleEditor.d.ts +26 -0
  50. package/dev-ui/components/ResponsiveScaleEditor.js +233 -0
  51. package/dev-ui/components/atoms/Button.d.ts +47 -0
  52. package/dev-ui/components/atoms/Button.js +67 -0
  53. package/dev-ui/components/atoms/Dropdown.d.ts +13 -0
  54. package/dev-ui/components/atoms/Dropdown.js +50 -0
  55. package/dev-ui/components/atoms/NumberField.d.ts +12 -0
  56. package/dev-ui/components/atoms/NumberField.js +111 -0
  57. package/dev-ui/components/atoms/Spacer.d.ts +42 -0
  58. package/dev-ui/components/atoms/Spacer.js +8 -0
  59. package/dev-ui/components/atoms/Text.d.ts +45 -0
  60. package/dev-ui/components/atoms/Text.js +39 -0
  61. package/dev-ui/components/atoms/ToggleButton.d.ts +8 -0
  62. package/dev-ui/components/atoms/ToggleButton.js +41 -0
  63. package/dev-ui/components/atoms/Tooltip.d.ts +9 -0
  64. package/dev-ui/components/atoms/Tooltip.js +66 -0
  65. package/dev-ui/components/panels/PageDataDebugger.d.ts +2 -0
  66. package/dev-ui/components/panels/PageDataDebugger.js +30 -0
  67. package/dev-ui/components/panels/SpacingEditor.d.ts +2 -0
  68. package/dev-ui/components/panels/SpacingEditor.js +88 -0
  69. package/dev-ui/components/panels/TypographyEditor.d.ts +2 -0
  70. package/dev-ui/components/panels/TypographyEditor.js +88 -0
  71. package/dev-ui/hooks/useBreakpoint.d.ts +11 -0
  72. package/dev-ui/hooks/useBreakpoint.js +59 -0
  73. package/dev-ui/hooks/usePersistState.d.ts +1 -0
  74. package/dev-ui/hooks/usePersistState.js +36 -0
  75. package/dev-ui/hooks/useStylesheet.d.ts +4 -0
  76. package/dev-ui/hooks/useStylesheet.js +31 -0
  77. package/dev-ui/icons.d.ts +15 -0
  78. package/dev-ui/icons.js +29 -0
  79. package/dev-ui/index.d.ts +1 -0
  80. package/dev-ui/index.js +13 -0
  81. package/dev-ui/loader.d.ts +2 -0
  82. package/dev-ui/loader.js +42 -0
  83. package/dev-ui/panels.d.ts +11 -0
  84. package/dev-ui/panels.js +33 -0
  85. package/dev-ui/theme.d.ts +151 -0
  86. package/dev-ui/theme.js +50 -0
  87. package/entry/Root.d.ts +3 -1
  88. package/entry/Root.js +18 -6
  89. package/hooks/index.d.ts +1 -0
  90. package/hooks/index.js +1 -0
  91. package/hooks/useAppData.js +0 -1
  92. package/hooks/useRPC.d.ts +32 -0
  93. package/hooks/useRPC.js +18 -0
  94. package/package.json +19 -8
  95. package/routing/routing.js +1 -1
  96. package/serverless/define-api.d.ts +2 -0
  97. package/serverless/define-api.js +66 -0
  98. package/serverless/define-rpc-router.d.ts +6 -0
  99. package/serverless/define-rpc-router.js +35 -0
  100. package/serverless/error-codes.d.ts +2 -0
  101. package/serverless/error-codes.js +14 -0
  102. package/serverless/index.d.ts +5 -0
  103. package/serverless/index.js +18 -0
  104. package/serverless/rpc-provider.d.ts +1 -0
  105. package/serverless/rpc-provider.js +5 -0
  106. package/serverless-template/_utils/PageMeta.tsx +44 -0
  107. package/serverless-template/_utils/ed-config.ts +5 -0
  108. package/serverless-template/_utils/fetch-wordpress-props.ts +40 -7
  109. package/serverless-template/_utils/fetch-wp.ts +16 -0
  110. package/serverless-template/global.d.ts +7 -1
  111. package/serverless-template/next.config.js +73 -53
  112. package/serverless-template/package.json +5 -3
  113. package/serverless-template/pages/404.tsx +12 -0
  114. package/serverless-template/pages/[...slug].tsx +7 -2
  115. package/serverless-template/pages/_app.tsx +32 -12
  116. package/serverless-template/pages/_document.tsx +19 -0
  117. package/serverless-template/pages/api/rest/{[...method].ts → [method].ts} +4 -2
  118. package/serverless-template/pages/api/trpc/[...trpc].ts +26 -0
  119. package/serverless-template/pages/index.tsx +2 -2
  120. package/style/createStitches.d.ts +71 -1
  121. package/style/createStitches.js +151 -45
  122. package/utils/getRepoName.d.ts +2 -2
  123. package/utils/getRepoName.js +14 -52
  124. package/utils/updateEnvFile.d.ts +1 -0
  125. package/utils/updateEnvFile.js +76 -0
  126. package/cli/prepare-next.d.ts +0 -0
  127. package/cli/prepare-next.js +0 -1
  128. package/entry/entry.serverless.dev.d.ts +0 -0
  129. package/entry/entry.serverless.dev.js +0 -2
  130. package/fields/ImageWell.d.ts +0 -8
  131. package/fields/ImageWell.js +0 -64
  132. package/serverless-template/package-lock.json +0 -641
  133. 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) {
@@ -57,21 +76,30 @@ var glob_promise_1 = __importDefault(require("glob-promise"));
57
76
  var child_process_1 = require("child_process");
58
77
  var fs_1 = require("fs");
59
78
  var manifest_blocks_1 = require("../manifests/manifest-blocks");
60
- var promises_1 = require("fs/promises");
61
79
  var manifest_views_1 = require("../manifests/manifest-views");
80
+ var getRepoName_1 = require("../../utils/getRepoName");
81
+ var updateEnvFile_1 = require("../../utils/updateEnvFile");
82
+ function requireConfig(dir) {
83
+ var configPath = (0, path_1.resolve)(dir, "ed.config.json");
84
+ return require(configPath);
85
+ }
62
86
  function createNextApp(opts) {
87
+ var _a;
63
88
  return __awaiter(this, void 0, void 0, function () {
64
- var isVercel, serverlessDirectory;
65
- return __generator(this, function (_a) {
66
- switch (_a.label) {
89
+ var isVercel, serverlessDirectory, sendSignal, repoName, assetPaths, port;
90
+ return __generator(this, function (_b) {
91
+ switch (_b.label) {
67
92
  case 0:
68
93
  isVercel = process.env.VERCEL;
69
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);
70
98
  if (!!isVercel) return [3 /*break*/, 2];
71
99
  return [4 /*yield*/, clean(serverlessDirectory)];
72
100
  case 1:
73
- _a.sent();
74
- _a.label = 2;
101
+ _b.sent();
102
+ _b.label = 2;
75
103
  case 2:
76
104
  // Copy the template folder
77
105
  return [4 /*yield*/, copyTemplate(serverlessDirectory)
@@ -79,39 +107,133 @@ function createNextApp(opts) {
79
107
  ];
80
108
  case 3:
81
109
  // Copy the template folder
82
- _a.sent();
83
- if (!!isVercel) return [3 /*break*/, 5];
84
- return [4 /*yield*/, updatePackagesFile(opts.baseDirectory, serverlessDirectory)];
110
+ _b.sent();
111
+ if (!isVercel) return [3 /*break*/, 5];
112
+ return [4 /*yield*/, updatePackagesFile((0, path_1.resolve)(__dirname, "../../serverless-template"), opts.baseDirectory, opts.baseDirectory)];
85
113
  case 4:
86
- _a.sent();
87
- _a.label = 5;
88
- case 5:
89
- if (!!isVercel) return [3 /*break*/, 7];
90
- return [4 /*yield*/, updatePackages(serverlessDirectory)];
114
+ _b.sent();
115
+ return [3 /*break*/, 7];
116
+ case 5: return [4 /*yield*/, updatePackagesFile((0, path_1.resolve)(__dirname, "../../serverless-template"), opts.baseDirectory, serverlessDirectory)];
91
117
  case 6:
92
- _a.sent();
93
- _a.label = 7;
118
+ _b.sent();
119
+ _b.label = 7;
94
120
  case 7:
95
- if (!!isVercel) return [3 /*break*/, 9];
96
- return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory)];
121
+ assetPaths = ((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.themeAssets) || [];
122
+ if (!!isVercel) return [3 /*break*/, 14];
123
+ // Sync important files during development, as they change
124
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, [
125
+ "blocks/**/*",
126
+ "components/**/*",
127
+ "hooks/**/*",
128
+ "queries/**/*",
129
+ ".env",
130
+ "views/**/*",
131
+ "theme.css.tsx",
132
+ "types.graphql.ts",
133
+ "types.views.ts",
134
+ "types.blocks.ts",
135
+ "types.api.ts",
136
+ "utils/**/*",
137
+ "ed.config.json",
138
+ ])
139
+ // Also sync APIs into the APIs folder
140
+ ];
97
141
  case 8:
98
- _a.sent();
99
- _a.label = 9;
142
+ // Sync important files during development, as they change
143
+ _b.sent();
144
+ // Also sync APIs into the APIs folder
145
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "apis"), ["**/*.{tsx,ts,js,jsx}"])];
100
146
  case 9:
101
- // Create manifests
102
- initManifests(serverlessDirectory, opts.dev);
103
- if (!opts.dev) return [3 /*break*/, 11];
104
- return [4 /*yield*/, runScript(serverlessDirectory, "dev")];
147
+ // Also sync APIs into the APIs folder
148
+ _b.sent();
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
+ ];
105
152
  case 10:
106
- _a.sent();
107
- return [3 /*break*/, 13];
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)];
108
156
  case 11:
109
- if (!opts.build) return [3 /*break*/, 13];
110
- return [4 /*yield*/, runScript(serverlessDirectory, "build")];
111
- case 12:
112
- _a.sent();
113
- _a.label = 13;
114
- case 13: return [2 /*return*/];
157
+ _b.sent();
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"])];
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
204
+ _b.sent();
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*/];
115
237
  }
116
238
  });
117
239
  });
@@ -146,17 +268,15 @@ function copyTemplate(targetFolder) {
146
268
  switch (_a.label) {
147
269
  case 0:
148
270
  sourceFolder = (0, path_1.resolve)(__dirname, "../../serverless-template");
149
- console.log("Copying from", sourceFolder, "to", targetFolder);
150
271
  (0, fs_extra_1.mkdirp)(targetFolder);
151
272
  return [4 /*yield*/, (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, "**/*.*"))];
152
273
  case 1:
153
274
  files = _a.sent();
154
275
  return [4 /*yield*/, Promise.all(files.map(function (src) {
276
+ if (src.includes("package.json"))
277
+ return null;
155
278
  var dest = src.replace(sourceFolder, targetFolder);
156
279
  return (0, fs_extra_1.copy)(src, dest);
157
- // return new Promise((resolve) => {
158
- // console.log("Copy", src, "to", dest)
159
- // })
160
280
  }))];
161
281
  case 2:
162
282
  _a.sent();
@@ -183,61 +303,149 @@ function updatePackages(dir) {
183
303
  });
184
304
  });
185
305
  }
186
- function updatePackagesFile(sourceFolder, targetFolder) {
306
+ function updatePackagesFile(templateFolder, appFolder, outDirectory) {
187
307
  return __awaiter(this, void 0, void 0, function () {
188
- var sourcePackageFile, targetPackageFile, sourcePackage, targetPackage, mergedPackage;
308
+ var sourcePackageFile, targetPackageFile, outPackageFile, sourcePackage, targetPackage, mergedPackage;
189
309
  return __generator(this, function (_a) {
190
- sourcePackageFile = (0, path_1.resolve)(sourceFolder, "package.json");
191
- 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");
192
313
  sourcePackage = require(sourcePackageFile);
193
314
  targetPackage = require(targetPackageFile);
194
- mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (sourcePackage.dependencies || {})), (targetPackage.dependencies || {})), devDependencies: __assign(__assign({}, (sourcePackage.devDependencies || {})), (targetPackage.devDependencies || {})) });
195
- (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, {
196
317
  spaces: 2,
197
318
  });
198
319
  return [2 /*return*/];
199
320
  });
200
321
  });
201
322
  }
202
- function syncFiles(sourceFolder, targetFolder) {
323
+ function writeAPIProxies(sourceFolder, targetFolder) {
203
324
  return __awaiter(this, void 0, void 0, function () {
204
- var links;
325
+ var files;
205
326
  return __generator(this, function (_a) {
206
327
  switch (_a.label) {
207
- case 0:
208
- links = [
209
- "blocks",
210
- "components",
211
- "hooks",
212
- "queries",
213
- ".env",
214
- "views",
215
- "theme.css.tsx",
216
- "types.graphql.ts",
217
- "types.views.ts",
218
- "types.blocks.ts",
219
- "utils",
220
- ];
221
- return [4 /*yield*/, Promise.all(links.map(function (file) {
222
- var src = (0, path_1.resolve)(sourceFolder, file);
223
- var dest = (0, path_1.resolve)(targetFolder, file);
224
- if ((0, fs_1.existsSync)(src)) {
225
- return (0, fs_extra_1.copy)(src, dest);
226
- }
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;"));
227
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)); }))];
228
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
229
374
  _a.sent();
230
375
  return [2 /*return*/];
231
376
  }
232
377
  });
233
378
  });
234
379
  }
235
- function runScript(dir, script) {
380
+ function syncFiles(sourceFolder, targetFolder, patterns, proxy) {
381
+ return __awaiter(this, void 0, void 0, function () {
382
+ var _this = this;
383
+ return __generator(this, function (_a) {
384
+ return [2 /*return*/, new Promise(function (ready) { return __awaiter(_this, void 0, void 0, function () {
385
+ var chokidar;
386
+ return __generator(this, function (_a) {
387
+ switch (_a.label) {
388
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("chokidar")); })];
389
+ case 1:
390
+ chokidar = (_a.sent()).default;
391
+ chokidar
392
+ .watch(patterns, {
393
+ cwd: sourceFolder,
394
+ })
395
+ .on("add", function (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
+ }
406
+ })
407
+ .on("unlink", function (path) {
408
+ (0, fs_extra_1.remove)((0, path_1.join)(targetFolder, path));
409
+ })
410
+ .on("change", function (path) {
411
+ if (!proxy) {
412
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
413
+ }
414
+ })
415
+ .on("ready", function () {
416
+ ready(undefined);
417
+ });
418
+ return [2 /*return*/];
419
+ }
420
+ });
421
+ }); })];
422
+ });
423
+ });
424
+ }
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) {
236
444
  var _a, _b;
237
445
  return __awaiter(this, void 0, void 0, function () {
238
446
  var proc;
239
447
  return __generator(this, function (_c) {
240
- proc = (0, child_process_1.spawn)("yarn", [script], {
448
+ proc = (0, child_process_1.spawn)("yarn", args, {
241
449
  cwd: dir,
242
450
  });
243
451
  (_a = proc.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
@@ -263,7 +471,7 @@ function initManifests(dir, dev) {
263
471
  isServerless: true,
264
472
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
265
473
  return __generator(this, function (_a) {
266
- (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);
267
475
  return [2 /*return*/];
268
476
  });
269
477
  }); },
@@ -276,7 +484,7 @@ function initManifests(dir, dev) {
276
484
  isServerless: true,
277
485
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
278
486
  return __generator(this, function (_a) {
279
- (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);
280
488
  return [2 /*return*/];
281
489
  });
282
490
  }); },
@@ -290,3 +498,41 @@ function initManifests(dir, dev) {
290
498
  });
291
499
  });
292
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
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 @@
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,45 @@ 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");
58
+ var compare_versions_1 = __importDefault(require("compare-versions"));
59
+ var chalk_1 = __importDefault(require("chalk"));
51
60
  function devCommand(opts) {
61
+ var _a;
52
62
  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)()];
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) {
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
+ }
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 () { });
75
+ return [4 /*yield*/, (0, promptIfRepoNameIncorrect_1.promptIfRepoThemeMismatch)()];
57
76
  case 1:
58
- _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;
59
85
  themeName = path_1.default.basename(process.cwd());
60
86
  enableFrontend = !opts.mode || opts.mode === "frontend";
61
87
  enableAdmin = !opts.mode || opts.mode === "admin";
62
88
  enableCodegen = !opts.mode || opts.mode === "codegen";
89
+ enableServerless = (_a = config.serverless) === null || _a === void 0 ? void 0 : _a.enabled;
63
90
  frontendObservable = enableFrontend
64
91
  ? (0, create_webpack_worker_1.createWebpackWorker)({
65
92
  title: "Frontend Bundle",
@@ -93,9 +120,13 @@ function devCommand(opts) {
93
120
  retainLog: opts.retainLog,
94
121
  })
95
122
  : undefined;
96
- // 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;
97
128
  // 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));
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));
99
130
  return [2 /*return*/];
100
131
  }
101
132
  });