eddev 0.1.51 → 0.2.0-beta.3
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.
- package/build/get-webpack-config.js +53 -148
- package/build/manifests/manifest-blocks.d.ts +12 -0
- package/build/manifests/manifest-blocks.js +61 -0
- package/build/manifests/manifest-fields.d.ts +12 -0
- package/build/manifests/manifest-fields.js +42 -0
- package/build/manifests/manifest-views.d.ts +12 -0
- package/build/manifests/manifest-views.js +49 -0
- package/build/manifests/manifest.d.ts +11 -0
- package/build/manifests/manifest.js +96 -0
- package/build/serverless/create-next-app.d.ts +7 -0
- package/build/serverless/create-next-app.js +298 -0
- package/cli/cli.js +21 -0
- package/cli/prepare-next.d.ts +0 -0
- package/cli/prepare-next.js +1 -0
- package/components/NextRouter.d.ts +9 -0
- package/components/NextRouter.js +36 -0
- package/components/ServerlessRouter.d.ts +0 -0
- package/components/ServerlessRouter.js +1 -0
- package/gravityforms/useGravityForm.js +1 -1
- package/hooks/queryUtils.js +2 -2
- package/hooks/useAppData.js +16 -4
- package/package.json +6 -1
- package/routing/routing.js +5 -0
- package/serverless-template/README.md +34 -0
- package/serverless-template/_utils/fetch-wordpress-props.ts +16 -0
- package/serverless-template/global.d.ts +9 -0
- package/serverless-template/next-env.d.ts +3 -0
- package/serverless-template/next.config.js +58 -0
- package/serverless-template/null.ts +1 -0
- package/serverless-template/package-lock.json +641 -0
- package/serverless-template/package.json +19 -0
- package/serverless-template/pages/[...slug].tsx +20 -0
- package/serverless-template/pages/_app.tsx +34 -0
- package/serverless-template/pages/api/hello.ts +10 -0
- package/serverless-template/pages/api/rest/[...method].ts +38 -0
- package/serverless-template/pages/index.tsx +12 -0
- package/serverless-template/tsconfig.json +37 -0
- package/utils/serverlessAppContext.d.ts +3 -0
- package/utils/serverlessAppContext.js +6 -0
|
@@ -67,8 +67,6 @@ var webpack_virtual_modules_1 = __importDefault(require("webpack-virtual-modules
|
|
|
67
67
|
var friendly_errors_webpack_plugin_1 = __importDefault(require("@soda/friendly-errors-webpack-plugin"));
|
|
68
68
|
// @ts-ignore
|
|
69
69
|
var webpack_plugin_1 = __importDefault(require("@loadable/webpack-plugin"));
|
|
70
|
-
var file_tree_1 = require("./file-tree");
|
|
71
|
-
var change_case_1 = require("change-case");
|
|
72
70
|
// @ts-ignore
|
|
73
71
|
var webpack_bundle_analyzer_1 = require("webpack-bundle-analyzer");
|
|
74
72
|
// @ts-ignore
|
|
@@ -76,12 +74,14 @@ var mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin
|
|
|
76
74
|
var autoprefixer_1 = __importDefault(require("autoprefixer"));
|
|
77
75
|
// Custom Babel plugins
|
|
78
76
|
var plugin_name_defined_components_1 = __importDefault(require("./babel/plugin-name-defined-components"));
|
|
79
|
-
var
|
|
77
|
+
var manifest_blocks_1 = require("./manifests/manifest-blocks");
|
|
78
|
+
var manifest_fields_1 = require("./manifests/manifest-fields");
|
|
79
|
+
var manifest_views_1 = require("./manifests/manifest-views");
|
|
80
80
|
function getWebpackConfig(opts) {
|
|
81
81
|
return __awaiter(this, void 0, void 0, function () {
|
|
82
|
-
var compiling, ALIAS, ENTRY, PLUGINS, RULES, DEFINES, VIRTUAL_MODULES, EXTERNALS, virtualModules, isServerless, isBrowser, isSSR, isDev, entryDir, distSuffix, outputFolder, loadableManifestFile, writeVirtualModule,
|
|
83
|
-
return __generator(this, function (
|
|
84
|
-
switch (
|
|
82
|
+
var compiling, ALIAS, ENTRY, PLUGINS, RULES, DEFINES, VIRTUAL_MODULES, EXTERNALS, virtualModules, isServerless, isBrowser, isSSR, isDev, entryDir, distSuffix, outputFolder, loadableManifestFile, writeVirtualModule, manifestLoaders, buildID;
|
|
83
|
+
return __generator(this, function (_a) {
|
|
84
|
+
switch (_a.label) {
|
|
85
85
|
case 0:
|
|
86
86
|
compiling = false;
|
|
87
87
|
ALIAS = {};
|
|
@@ -244,150 +244,55 @@ function getWebpackConfig(opts) {
|
|
|
244
244
|
VIRTUAL_MODULES[name] = contents;
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
|
+
manifestLoaders = [];
|
|
248
|
+
// Views
|
|
247
249
|
ALIAS["@manifest/views"] = path_1.default.resolve(opts.baseDirectory, "_view_manifest.js");
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
writeVirtualModule(ALIAS["@manifest/views"], "\n ".concat(useLoadableViews && "import loadable from '".concat(require.resolve("@loadable/component"), "';"), "\n import App from ").concat(JSON.stringify("./views/_app.tsx"), "\n\n ").concat(!useLoadableViews
|
|
260
|
-
? files.map(function (_a) {
|
|
261
|
-
var componentName = _a.componentName, module = _a.module;
|
|
262
|
-
return "import ".concat(componentName, " from ").concat(module);
|
|
263
|
-
}).join("\n")
|
|
264
|
-
: "", "\n\n export { App }\n\n export default {\n ").concat(files
|
|
265
|
-
.map(function (_a) {
|
|
266
|
-
var relative = _a.relative, componentName = _a.componentName, module = _a.module;
|
|
267
|
-
if (useLoadableViews) {
|
|
268
|
-
// In serverless mode, export @loadable components. Script tags will be
|
|
269
|
-
// auto-included in output HTML
|
|
270
|
-
return "\"".concat(relative, "\": loadable(() => import(").concat(module, "))");
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
// On non-serverless, the templates are bundled straight into the main app.
|
|
274
|
-
return "\"".concat(relative, "\": ").concat(componentName);
|
|
275
|
-
}
|
|
276
|
-
})
|
|
277
|
-
.join(",\n"), "\n }\n "));
|
|
278
|
-
};
|
|
279
|
-
templateLookupPattern = path_1.default.resolve(opts.baseDirectory, "views/**/*.tsx");
|
|
280
|
-
if (!opts.isAdmin) return [3 /*break*/, 1];
|
|
281
|
-
writeVirtualModule(ALIAS["@manifest/views"], "\n export const App = null\n export default {}\n ");
|
|
282
|
-
return [3 /*break*/, 5];
|
|
283
|
-
case 1:
|
|
284
|
-
if (!isDev) return [3 /*break*/, 3];
|
|
285
|
-
return [4 /*yield*/, (0, file_tree_1.watchFileTree)(templateLookupPattern, updateTemplateRouter)];
|
|
286
|
-
case 2:
|
|
287
|
-
_d.sent();
|
|
288
|
-
return [3 /*break*/, 5];
|
|
289
|
-
case 3:
|
|
290
|
-
_a = updateTemplateRouter;
|
|
291
|
-
return [4 /*yield*/, (0, file_tree_1.getFileTree)(templateLookupPattern)];
|
|
292
|
-
case 4:
|
|
293
|
-
_a.apply(void 0, [_d.sent()]);
|
|
294
|
-
_d.label = 5;
|
|
295
|
-
case 5:
|
|
250
|
+
manifestLoaders.push((0, manifest_views_1.createViewManifestGenerator)({
|
|
251
|
+
baseDirectory: opts.baseDirectory,
|
|
252
|
+
isAdmin: true,
|
|
253
|
+
isDev: isDev,
|
|
254
|
+
isServerless: isServerless,
|
|
255
|
+
watch: isDev,
|
|
256
|
+
onGenerate: function (manifest) {
|
|
257
|
+
writeVirtualModule(ALIAS["@manifest/views"], manifest);
|
|
258
|
+
},
|
|
259
|
+
}));
|
|
260
|
+
// Field manifest
|
|
296
261
|
ALIAS["@manifest/fields"] = path_1.default.resolve(opts.baseDirectory, "_fields_manifest.js");
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
return "\"".concat(name, "\": ").concat(componentName);
|
|
314
|
-
})
|
|
315
|
-
.join(",\n"), "\n }\n "));
|
|
316
|
-
};
|
|
317
|
-
fieldTypeLookupPattern = path_1.default.resolve(opts.baseDirectory, "backend/fields/**.tsx");
|
|
318
|
-
if (!!opts.isAdmin) return [3 /*break*/, 6];
|
|
319
|
-
writeVirtualModule(ALIAS["@manifest/fields"], "\n export default {}\n ");
|
|
320
|
-
return [3 /*break*/, 10];
|
|
321
|
-
case 6:
|
|
322
|
-
if (!isDev) return [3 /*break*/, 8];
|
|
323
|
-
return [4 /*yield*/, (0, file_tree_1.watchFileTree)(fieldTypeLookupPattern, updateFieldManifest)];
|
|
324
|
-
case 7:
|
|
325
|
-
_d.sent();
|
|
326
|
-
return [3 /*break*/, 10];
|
|
327
|
-
case 8:
|
|
328
|
-
_b = updateFieldManifest;
|
|
329
|
-
return [4 /*yield*/, (0, file_tree_1.getFileTree)(fieldTypeLookupPattern)];
|
|
330
|
-
case 9:
|
|
331
|
-
_b.apply(void 0, [_d.sent()]);
|
|
332
|
-
_d.label = 10;
|
|
333
|
-
case 10:
|
|
262
|
+
if (opts.isAdmin) {
|
|
263
|
+
manifestLoaders.push((0, manifest_fields_1.createFieldManifestGenerator)({
|
|
264
|
+
baseDirectory: opts.baseDirectory,
|
|
265
|
+
isAdmin: true,
|
|
266
|
+
isDev: isDev,
|
|
267
|
+
isServerless: isServerless,
|
|
268
|
+
watch: isDev,
|
|
269
|
+
onGenerate: function (manifest) {
|
|
270
|
+
writeVirtualModule(ALIAS["@manifest/fields"], manifest);
|
|
271
|
+
},
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
writeVirtualModule(ALIAS["@manifest/fields"], "\n export default {}\n ");
|
|
276
|
+
}
|
|
277
|
+
// Block manifest
|
|
334
278
|
ALIAS["@manifest/blocks"] = path_1.default.resolve(opts.baseDirectory, "_blocks_manifest.js");
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
var relative = _a.relative, componentName = _a.componentName, module = _a.module, dynamic = _a.dynamic;
|
|
353
|
-
var parts = relative.replace(/\.tsx$/, "").split("/");
|
|
354
|
-
var blockName = "acf/" + parts.slice(1).join("-");
|
|
355
|
-
if (dynamic) {
|
|
356
|
-
console.log("Dynamic", blockName);
|
|
357
|
-
return null;
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
return "import ".concat(componentName, " from ").concat(module);
|
|
361
|
-
}
|
|
362
|
-
})
|
|
363
|
-
.filter(Boolean)
|
|
364
|
-
.join("\n"), "\n\n export default {\n ...coreBlocks,\n ").concat(files
|
|
365
|
-
.map(function (_a) {
|
|
366
|
-
var relative = _a.relative, componentName = _a.componentName, module = _a.module, dynamic = _a.dynamic;
|
|
367
|
-
var parts = relative.replace(/\.tsx$/, "").split("/");
|
|
368
|
-
var blockName = "acf/" + parts.slice(1).join("-");
|
|
369
|
-
if (dynamic) {
|
|
370
|
-
return "\"".concat(blockName, "\": loadable(() => import(").concat(module, "))");
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
return "\"".concat(blockName, "\": ").concat(componentName);
|
|
374
|
-
}
|
|
375
|
-
})
|
|
376
|
-
.join(",\n"), "\n }\n "));
|
|
377
|
-
};
|
|
378
|
-
blockLookupManifest = path_1.default.resolve(opts.baseDirectory, "blocks/**/*.tsx");
|
|
379
|
-
if (!isDev) return [3 /*break*/, 12];
|
|
380
|
-
return [4 /*yield*/, (0, file_tree_1.watchFileTree)(blockLookupManifest, updateBlocksManifest)];
|
|
381
|
-
case 11:
|
|
382
|
-
_d.sent();
|
|
383
|
-
return [3 /*break*/, 14];
|
|
384
|
-
case 12:
|
|
385
|
-
_c = updateBlocksManifest;
|
|
386
|
-
return [4 /*yield*/, (0, file_tree_1.getFileTree)(blockLookupManifest)];
|
|
387
|
-
case 13:
|
|
388
|
-
_c.apply(void 0, [_d.sent()]);
|
|
389
|
-
_d.label = 14;
|
|
390
|
-
case 14:
|
|
279
|
+
manifestLoaders.push((0, manifest_blocks_1.createBlockManifestGenerator)({
|
|
280
|
+
baseDirectory: opts.baseDirectory,
|
|
281
|
+
isAdmin: opts.isAdmin,
|
|
282
|
+
isDev: isDev,
|
|
283
|
+
isServerless: isServerless,
|
|
284
|
+
watch: isDev,
|
|
285
|
+
onGenerate: function (manifest) {
|
|
286
|
+
writeVirtualModule(ALIAS["@manifest/blocks"], manifest);
|
|
287
|
+
},
|
|
288
|
+
}));
|
|
289
|
+
// Wait for all manifests to resolve
|
|
290
|
+
return [4 /*yield*/, Promise.all(manifestLoaders)
|
|
291
|
+
// External Gutenberg
|
|
292
|
+
];
|
|
293
|
+
case 1:
|
|
294
|
+
// Wait for all manifests to resolve
|
|
295
|
+
_a.sent();
|
|
391
296
|
// External Gutenberg
|
|
392
297
|
EXTERNALS["@wordpress/components"] = ["window", "wp"];
|
|
393
298
|
EXTERNALS["@wordpress/element"] = ["window", "wp"];
|
|
@@ -409,6 +314,7 @@ function getWebpackConfig(opts) {
|
|
|
409
314
|
}
|
|
410
315
|
// Define some values
|
|
411
316
|
DEFINES["process.browser"] = JSON.stringify(isBrowser);
|
|
317
|
+
DEFINES["process.serverless"] = "false";
|
|
412
318
|
DEFINES["process.ssr"] = JSON.stringify(isServerless && !isBrowser);
|
|
413
319
|
DEFINES["process.LOADABLE_STATS_FILE"] = JSON.stringify(loadableManifestFile);
|
|
414
320
|
DEFINES["process.dev"] = isDev ? "true" : "false";
|
|
@@ -436,7 +342,6 @@ function getWebpackConfig(opts) {
|
|
|
436
342
|
output: {
|
|
437
343
|
filename: "[name].".concat(opts.isAdmin ? "admin" : "frontend", ".js?v=").concat(buildID),
|
|
438
344
|
chunkFilename: "[name].".concat(opts.isAdmin ? "admin" : "frontend", ".js?v=").concat(buildID),
|
|
439
|
-
// publicPath: isDev ? `//127.0.0.1:${opts.hotPort}/` : `/wp-content/themes/${opts.themeName}/dist/${distSuffix}/`,
|
|
440
345
|
publicPath: "/wp-content/themes/".concat(opts.themeName, "/dist/").concat(distSuffix, "/"),
|
|
441
346
|
path: outputFolder,
|
|
442
347
|
globalObject: isSSR ? "this" : "self",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare type Options = {
|
|
2
|
+
baseDirectory: string;
|
|
3
|
+
isAdmin: boolean;
|
|
4
|
+
isDev: boolean;
|
|
5
|
+
isServerless: boolean;
|
|
6
|
+
onGenerate: (value: string) => void;
|
|
7
|
+
watch: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function createBlockManifestGenerator(opts: Options): Promise<{
|
|
10
|
+
close(): void;
|
|
11
|
+
}>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createBlockManifestGenerator = void 0;
|
|
7
|
+
var manifest_1 = require("./manifest");
|
|
8
|
+
var path_1 = __importDefault(require("path"));
|
|
9
|
+
var change_case_1 = require("change-case");
|
|
10
|
+
var fs_1 = require("fs");
|
|
11
|
+
var JSX = /\.(jsx|tsx|ts|js)$/i;
|
|
12
|
+
function createBlockManifestGenerator(opts) {
|
|
13
|
+
return (0, manifest_1.createManifestGenerator)({
|
|
14
|
+
glob: path_1.default.join(opts.baseDirectory, "/blocks/**/*.tsx"),
|
|
15
|
+
onGenerate: opts.onGenerate,
|
|
16
|
+
watch: opts.watch,
|
|
17
|
+
generate: function (fileNames) {
|
|
18
|
+
var files = fileNames
|
|
19
|
+
.filter(function (file) { return !file.includes("/_core"); })
|
|
20
|
+
.map(function (file) {
|
|
21
|
+
var relative = path_1.default.relative(opts.baseDirectory, file).replace(JSX, "");
|
|
22
|
+
var name = path_1.default.basename(file).replace(JSX, "");
|
|
23
|
+
var module = JSON.stringify("./" + relative).replace(JSX, "");
|
|
24
|
+
var componentName = (0, change_case_1.pascalCase)(name);
|
|
25
|
+
// Test if the block has Dynamic: true in the header
|
|
26
|
+
var dynamic = !opts.isAdmin &&
|
|
27
|
+
!!(0, fs_1.readFileSync)(file)
|
|
28
|
+
.toString()
|
|
29
|
+
.match(/\*[\s]*dynamic: true/i);
|
|
30
|
+
return { relative: relative, name: name, module: module, componentName: componentName, dynamic: dynamic };
|
|
31
|
+
});
|
|
32
|
+
return "\n import coreBlocks from './blocks/_core'\n import { dynamic } from 'eddev/dynamic';\n \n ".concat(files
|
|
33
|
+
.map(function (_a) {
|
|
34
|
+
var relative = _a.relative, componentName = _a.componentName, module = _a.module, dynamic = _a.dynamic;
|
|
35
|
+
var parts = relative.replace(/\.tsx$/, "").split("/");
|
|
36
|
+
var blockName = "acf/" + parts.slice(1).join("-");
|
|
37
|
+
if (dynamic) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return "import ".concat(componentName, " from ").concat(module);
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
.filter(Boolean)
|
|
45
|
+
.join("\n"), "\n \n export default {\n ...coreBlocks,\n ").concat(files
|
|
46
|
+
.map(function (_a) {
|
|
47
|
+
var relative = _a.relative, componentName = _a.componentName, module = _a.module, dynamic = _a.dynamic;
|
|
48
|
+
var parts = relative.replace(/\.tsx$/, "").split("/");
|
|
49
|
+
var blockName = "acf/" + parts.slice(1).join("-");
|
|
50
|
+
if (dynamic) {
|
|
51
|
+
return "\"".concat(blockName, "\": dynamic(() => import(").concat(module, "))");
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return "\"".concat(blockName, "\": ").concat(componentName);
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
.join(",\n"), "\n }\n ");
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
exports.createBlockManifestGenerator = createBlockManifestGenerator;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare type Options = {
|
|
2
|
+
baseDirectory: string;
|
|
3
|
+
isAdmin: boolean;
|
|
4
|
+
isDev: boolean;
|
|
5
|
+
isServerless: boolean;
|
|
6
|
+
onGenerate: (value: string) => void;
|
|
7
|
+
watch: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function createFieldManifestGenerator(opts: Options): Promise<{
|
|
10
|
+
close(): void;
|
|
11
|
+
}>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createFieldManifestGenerator = void 0;
|
|
7
|
+
var manifest_1 = require("./manifest");
|
|
8
|
+
var path_1 = __importDefault(require("path"));
|
|
9
|
+
var change_case_1 = require("change-case");
|
|
10
|
+
function createFieldManifestGenerator(opts) {
|
|
11
|
+
return (0, manifest_1.createManifestGenerator)({
|
|
12
|
+
glob: path_1.default.join(opts.baseDirectory, "/backend/fields/**.tsx"),
|
|
13
|
+
onGenerate: opts.onGenerate,
|
|
14
|
+
watch: opts.watch,
|
|
15
|
+
generate: function (fileNames) {
|
|
16
|
+
if (opts.isAdmin) {
|
|
17
|
+
var files = fileNames
|
|
18
|
+
.filter(function (file) { return !file.includes("/_app"); })
|
|
19
|
+
.map(function (file) {
|
|
20
|
+
var relative = path_1.default.relative(opts.baseDirectory, file);
|
|
21
|
+
var name = path_1.default.basename(file).replace(/\.(jsx|tsx|ts|js)$/i, "");
|
|
22
|
+
var module = JSON.stringify("./" + relative);
|
|
23
|
+
var componentName = "FieldType" + (0, change_case_1.pascalCase)(name);
|
|
24
|
+
return { relative: relative, name: name, module: module, componentName: componentName };
|
|
25
|
+
});
|
|
26
|
+
return "\n ".concat(files.map(function (_a) {
|
|
27
|
+
var componentName = _a.componentName, module = _a.module;
|
|
28
|
+
return "import ".concat(componentName, " from ").concat(module);
|
|
29
|
+
}).join("\n"), "\n\n export default {\n ").concat(files
|
|
30
|
+
.map(function (_a) {
|
|
31
|
+
var relative = _a.relative, componentName = _a.componentName, module = _a.module, name = _a.name;
|
|
32
|
+
return "\"".concat(name, "\": ").concat(componentName);
|
|
33
|
+
})
|
|
34
|
+
.join(",\n"), "\n }\n ");
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return "export default {}";
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
exports.createFieldManifestGenerator = createFieldManifestGenerator;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare type Options = {
|
|
2
|
+
baseDirectory: string;
|
|
3
|
+
isAdmin: boolean;
|
|
4
|
+
isDev: boolean;
|
|
5
|
+
isServerless: boolean;
|
|
6
|
+
onGenerate: (value: string) => void;
|
|
7
|
+
watch: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function createViewManifestGenerator(opts: Options): Promise<{
|
|
10
|
+
close(): void;
|
|
11
|
+
}>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createViewManifestGenerator = void 0;
|
|
7
|
+
var manifest_1 = require("./manifest");
|
|
8
|
+
var path_1 = __importDefault(require("path"));
|
|
9
|
+
var change_case_1 = require("change-case");
|
|
10
|
+
var JSX = /\.(jsx|tsx|ts|js)$/i;
|
|
11
|
+
function createViewManifestGenerator(opts) {
|
|
12
|
+
return (0, manifest_1.createManifestGenerator)({
|
|
13
|
+
glob: path_1.default.join(opts.baseDirectory, "/views/**/*.tsx"),
|
|
14
|
+
onGenerate: opts.onGenerate,
|
|
15
|
+
watch: opts.watch,
|
|
16
|
+
generate: function (fileNames) {
|
|
17
|
+
var files = fileNames
|
|
18
|
+
.filter(function (file) { return !file.includes("/_app"); })
|
|
19
|
+
.map(function (file) {
|
|
20
|
+
var relative = path_1.default.relative(opts.baseDirectory, file).replace(JSX, "");
|
|
21
|
+
var name = path_1.default.basename(file).replace(JSX, "");
|
|
22
|
+
var module = JSON.stringify("./" + relative);
|
|
23
|
+
var componentName = "View" + (0, change_case_1.pascalCase)(name);
|
|
24
|
+
return { relative: relative, name: name, module: module, componentName: componentName };
|
|
25
|
+
});
|
|
26
|
+
var useDynamicViews = opts.isServerless;
|
|
27
|
+
return "\n ".concat(useDynamicViews && "import { dynamic } from 'eddev/dynamic';", "\n import App from ").concat(JSON.stringify("./views/_app"), "\n\n ").concat(!useDynamicViews
|
|
28
|
+
? files.map(function (_a) {
|
|
29
|
+
var componentName = _a.componentName, module = _a.module;
|
|
30
|
+
return "import ".concat(componentName, " from ").concat(module);
|
|
31
|
+
}).join("\n")
|
|
32
|
+
: "", "\n\n export { App }\n\n export default {\n ").concat(files
|
|
33
|
+
.map(function (_a) {
|
|
34
|
+
var relative = _a.relative, componentName = _a.componentName, module = _a.module;
|
|
35
|
+
if (useDynamicViews) {
|
|
36
|
+
// In serverless mode, export @loadable components. Script tags will be
|
|
37
|
+
// auto-included in output HTML
|
|
38
|
+
return "\"".concat(relative, "\": dynamic(() => import(").concat(module, "))");
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// On non-serverless, the templates are bundled straight into the main app.
|
|
42
|
+
return "\"".concat(relative, "\": ").concat(componentName);
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
.join(",\n"), "\n }\n ");
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
exports.createViewManifestGenerator = createViewManifestGenerator;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare type Options = {
|
|
2
|
+
glob: string;
|
|
3
|
+
watch: boolean;
|
|
4
|
+
generate: (files: string[]) => Promise<string> | string;
|
|
5
|
+
onGenerate: (value: string) => void;
|
|
6
|
+
};
|
|
7
|
+
declare type ManifestGenerator = {
|
|
8
|
+
close(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function createManifestGenerator(opts: Options): Promise<ManifestGenerator>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createManifestGenerator = void 0;
|
|
40
|
+
var file_tree_1 = require("../file-tree");
|
|
41
|
+
function createManifestGenerator(opts) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
+
var resolvedFirst;
|
|
44
|
+
var _this = this;
|
|
45
|
+
return __generator(this, function (_a) {
|
|
46
|
+
resolvedFirst = false;
|
|
47
|
+
return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
|
|
48
|
+
var close, self, files, update;
|
|
49
|
+
var _this = this;
|
|
50
|
+
return __generator(this, function (_a) {
|
|
51
|
+
switch (_a.label) {
|
|
52
|
+
case 0:
|
|
53
|
+
self = {
|
|
54
|
+
close: function () {
|
|
55
|
+
if (close)
|
|
56
|
+
close();
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
files = [];
|
|
60
|
+
update = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
61
|
+
var value;
|
|
62
|
+
return __generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0: return [4 /*yield*/, opts.generate(files)];
|
|
65
|
+
case 1:
|
|
66
|
+
value = _a.sent();
|
|
67
|
+
opts.onGenerate(value);
|
|
68
|
+
if (!resolvedFirst) {
|
|
69
|
+
resolvedFirst = true;
|
|
70
|
+
resolve(self);
|
|
71
|
+
}
|
|
72
|
+
return [2 /*return*/];
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}); };
|
|
76
|
+
if (!opts.watch) return [3 /*break*/, 2];
|
|
77
|
+
return [4 /*yield*/, (0, file_tree_1.watchFileTree)(opts.glob, function (updatedFiles) {
|
|
78
|
+
files = updatedFiles;
|
|
79
|
+
update();
|
|
80
|
+
})];
|
|
81
|
+
case 1:
|
|
82
|
+
close = _a.sent();
|
|
83
|
+
return [3 /*break*/, 4];
|
|
84
|
+
case 2: return [4 /*yield*/, (0, file_tree_1.getFileTree)(opts.glob)];
|
|
85
|
+
case 3:
|
|
86
|
+
files = _a.sent();
|
|
87
|
+
update();
|
|
88
|
+
_a.label = 4;
|
|
89
|
+
case 4: return [2 /*return*/];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}); })];
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
exports.createManifestGenerator = createManifestGenerator;
|