eddev 0.2.0-beta.4 → 0.2.0-beta.42

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 (131) 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 +25 -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 +312 -78
  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 +33 -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 +38 -7
  15. package/cli/build.prod.js +13 -1
  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 +19 -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 +6 -0
  98. package/serverless/define-rpc-router.js +35 -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/rest/{[...method].ts → [method].ts} +1 -1
  117. package/serverless-template/pages/api/trpc/[...trpc].ts +26 -0
  118. package/style/createStitches.d.ts +71 -1
  119. package/style/createStitches.js +151 -45
  120. package/utils/getRepoName.d.ts +2 -2
  121. package/utils/getRepoName.js +14 -52
  122. package/utils/updateEnvFile.d.ts +1 -0
  123. package/utils/updateEnvFile.js +76 -0
  124. package/cli/prepare-next.d.ts +0 -0
  125. package/cli/prepare-next.js +0 -1
  126. package/entry/entry.serverless.dev.d.ts +0 -0
  127. package/entry/entry.serverless.dev.js +0 -2
  128. package/fields/ImageWell.d.ts +0 -8
  129. package/fields/ImageWell.js +0 -64
  130. package/serverless-template/package-lock.json +0 -641
  131. 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,67 +76,159 @@ 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 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
- serverlessDirectory = (0, path_1.resolve)(opts.baseDirectory, ".serverless");
69
- // Clean first
70
- return [4 /*yield*/, clean(serverlessDirectory)
71
- // Copy the template folder
72
- ];
93
+ isVercel = process.env.VERCEL;
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);
98
+ if (!!isVercel) return [3 /*break*/, 2];
99
+ return [4 /*yield*/, clean(serverlessDirectory)];
73
100
  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();
101
+ _b.sent();
102
+ _b.label = 2;
103
+ case 2:
104
+ // Copy the template folder
105
+ return [4 /*yield*/, copyTemplate(serverlessDirectory)
83
106
  // 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
- ];
107
+ ];
88
108
  case 3:
109
+ // Copy the template folder
110
+ _b.sent();
89
111
  // 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
- ];
112
+ return [4 /*yield*/, updatePackagesFile((0, path_1.resolve)(__dirname, "../../serverless-template"), opts.baseDirectory)];
96
113
  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
114
+ // Update package.json
115
+ _b.sent();
116
+ assetPaths = ((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.themeAssets) || [];
117
+ if (!!isVercel) return [3 /*break*/, 11];
118
+ // Sync important files during development, as they change
119
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, [
120
+ "blocks/**/*",
121
+ "components/**/*",
122
+ "hooks/**/*",
123
+ "queries/**/*",
124
+ ".env",
125
+ "views/**/*",
126
+ "theme.css.tsx",
127
+ "types.graphql.ts",
128
+ "types.views.ts",
129
+ "types.blocks.ts",
130
+ "types.api.ts",
131
+ "utils/**/*",
132
+ "ed.config.json",
133
+ ])
134
+ // Also sync APIs into the APIs folder
103
135
  ];
104
136
  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")];
137
+ // Sync important files during development, as they change
138
+ _b.sent();
139
+ // Also sync APIs into the APIs folder
140
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "apis"), ["**/*.{tsx,ts,js,jsx}"])];
111
141
  case 6:
112
- _a.sent();
113
- return [3 /*break*/, 9];
142
+ // Also sync APIs into the APIs folder
143
+ _b.sent();
144
+ return [4 /*yield*/, syncAPIProxies((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "pages/api"))
145
+ // Sync the public folder
146
+ ];
114
147
  case 7:
115
- if (!opts.build) return [3 /*break*/, 9];
116
- return [4 /*yield*/, runScript(serverlessDirectory, "build")];
148
+ _b.sent();
149
+ if (!assetPaths.length) return [3 /*break*/, 9];
150
+ return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
117
151
  case 8:
118
- _a.sent();
119
- _a.label = 9;
120
- case 9: return [2 /*return*/];
152
+ _b.sent();
153
+ _b.label = 9;
154
+ case 9:
155
+ // Sync favicon
156
+ return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])];
157
+ case 10:
158
+ // Sync favicon
159
+ _b.sent();
160
+ return [3 /*break*/, 16];
161
+ case 11:
162
+ if (!assetPaths.length) return [3 /*break*/, 13];
163
+ return [4 /*yield*/, copyFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
164
+ case 12:
165
+ _b.sent();
166
+ _b.label = 13;
167
+ case 13:
168
+ // Sync favicon
169
+ return [4 /*yield*/, copyFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])
170
+ // Write APIs proxy code
171
+ ];
172
+ case 14:
173
+ // Sync favicon
174
+ _b.sent();
175
+ // Write APIs proxy code
176
+ return [4 /*yield*/, writeAPIProxies((0, path_1.join)(opts.baseDirectory, "apis"), (0, path_1.join)(serverlessDirectory, "pages/api"))
177
+ // Remove pages/api/trpc directory if no _rpc is found
178
+ ];
179
+ case 15:
180
+ // Write APIs proxy code
181
+ _b.sent();
182
+ // Remove pages/api/trpc directory if no _rpc is found
183
+ console.log({
184
+ index: (0, path_1.join)(opts.baseDirectory, "apis/_rpc/index.ts"),
185
+ rpc: (0, path_1.join)(opts.baseDirectory, "apis/_rpc.ts"),
186
+ });
187
+ if (!(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "apis/_rpc/index.ts")) &&
188
+ !(0, fs_1.existsSync)((0, path_1.join)(opts.baseDirectory, "apis/_rpc.ts"))) {
189
+ // removeSync(join(serverlessDirectory, "pages/api/trpc"))
190
+ }
191
+ _b.label = 16;
192
+ case 16:
193
+ // Create manifests
194
+ return [4 /*yield*/, initManifests(serverlessDirectory, opts.dev)
195
+ // Update packages
196
+ ];
197
+ case 17:
198
+ // Create manifests
199
+ _b.sent();
200
+ if (!!isVercel) return [3 /*break*/, 19];
201
+ sendSignal({ code: "packaging" });
202
+ return [4 /*yield*/, updatePackages(serverlessDirectory)];
203
+ case 18:
204
+ _b.sent();
205
+ _b.label = 19;
206
+ case 19:
207
+ sendSignal({ code: "compiling" });
208
+ if (!opts.dev) return [3 /*break*/, 22];
209
+ return [4 /*yield*/, getPort(3000)
210
+ // Write the endpoint URL to .env
211
+ ];
212
+ case 20:
213
+ port = _b.sent();
214
+ // Write the endpoint URL to .env
215
+ (0, updateEnvFile_1.updateEnvFile)({
216
+ DEBUG_SERVERLESS_ENDPOINT: "http://localhost:".concat(port),
217
+ }, opts.baseDirectory);
218
+ sendSignal({ code: "url", url: "http://127.0.0.1:".concat(port) });
219
+ // await devNext(serverlessDirectory, port)
220
+ return [4 /*yield*/, runScript(serverlessDirectory, ["dev", "--port", String(port)])];
221
+ case 21:
222
+ // await devNext(serverlessDirectory, port)
223
+ _b.sent();
224
+ return [3 /*break*/, 24];
225
+ case 22:
226
+ if (!opts.build) return [3 /*break*/, 24];
227
+ return [4 /*yield*/, runScript(serverlessDirectory, ["build"])];
228
+ case 23:
229
+ _b.sent();
230
+ _b.label = 24;
231
+ case 24: return [2 /*return*/];
121
232
  }
122
233
  });
123
234
  });
@@ -152,17 +263,15 @@ function copyTemplate(targetFolder) {
152
263
  switch (_a.label) {
153
264
  case 0:
154
265
  sourceFolder = (0, path_1.resolve)(__dirname, "../../serverless-template");
155
- console.log("Copying from", sourceFolder, "to", targetFolder);
156
266
  (0, fs_extra_1.mkdirp)(targetFolder);
157
267
  return [4 /*yield*/, (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, "**/*.*"))];
158
268
  case 1:
159
269
  files = _a.sent();
160
270
  return [4 /*yield*/, Promise.all(files.map(function (src) {
271
+ if (src.includes("package.json"))
272
+ return null;
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({}, sourcePackage), { dependencies: __assign(__assign({}, (sourcePackage.dependencies || {})), (targetPackage.dependencies || {})), devDependencies: __assign(__assign({}, (sourcePackage.devDependencies || {})), (targetPackage.devDependencies || {})) });
201
310
  (0, fs_extra_1.writeJSON)(targetPackageFile, mergedPackage, {
202
311
  spaces: 2,
203
312
  });
@@ -205,45 +314,132 @@ 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
+ (0, fs_extra_1.ensureFileSync)((0, path_1.join)(outputPath));
331
+ return (0, fs_extra_1.writeFile)(outputPath, "import handler from \"".concat(file, "\"; export default handler;"));
233
332
  }))];
333
+ case 2:
334
+ _a.sent();
335
+ return [2 /*return*/];
336
+ }
337
+ });
338
+ });
339
+ }
340
+ function syncAPIProxies(sourceFolder, targetFolder) {
341
+ return __awaiter(this, void 0, void 0, function () {
342
+ return __generator(this, function (_a) {
343
+ return [2 /*return*/, syncFiles(sourceFolder, targetFolder, ["**/*"], function (inputPath) {
344
+ if (inputPath.includes("_rpc"))
345
+ return null;
346
+ return "import handler from \"".concat(inputPath.replace(/\.(ts|js)x?$/, ""), "\"; export default handler;");
347
+ })];
348
+ });
349
+ });
350
+ }
351
+ function copyFiles(sourceFolder, targetFolder, patterns) {
352
+ return __awaiter(this, void 0, void 0, function () {
353
+ var files;
354
+ return __generator(this, function (_a) {
355
+ switch (_a.label) {
356
+ case 0: return [4 /*yield*/, Promise.all(patterns.map(function (pattern) { return (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, pattern)); }))];
234
357
  case 1:
358
+ files = (_a.sent()).flat();
359
+ // Replace sourceFolder in each path, and copy to target folder
360
+ return [4 /*yield*/, Promise.all(files.map(function (file) {
361
+ var stat = (0, fs_1.statSync)(file);
362
+ if (!stat.isDirectory()) {
363
+ return (0, fs_extra_1.copy)(file, file.replace(sourceFolder, targetFolder));
364
+ }
365
+ }))];
366
+ case 2:
367
+ // Replace sourceFolder in each path, and copy to target folder
235
368
  _a.sent();
236
369
  return [2 /*return*/];
237
370
  }
238
371
  });
239
372
  });
240
373
  }
241
- function runScript(dir, script) {
374
+ function syncFiles(sourceFolder, targetFolder, patterns, proxy) {
375
+ return __awaiter(this, void 0, void 0, function () {
376
+ var _this = this;
377
+ return __generator(this, function (_a) {
378
+ return [2 /*return*/, new Promise(function (ready) { return __awaiter(_this, void 0, void 0, function () {
379
+ var chokidar;
380
+ return __generator(this, function (_a) {
381
+ switch (_a.label) {
382
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("chokidar")); })];
383
+ case 1:
384
+ chokidar = (_a.sent()).default;
385
+ chokidar
386
+ .watch(patterns, {
387
+ cwd: sourceFolder,
388
+ })
389
+ .on("add", function (path) {
390
+ if (proxy) {
391
+ var output = proxy((0, path_1.relative)(targetFolder, (0, path_1.join)(sourceFolder, path)), (0, path_1.join)(targetFolder, path));
392
+ if (typeof output === "string") {
393
+ (0, fs_extra_1.ensureFileSync)((0, path_1.join)(targetFolder, path));
394
+ (0, fs_extra_1.writeFile)((0, path_1.join)(targetFolder, path), output);
395
+ }
396
+ }
397
+ else {
398
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
399
+ }
400
+ })
401
+ .on("unlink", function (path) {
402
+ (0, fs_extra_1.remove)((0, path_1.join)(targetFolder, path));
403
+ })
404
+ .on("change", function (path) {
405
+ if (!proxy) {
406
+ (0, fs_extra_1.copy)((0, path_1.join)(sourceFolder, path), (0, path_1.join)(targetFolder, path));
407
+ }
408
+ })
409
+ .on("ready", function () {
410
+ ready(undefined);
411
+ });
412
+ return [2 /*return*/];
413
+ }
414
+ });
415
+ }); })];
416
+ });
417
+ });
418
+ }
419
+ // async function devNext(dir: string, port: number) {
420
+ // const { createServer } = await import("http")
421
+ // const { parse } = await import("url")
422
+ // const { default: next } = await import("next")
423
+ // const app = next({
424
+ // dev: true,
425
+ // dir: dir,
426
+ // minimalMode: true,
427
+ // customServer: true,
428
+ // port: port,
429
+ // })
430
+ // const handle = app.getRequestHandler()
431
+ // app.prepare().then(() => {
432
+ // createServer((req, res) => {
433
+ // handle(req, res, parse(req.url || "", true))
434
+ // }).listen(app.port)
435
+ // })
436
+ // }
437
+ function runScript(dir, args) {
242
438
  var _a, _b;
243
439
  return __awaiter(this, void 0, void 0, function () {
244
440
  var proc;
245
441
  return __generator(this, function (_c) {
246
- proc = (0, child_process_1.spawn)("yarn", [script], {
442
+ proc = (0, child_process_1.spawn)("yarn", args, {
247
443
  cwd: dir,
248
444
  });
249
445
  (_a = proc.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
@@ -269,7 +465,7 @@ function initManifests(dir, dev) {
269
465
  isServerless: true,
270
466
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
271
467
  return __generator(this, function (_a) {
272
- (0, promises_1.writeFile)((0, path_1.resolve)(dir, "manifest_blocks.ts"), manifest);
468
+ (0, fs_extra_1.writeFile)((0, path_1.resolve)(dir, "manifest_blocks.ts"), manifest);
273
469
  return [2 /*return*/];
274
470
  });
275
471
  }); },
@@ -282,7 +478,7 @@ function initManifests(dir, dev) {
282
478
  isServerless: true,
283
479
  onGenerate: function (manifest) { return __awaiter(_this, void 0, void 0, function () {
284
480
  return __generator(this, function (_a) {
285
- (0, promises_1.writeFile)((0, path_1.resolve)(dir, "manifest_views.ts"), manifest);
481
+ (0, fs_extra_1.writeFile)((0, path_1.resolve)(dir, "manifest_views.ts"), manifest);
286
482
  return [2 /*return*/];
287
483
  });
288
484
  }); },
@@ -296,3 +492,41 @@ function initManifests(dir, dev) {
296
492
  });
297
493
  });
298
494
  }
495
+ function getPort(port) {
496
+ if (port === void 0) { port = 3000; }
497
+ return __awaiter(this, void 0, void 0, function () {
498
+ var createServer;
499
+ var _this = this;
500
+ return __generator(this, function (_a) {
501
+ switch (_a.label) {
502
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("net")); })];
503
+ case 1:
504
+ createServer = (_a.sent()).createServer;
505
+ return [4 /*yield*/, new Promise(function (resolve) {
506
+ var server = createServer();
507
+ server.listen(port, "127.0.0.1");
508
+ server.on("listening", function () {
509
+ server.once("close", function () {
510
+ resolve(port);
511
+ });
512
+ server.close();
513
+ });
514
+ server.on("error", function () { return __awaiter(_this, void 0, void 0, function () {
515
+ var _a;
516
+ return __generator(this, function (_b) {
517
+ switch (_b.label) {
518
+ case 0:
519
+ _a = resolve;
520
+ return [4 /*yield*/, getPort(port + 1)];
521
+ case 1:
522
+ _a.apply(void 0, [_b.sent()]);
523
+ return [2 /*return*/];
524
+ }
525
+ });
526
+ }); });
527
+ })];
528
+ case 2: return [2 /*return*/, _a.sent()];
529
+ }
530
+ });
531
+ });
532
+ }
@@ -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 ");
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
  });