eddev 0.2.0-beta.4 → 0.2.0-beta.40

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