@shuvi/service 1.0.3 → 1.0.5
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/lib/analysis/index.d.ts +6 -0
- package/lib/analysis/index.js +78 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/package.json +9 -8
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.analysis = void 0;
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const logger_1 = __importDefault(require("@shuvi/utils/lib/logger"));
|
|
42
|
+
const events_1 = require("@shuvi/telemetry/lib/events");
|
|
43
|
+
const recursiveReaddir_1 = require("@shuvi/utils/lib/recursiveReaddir");
|
|
44
|
+
const typescript_1 = require("../bundler/typescript");
|
|
45
|
+
const analysis = ({ context, telemetry }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
if (!telemetry || !context) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
logger_1.default.info('Start collecting data...');
|
|
50
|
+
const analysisBegin = process.hrtime();
|
|
51
|
+
const routesExtensions = ['ts', 'tsx', 'js', 'jsx'];
|
|
52
|
+
const routePaths = yield (0, recursiveReaddir_1.recursiveReadDir)(context.paths.routesDir, {
|
|
53
|
+
filter: new RegExp(`\\.(?:${routesExtensions.join('|')})$`)
|
|
54
|
+
});
|
|
55
|
+
const middlewareCount = routePaths.filter(path => /middleware\..*/i.test(path)).length;
|
|
56
|
+
const srcDirFiles = yield fs.promises.readdir(context.paths.srcDir, {
|
|
57
|
+
encoding: 'utf-8'
|
|
58
|
+
});
|
|
59
|
+
const hasStatic404 = srcDirFiles.some(value => /error/i.test(value));
|
|
60
|
+
const pageLoadersPath = path.join(context.paths.appDir, '/files/page-loaders.js');
|
|
61
|
+
const pageLoadersFile = yield fs.promises.readFile(pageLoadersPath, {
|
|
62
|
+
encoding: 'utf8'
|
|
63
|
+
});
|
|
64
|
+
const totalLoaderCount = pageLoadersFile
|
|
65
|
+
.toString()
|
|
66
|
+
.split('\n')
|
|
67
|
+
.filter(loader => loader.startsWith('import')).length;
|
|
68
|
+
const { useTypeScript } = (0, typescript_1.getJavaScriptInfo)();
|
|
69
|
+
const analysisEnd = process.hrtime(analysisBegin);
|
|
70
|
+
telemetry.record((0, events_1.eventBuildOptimize)(routePaths, {
|
|
71
|
+
durationInSeconds: analysisEnd[0],
|
|
72
|
+
hasStatic404,
|
|
73
|
+
middlewareCount,
|
|
74
|
+
totalLoaderCount,
|
|
75
|
+
useTypeScript
|
|
76
|
+
}));
|
|
77
|
+
});
|
|
78
|
+
exports.analysis = analysis;
|
package/lib/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export * from './namespace';
|
|
|
2
2
|
export * from './constants';
|
|
3
3
|
export { Bundler } from './bundler';
|
|
4
4
|
export { ProjectBuilder } from './project';
|
|
5
|
+
export { analysis } from './analysis';
|
|
5
6
|
export { IShuviServer, ShuviRequest, ShuviResponse, IServerPluginContext, ShuviRequestHandler, ServerPluginConstructor, ServerPluginInstance, IServerMiddleware, createShuviServer, createServerPlugin, createServerPluginBefore, createServerPluginAfter } from './server';
|
|
6
7
|
export { Api, IPaths, ShuviConfig, IServicePhase, IServiceMode, IPluginConfig, IPresetConfig, PresetFunction, IPresetContent, NormalizedShuviConfig, IPluginContext, IPlatform, IPlatformContent, CorePluginConstructor, CorePluginInstance, getApi, createPlugin, createPluginBefore, createPluginAfter, ResolvedPlugin } from './core';
|
package/lib/index.js
CHANGED
|
@@ -14,11 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createPluginAfter = exports.createPluginBefore = exports.createPlugin = exports.getApi = exports.createServerPluginAfter = exports.createServerPluginBefore = exports.createServerPlugin = exports.createShuviServer = exports.ProjectBuilder = void 0;
|
|
17
|
+
exports.createPluginAfter = exports.createPluginBefore = exports.createPlugin = exports.getApi = exports.createServerPluginAfter = exports.createServerPluginBefore = exports.createServerPlugin = exports.createShuviServer = exports.analysis = exports.ProjectBuilder = void 0;
|
|
18
18
|
__exportStar(require("./namespace"), exports);
|
|
19
19
|
__exportStar(require("./constants"), exports);
|
|
20
20
|
var project_1 = require("./project");
|
|
21
21
|
Object.defineProperty(exports, "ProjectBuilder", { enumerable: true, get: function () { return project_1.ProjectBuilder; } });
|
|
22
|
+
var analysis_1 = require("./analysis");
|
|
23
|
+
Object.defineProperty(exports, "analysis", { enumerable: true, get: function () { return analysis_1.analysis; } });
|
|
22
24
|
var server_1 = require("./server");
|
|
23
25
|
Object.defineProperty(exports, "createShuviServer", { enumerable: true, get: function () { return server_1.createShuviServer; } });
|
|
24
26
|
Object.defineProperty(exports, "createServerPlugin", { enumerable: true, get: function () { return server_1.createServerPlugin; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuvi/service",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/shuvijs/shuvi.git",
|
|
@@ -29,13 +29,14 @@
|
|
|
29
29
|
"@babel/generator": "7.14.5",
|
|
30
30
|
"@babel/parser": "7.14.7",
|
|
31
31
|
"@babel/traverse": "7.14.7",
|
|
32
|
-
"@shuvi/hook": "1.0.
|
|
33
|
-
"@shuvi/router": "1.0.
|
|
34
|
-
"@shuvi/runtime": "1.0.
|
|
35
|
-
"@shuvi/shared": "1.0.
|
|
36
|
-
"@shuvi/toolpack": "1.0.
|
|
37
|
-
"@shuvi/utils": "1.0.
|
|
38
|
-
"@shuvi/error-overlay": "1.0.
|
|
32
|
+
"@shuvi/hook": "1.0.5",
|
|
33
|
+
"@shuvi/router": "1.0.5",
|
|
34
|
+
"@shuvi/runtime": "1.0.5",
|
|
35
|
+
"@shuvi/shared": "1.0.5",
|
|
36
|
+
"@shuvi/toolpack": "1.0.5",
|
|
37
|
+
"@shuvi/utils": "1.0.5",
|
|
38
|
+
"@shuvi/error-overlay": "1.0.5",
|
|
39
|
+
"@shuvi/telemetry": "1.0.5",
|
|
39
40
|
"commander": "5.1.0",
|
|
40
41
|
"comment-json": "4.2.2",
|
|
41
42
|
"cross-spawn": "7.0.3",
|