@eggjs/static 3.0.0 → 4.0.0-beta.15
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/README.md +3 -7
- package/dist/app/middleware/static.d.ts +8 -0
- package/dist/app/middleware/static.js +43 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.js +16 -0
- package/dist/config/config.default.d.ts +6 -0
- package/dist/config/config.default.js +17 -0
- package/dist/config/config.prod.d.ts +6 -0
- package/dist/config/config.prod.js +10 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/{src/types.ts → dist/types.d.ts} +9 -9
- package/dist/types.js +1 -0
- package/package.json +39 -58
- package/dist/commonjs/app/middleware/static.d.ts +0 -5
- package/dist/commonjs/app/middleware/static.js +0 -57
- package/dist/commonjs/app.d.ts +0 -6
- package/dist/commonjs/app.js +0 -21
- package/dist/commonjs/config/config.default.d.ts +0 -6
- package/dist/commonjs/config/config.default.js +0 -22
- package/dist/commonjs/config/config.prod.d.ts +0 -5
- package/dist/commonjs/config/config.prod.js +0 -9
- package/dist/commonjs/index.d.ts +0 -1
- package/dist/commonjs/index.js +0 -4
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/types.d.ts +0 -60
- package/dist/commonjs/types.js +0 -3
- package/dist/esm/app/middleware/static.d.ts +0 -5
- package/dist/esm/app/middleware/static.js +0 -52
- package/dist/esm/app.d.ts +0 -6
- package/dist/esm/app.js +0 -18
- package/dist/esm/config/config.default.d.ts +0 -6
- package/dist/esm/config/config.default.js +0 -17
- package/dist/esm/config/config.prod.d.ts +0 -5
- package/dist/esm/config/config.prod.js +0 -7
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/package.json +0 -3
- package/dist/esm/types.d.ts +0 -60
- package/dist/esm/types.js +0 -2
- package/dist/package.json +0 -4
- package/src/app/middleware/static.ts +0 -66
- package/src/app.ts +0 -18
- package/src/config/config.default.ts +0 -19
- package/src/config/config.prod.ts +0 -8
- package/src/index.ts +0 -1
- package/src/typings/index.d.ts +0 -4
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# @eggjs/static
|
|
2
2
|
|
|
3
3
|
[![NPM version][npm-image]][npm-url]
|
|
4
|
-
[](https://github.com/eggjs/static/actions/workflows/nodejs.yml)
|
|
5
|
-
[![Test coverage][codecov-image]][codecov-url]
|
|
6
4
|
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
|
7
5
|
[![npm download][download-image]][download-url]
|
|
8
6
|
[](https://nodejs.org/en/download/)
|
|
@@ -10,14 +8,12 @@
|
|
|
10
8
|
|
|
11
9
|
[npm-image]: https://img.shields.io/npm/v/@eggjs/static.svg?style=flat-square
|
|
12
10
|
[npm-url]: https://npmjs.org/package/@eggjs/static
|
|
13
|
-
[codecov-image]: https://img.shields.io/codecov/c/github/eggjs/static.svg?style=flat-square
|
|
14
|
-
[codecov-url]: https://codecov.io/github/eggjs/static?branch=master
|
|
15
11
|
[snyk-image]: https://snyk.io/test/npm/@eggjs/static/badge.svg?style=flat-square
|
|
16
12
|
[snyk-url]: https://snyk.io/test/npm/@eggjs/static
|
|
17
13
|
[download-image]: https://img.shields.io/npm/dm/@eggjs/static.svg?style=flat-square
|
|
18
14
|
[download-url]: https://npmjs.org/package/@eggjs/static
|
|
19
15
|
|
|
20
|
-
Static server plugin for egg, base on [@eggjs/koa-static-cache](https://github.com/eggjs/koa-static-cache).
|
|
16
|
+
Static server plugin for egg, base on [@eggjs/koa-static-cache](https://github.com/eggjs/egg/tree/next/packages/koa-static-cache).
|
|
21
17
|
|
|
22
18
|
## Install
|
|
23
19
|
|
|
@@ -25,7 +21,7 @@ Static server plugin for egg, base on [@eggjs/koa-static-cache](https://github.c
|
|
|
25
21
|
|
|
26
22
|
## Configuration
|
|
27
23
|
|
|
28
|
-
`@eggjs/static` support all configurations in [@eggjs/koa-static-cache](https://github.com/eggjs/koa-static-cache).
|
|
24
|
+
`@eggjs/static` support all configurations in [@eggjs/koa-static-cache](https://github.com/eggjs/egg/tree/next/packages/koa-static-cache).
|
|
29
25
|
And with default configurations below:
|
|
30
26
|
|
|
31
27
|
- prefix: `'/public/'`
|
|
@@ -64,6 +60,6 @@ Please open an issue [here](https://github.com/eggjs/egg/issues).
|
|
|
64
60
|
|
|
65
61
|
## Contributors
|
|
66
62
|
|
|
67
|
-
[](https://github.com/eggjs/egg/graphs/contributors)
|
|
68
64
|
|
|
69
65
|
Made with [contributors-img](https://contrib.rocks).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StaticConfig } from "../../types.js";
|
|
2
|
+
import { Application, Context } from "egg";
|
|
3
|
+
import compose from "koa-compose";
|
|
4
|
+
|
|
5
|
+
//#region src/app/middleware/static.d.ts
|
|
6
|
+
declare const _default: (options: StaticConfig, app: Application) => compose.ComposedMiddleware<Context>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { _default as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
3
|
+
import range from "koa-range";
|
|
4
|
+
import compose from "koa-compose";
|
|
5
|
+
import { staticCache } from "@eggjs/koa-static-cache";
|
|
6
|
+
import { LRU } from "ylru";
|
|
7
|
+
|
|
8
|
+
//#region src/app/middleware/static.ts
|
|
9
|
+
var static_default = (options, app) => {
|
|
10
|
+
const dirs = (options.dirs ?? []).concat(options.dir);
|
|
11
|
+
const prefixes = [];
|
|
12
|
+
function rangeMiddleware(ctx, next) {
|
|
13
|
+
if (prefixes.some((p) => ctx.path.startsWith(p))) return range(ctx, next);
|
|
14
|
+
return next();
|
|
15
|
+
}
|
|
16
|
+
const middlewares = [rangeMiddleware];
|
|
17
|
+
for (const dirObj of dirs) {
|
|
18
|
+
const isObject = typeof dirObj === "object" && dirObj !== null;
|
|
19
|
+
const isString = typeof dirObj === "string";
|
|
20
|
+
assert(isObject || isString, "`config.static.dir` must be `string | Array<string|object>`");
|
|
21
|
+
let newOptions;
|
|
22
|
+
if (isString) newOptions = {
|
|
23
|
+
...options,
|
|
24
|
+
dir: dirObj
|
|
25
|
+
};
|
|
26
|
+
else {
|
|
27
|
+
assert(typeof dirObj.dir === "string", "`config.static.dirs` should contains `[].dir` property when object style");
|
|
28
|
+
newOptions = {
|
|
29
|
+
...options,
|
|
30
|
+
...dirObj
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (newOptions.dynamic && !newOptions.files) newOptions.files = new LRU(newOptions.maxFiles);
|
|
34
|
+
if (newOptions.prefix) prefixes.push(newOptions.prefix);
|
|
35
|
+
if (!existsSync(newOptions.dir)) mkdirSync(newOptions.dir, { recursive: true });
|
|
36
|
+
middlewares.push(staticCache(newOptions));
|
|
37
|
+
app.coreLogger.info("[@eggjs/static] starting static serve %s -> %s", newOptions.prefix, newOptions.dir);
|
|
38
|
+
}
|
|
39
|
+
return compose(middlewares);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
export { static_default as default };
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Application, ILifecycleBoot } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/app.d.ts
|
|
4
|
+
declare class AppBoot implements ILifecycleBoot {
|
|
5
|
+
private readonly app;
|
|
6
|
+
constructor(app: Application);
|
|
7
|
+
configWillLoad(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { AppBoot as default };
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/app.ts
|
|
2
|
+
var AppBoot = class {
|
|
3
|
+
app;
|
|
4
|
+
constructor(app) {
|
|
5
|
+
this.app = app;
|
|
6
|
+
}
|
|
7
|
+
async configWillLoad() {
|
|
8
|
+
const app = this.app;
|
|
9
|
+
const index = app.config.coreMiddleware.indexOf("bodyParser");
|
|
10
|
+
if (index === -1) app.config.coreMiddleware.push("static");
|
|
11
|
+
else app.config.coreMiddleware.splice(index, 0, "static");
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AppBoot as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { defineConfigFactory } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/config/config.default.ts
|
|
5
|
+
var config_default_default = defineConfigFactory((appInfo) => {
|
|
6
|
+
return { static: {
|
|
7
|
+
prefix: "/public/",
|
|
8
|
+
dir: path.join(appInfo.baseDir, "app/public"),
|
|
9
|
+
dynamic: true,
|
|
10
|
+
preload: false,
|
|
11
|
+
buffer: false,
|
|
12
|
+
maxFiles: 1e3
|
|
13
|
+
} };
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
export { config_default_default as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Options } from "@eggjs/koa-static-cache";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
interface StaticDirOptions extends Omit<Options, 'dir'> {
|
|
4
5
|
/**
|
|
5
6
|
* static files store dir
|
|
6
7
|
*/
|
|
@@ -17,7 +18,7 @@ export interface StaticDirOptions extends Omit<StaticCacheOptions, 'dir'> {
|
|
|
17
18
|
maxAge: number;
|
|
18
19
|
/**
|
|
19
20
|
* dynamic load file which not cached on initialization
|
|
20
|
-
* Default to `true
|
|
21
|
+
* Default to `true`
|
|
21
22
|
*/
|
|
22
23
|
dynamic: boolean;
|
|
23
24
|
/**
|
|
@@ -37,13 +38,12 @@ export interface StaticDirOptions extends Omit<StaticCacheOptions, 'dir'> {
|
|
|
37
38
|
*/
|
|
38
39
|
maxFiles: number;
|
|
39
40
|
}
|
|
40
|
-
|
|
41
41
|
/**
|
|
42
42
|
* Static file serve
|
|
43
43
|
* @member Config#static
|
|
44
|
-
* @see https://github.com/
|
|
44
|
+
* @see https://github.com/eggjs/egg/tree/next/packages/koa-static-cache
|
|
45
45
|
*/
|
|
46
|
-
|
|
46
|
+
interface StaticConfig extends Omit<StaticDirOptions, 'dir'> {
|
|
47
47
|
/**
|
|
48
48
|
* static files store dir
|
|
49
49
|
* Default to `${baseDir}/app/public`
|
|
@@ -55,10 +55,10 @@ export interface StaticConfig extends Omit<StaticDirOptions, 'dir'> {
|
|
|
55
55
|
*/
|
|
56
56
|
dirs?: Array<string | StaticDirOptions>;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
declare module '@eggjs/core' {
|
|
60
|
-
// add EggAppConfig overrides types
|
|
58
|
+
declare module 'egg' {
|
|
61
59
|
interface EggAppConfig {
|
|
62
60
|
static: StaticConfig;
|
|
63
61
|
}
|
|
64
62
|
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { StaticConfig, StaticDirOptions };
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/static",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-beta.15",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"description": "static server plugin for egg",
|
|
8
8
|
"eggPlugin": {
|
|
9
|
-
"name": "static"
|
|
10
|
-
"exports": {
|
|
11
|
-
"import": "./dist/esm",
|
|
12
|
-
"require": "./dist/commonjs",
|
|
13
|
-
"typescript": "./src"
|
|
14
|
-
}
|
|
9
|
+
"name": "static"
|
|
15
10
|
},
|
|
16
11
|
"repository": {
|
|
17
12
|
"type": "git",
|
|
18
|
-
"url": "
|
|
13
|
+
"url": "https://github.com/eggjs/egg.git",
|
|
14
|
+
"directory": "plugins/static"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/eggjs/egg/tree/next/plugins/static",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/eggjs/egg/issues"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"egg",
|
|
@@ -26,68 +26,49 @@
|
|
|
26
26
|
"author": "dead_horse",
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"engines": {
|
|
29
|
-
"node": ">=
|
|
29
|
+
"node": ">=22.18.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@eggjs/core": "^6.2.13",
|
|
33
|
-
"@eggjs/koa-static-cache": "^6.0.0",
|
|
34
|
-
"is-type-of": "^2.2.0",
|
|
35
32
|
"koa-compose": "^4.1.0",
|
|
36
33
|
"koa-range": "^0.3.0",
|
|
37
|
-
"ylru": "^2.0.0"
|
|
34
|
+
"ylru": "^2.0.0",
|
|
35
|
+
"@eggjs/koa-static-cache": "7.0.0-beta.15"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"egg": "4.1.0-beta.15"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
|
-
"@arethetypeswrong/cli": "^0.17.1",
|
|
41
|
-
"@eggjs/bin": "7",
|
|
42
|
-
"@eggjs/mock": "^6.0.5",
|
|
43
|
-
"@eggjs/tsconfig": "1",
|
|
44
41
|
"@types/koa-compose": "^3.2.8",
|
|
45
42
|
"@types/koa-range": "^0.3.5",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"tshy": "3",
|
|
53
|
-
"tshy-after": "1",
|
|
54
|
-
"typescript": "5"
|
|
55
|
-
},
|
|
56
|
-
"scripts": {
|
|
57
|
-
"lint": "eslint --cache src test --ext .ts",
|
|
58
|
-
"pretest": "npm run clean && npm run lint -- --fix",
|
|
59
|
-
"test": "egg-bin test",
|
|
60
|
-
"preci": "npm run clean && npm run lint",
|
|
61
|
-
"ci": "egg-bin cov",
|
|
62
|
-
"postci": "npm run prepublishOnly && npm run clean",
|
|
63
|
-
"clean": "rimraf dist",
|
|
64
|
-
"prepublishOnly": "tshy && tshy-after && attw --pack"
|
|
43
|
+
"oxlint": "^1.18.0",
|
|
44
|
+
"tsdown": "^0.15.4",
|
|
45
|
+
"typescript": "5.9.2",
|
|
46
|
+
"vitest": "4.0.0-beta.13",
|
|
47
|
+
"@eggjs/tsconfig": "3.1.0-beta.15",
|
|
48
|
+
"@eggjs/mock": "7.0.0-beta.15"
|
|
65
49
|
},
|
|
66
50
|
"type": "module",
|
|
67
|
-
"tshy": {
|
|
68
|
-
"exports": {
|
|
69
|
-
".": "./src/index.ts",
|
|
70
|
-
"./package.json": "./package.json"
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
51
|
"exports": {
|
|
74
|
-
".":
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"types": "./dist/commonjs/index.d.ts",
|
|
81
|
-
"default": "./dist/commonjs/index.js"
|
|
82
|
-
}
|
|
83
|
-
},
|
|
52
|
+
".": "./dist/index.js",
|
|
53
|
+
"./app": "./dist/app.js",
|
|
54
|
+
"./app/middleware/static": "./dist/app/middleware/static.js",
|
|
55
|
+
"./config/config.default": "./dist/config/config.default.js",
|
|
56
|
+
"./config/config.prod": "./dist/config/config.prod.js",
|
|
57
|
+
"./types": "./dist/types.js",
|
|
84
58
|
"./package.json": "./package.json"
|
|
85
59
|
},
|
|
86
60
|
"files": [
|
|
87
|
-
"dist"
|
|
88
|
-
"src"
|
|
61
|
+
"dist"
|
|
89
62
|
],
|
|
90
|
-
"types": "./dist/
|
|
91
|
-
"main": "./dist/
|
|
92
|
-
"module": "./dist/
|
|
93
|
-
|
|
63
|
+
"types": "./dist/index.d.ts",
|
|
64
|
+
"main": "./dist/index.js",
|
|
65
|
+
"module": "./dist/index.js",
|
|
66
|
+
"scripts": {
|
|
67
|
+
"build": "tsdown",
|
|
68
|
+
"typecheck": "tsc --noEmit",
|
|
69
|
+
"lint": "oxlint --type-aware",
|
|
70
|
+
"lint:fix": "npm run lint -- --fix",
|
|
71
|
+
"test": "npm run lint:fix && vitest run",
|
|
72
|
+
"ci": "vitest run --coverage"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import compose from 'koa-compose';
|
|
2
|
-
import type { EggCore, Context } from '@eggjs/core';
|
|
3
|
-
import type { StaticConfig } from '../../types.js';
|
|
4
|
-
declare const _default: (options: StaticConfig, app: EggCore) => compose.ComposedMiddleware<Context>;
|
|
5
|
-
export default _default;
|
|
@@ -1,57 +0,0 @@
|
|
|
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
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_fs_1 = require("node:fs");
|
|
8
|
-
const koa_range_1 = __importDefault(require("koa-range"));
|
|
9
|
-
const koa_compose_1 = __importDefault(require("koa-compose"));
|
|
10
|
-
const koa_static_cache_1 = require("@eggjs/koa-static-cache");
|
|
11
|
-
const ylru_1 = require("ylru");
|
|
12
|
-
const is_type_of_1 = require("is-type-of");
|
|
13
|
-
exports.default = (options, app) => {
|
|
14
|
-
const dirs = (options.dirs ?? []).concat(options.dir);
|
|
15
|
-
const prefixes = [];
|
|
16
|
-
function rangeMiddleware(ctx, next) {
|
|
17
|
-
// if match static file, and use range middleware.
|
|
18
|
-
const isMatch = prefixes.some(p => ctx.path.startsWith(p));
|
|
19
|
-
if (isMatch) {
|
|
20
|
-
return (0, koa_range_1.default)(ctx, next);
|
|
21
|
-
}
|
|
22
|
-
return next();
|
|
23
|
-
}
|
|
24
|
-
const middlewares = [rangeMiddleware];
|
|
25
|
-
for (const dirObj of dirs) {
|
|
26
|
-
(0, node_assert_1.default)((0, is_type_of_1.isObject)(dirObj) || typeof dirObj === 'string', '`config.static.dir` must be `string | Array<string|object>`');
|
|
27
|
-
let newOptions;
|
|
28
|
-
if (typeof dirObj === 'string') {
|
|
29
|
-
// copy origin options to new options ensure the safety of objects
|
|
30
|
-
newOptions = {
|
|
31
|
-
...options,
|
|
32
|
-
dir: dirObj,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
(0, node_assert_1.default)(typeof dirObj.dir === 'string', '`config.static.dirs` should contains `[].dir` property when object style');
|
|
37
|
-
newOptions = {
|
|
38
|
-
...options,
|
|
39
|
-
...dirObj,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
if (newOptions.dynamic && !newOptions.files) {
|
|
43
|
-
newOptions.files = new ylru_1.LRU(newOptions.maxFiles);
|
|
44
|
-
}
|
|
45
|
-
if (newOptions.prefix) {
|
|
46
|
-
prefixes.push(newOptions.prefix);
|
|
47
|
-
}
|
|
48
|
-
// ensure directory exists
|
|
49
|
-
if (!(0, node_fs_1.existsSync)(newOptions.dir)) {
|
|
50
|
-
(0, node_fs_1.mkdirSync)(newOptions.dir, { recursive: true });
|
|
51
|
-
}
|
|
52
|
-
middlewares.push((0, koa_static_cache_1.staticCache)(newOptions));
|
|
53
|
-
app.coreLogger.info('[@eggjs/static] starting static serve %s -> %s', newOptions.prefix, newOptions.dir);
|
|
54
|
-
}
|
|
55
|
-
return (0, koa_compose_1.default)(middlewares);
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3N0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhEQUFpQztBQUNqQyxxQ0FBZ0Q7QUFDaEQsMERBQThCO0FBQzlCLDhEQUFrQztBQUVsQyw4REFBc0Q7QUFDdEQsK0JBQTJCO0FBQzNCLDJDQUFzQztBQUd0QyxrQkFBZSxDQUFDLE9BQXFCLEVBQUUsR0FBWSxFQUFFLEVBQUU7SUFDckQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEQsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBRTlCLFNBQVMsZUFBZSxDQUFDLEdBQVksRUFBRSxJQUFVO1FBQy9DLGtEQUFrRDtRQUNsRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFBLG1CQUFLLEVBQUMsR0FBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxDQUFFLGVBQWUsQ0FBRSxDQUFDO0lBRXhDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBQSxxQkFBTSxFQUFDLElBQUEscUJBQVEsRUFBQyxNQUFNLENBQUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQ25ELDZEQUE2RCxDQUFDLENBQUM7UUFFakUsSUFBSSxVQUE0QixDQUFDO1FBQ2pDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0Isa0VBQWtFO1lBQ2xFLFVBQVUsR0FBRztnQkFDWCxHQUFHLE9BQU87Z0JBQ1YsR0FBRyxFQUFFLE1BQU07YUFDWixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFBLHFCQUFNLEVBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFDbkMsMEVBQTBFLENBQUMsQ0FBQztZQUM5RSxVQUFVLEdBQUc7Z0JBQ1gsR0FBRyxPQUFPO2dCQUNWLEdBQUcsTUFBTTthQUNWLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxVQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxJQUFBLG9CQUFVLEVBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBQSxtQkFBUyxFQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFBLDhCQUFXLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUV6QyxHQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFDM0UsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sSUFBQSxxQkFBTyxFQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyJ9
|
package/dist/commonjs/app.d.ts
DELETED
package/dist/commonjs/app.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class AppBoot {
|
|
4
|
-
app;
|
|
5
|
-
constructor(app) {
|
|
6
|
-
this.app = app;
|
|
7
|
-
}
|
|
8
|
-
async configWillLoad() {
|
|
9
|
-
const app = this.app;
|
|
10
|
-
// make sure static middleware is before bodyParser
|
|
11
|
-
const index = app.config.coreMiddleware.indexOf('bodyParser');
|
|
12
|
-
if (index === -1) {
|
|
13
|
-
app.config.coreMiddleware.push('static');
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
app.config.coreMiddleware.splice(index, 0, 'static');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.default = AppBoot;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQXFCLE9BQU87SUFDVCxHQUFHLENBQUM7SUFDckIsWUFBWSxHQUFZO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLG1EQUFtRDtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBZkQsMEJBZUMifQ==
|
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
7
|
-
exports.default = (appInfo) => {
|
|
8
|
-
return {
|
|
9
|
-
static: {
|
|
10
|
-
prefix: '/public/',
|
|
11
|
-
dir: node_path_1.default.join(appInfo.baseDir, 'app/public'),
|
|
12
|
-
// dirs: [ dir1, dir2 ] or [ dir1, { prefix: '/static2', dir: dir2 } ],
|
|
13
|
-
dirs: undefined,
|
|
14
|
-
// support lazy load
|
|
15
|
-
dynamic: true,
|
|
16
|
-
preload: false,
|
|
17
|
-
buffer: false,
|
|
18
|
-
maxFiles: 1000,
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTZCO0FBSTdCLGtCQUFlLENBQUMsT0FBbUIsRUFBRSxFQUFFO0lBQ3JDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsVUFBVTtZQUNsQixHQUFHLEVBQUUsbUJBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7WUFDN0MsdUVBQXVFO1lBQ3ZFLElBQUksRUFBRSxTQUFTO1lBQ2Ysb0JBQW9CO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRSxJQUFJO1NBQ0M7S0FDbEIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = {
|
|
4
|
-
static: {
|
|
5
|
-
maxAge: 31536000,
|
|
6
|
-
buffer: true,
|
|
7
|
-
},
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnByb2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5wcm9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0JBQWU7SUFDYixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtLQUNHO0NBQ2xCLENBQUMifQ==
|
package/dist/commonjs/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './types.js';
|
package/dist/commonjs/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
require("./types.js");
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQkFBb0IifQ==
|
package/dist/commonjs/types.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Options as StaticCacheOptions } from '@eggjs/koa-static-cache';
|
|
2
|
-
export interface StaticDirOptions extends Omit<StaticCacheOptions, 'dir'> {
|
|
3
|
-
/**
|
|
4
|
-
* static files store dir
|
|
5
|
-
*/
|
|
6
|
-
dir: string;
|
|
7
|
-
/**
|
|
8
|
-
* static files prefix
|
|
9
|
-
* Default to `'/public/'`
|
|
10
|
-
*/
|
|
11
|
-
prefix: string;
|
|
12
|
-
/**
|
|
13
|
-
* cache max age in `seconds`
|
|
14
|
-
* Default to `0` on development, `31536000` on production
|
|
15
|
-
*/
|
|
16
|
-
maxAge: number;
|
|
17
|
-
/**
|
|
18
|
-
* dynamic load file which not cached on initialization
|
|
19
|
-
* Default to `true
|
|
20
|
-
*/
|
|
21
|
-
dynamic: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* caches the assets on initialization or not,
|
|
24
|
-
* always work together with `options.dynamic`
|
|
25
|
-
* Default to `false`
|
|
26
|
-
*/
|
|
27
|
-
preload: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* buffer the file content or not
|
|
30
|
-
* Default to `false` on development, `true` on production
|
|
31
|
-
*/
|
|
32
|
-
buffer: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* max files count in store
|
|
35
|
-
* Default to `1000`
|
|
36
|
-
*/
|
|
37
|
-
maxFiles: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Static file serve
|
|
41
|
-
* @member Config#static
|
|
42
|
-
* @see https://github.com/koajs/static-cache
|
|
43
|
-
*/
|
|
44
|
-
export interface StaticConfig extends Omit<StaticDirOptions, 'dir'> {
|
|
45
|
-
/**
|
|
46
|
-
* static files store dir
|
|
47
|
-
* Default to `${baseDir}/app/public`
|
|
48
|
-
*/
|
|
49
|
-
dir: string | Array<string | StaticDirOptions>;
|
|
50
|
-
/**
|
|
51
|
-
* static files store dirs
|
|
52
|
-
* @deprecated use `dir` instead
|
|
53
|
-
*/
|
|
54
|
-
dirs?: Array<string | StaticDirOptions>;
|
|
55
|
-
}
|
|
56
|
-
declare module '@eggjs/core' {
|
|
57
|
-
interface EggAppConfig {
|
|
58
|
-
static: StaticConfig;
|
|
59
|
-
}
|
|
60
|
-
}
|
package/dist/commonjs/types.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import compose from 'koa-compose';
|
|
2
|
-
import type { EggCore, Context } from '@eggjs/core';
|
|
3
|
-
import type { StaticConfig } from '../../types.js';
|
|
4
|
-
declare const _default: (options: StaticConfig, app: EggCore) => compose.ComposedMiddleware<Context>;
|
|
5
|
-
export default _default;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert';
|
|
2
|
-
import { mkdirSync, existsSync } from 'node:fs';
|
|
3
|
-
import range from 'koa-range';
|
|
4
|
-
import compose from 'koa-compose';
|
|
5
|
-
import { staticCache } from '@eggjs/koa-static-cache';
|
|
6
|
-
import { LRU } from 'ylru';
|
|
7
|
-
import { isObject } from 'is-type-of';
|
|
8
|
-
export default (options, app) => {
|
|
9
|
-
const dirs = (options.dirs ?? []).concat(options.dir);
|
|
10
|
-
const prefixes = [];
|
|
11
|
-
function rangeMiddleware(ctx, next) {
|
|
12
|
-
// if match static file, and use range middleware.
|
|
13
|
-
const isMatch = prefixes.some(p => ctx.path.startsWith(p));
|
|
14
|
-
if (isMatch) {
|
|
15
|
-
return range(ctx, next);
|
|
16
|
-
}
|
|
17
|
-
return next();
|
|
18
|
-
}
|
|
19
|
-
const middlewares = [rangeMiddleware];
|
|
20
|
-
for (const dirObj of dirs) {
|
|
21
|
-
assert(isObject(dirObj) || typeof dirObj === 'string', '`config.static.dir` must be `string | Array<string|object>`');
|
|
22
|
-
let newOptions;
|
|
23
|
-
if (typeof dirObj === 'string') {
|
|
24
|
-
// copy origin options to new options ensure the safety of objects
|
|
25
|
-
newOptions = {
|
|
26
|
-
...options,
|
|
27
|
-
dir: dirObj,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
assert(typeof dirObj.dir === 'string', '`config.static.dirs` should contains `[].dir` property when object style');
|
|
32
|
-
newOptions = {
|
|
33
|
-
...options,
|
|
34
|
-
...dirObj,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
if (newOptions.dynamic && !newOptions.files) {
|
|
38
|
-
newOptions.files = new LRU(newOptions.maxFiles);
|
|
39
|
-
}
|
|
40
|
-
if (newOptions.prefix) {
|
|
41
|
-
prefixes.push(newOptions.prefix);
|
|
42
|
-
}
|
|
43
|
-
// ensure directory exists
|
|
44
|
-
if (!existsSync(newOptions.dir)) {
|
|
45
|
-
mkdirSync(newOptions.dir, { recursive: true });
|
|
46
|
-
}
|
|
47
|
-
middlewares.push(staticCache(newOptions));
|
|
48
|
-
app.coreLogger.info('[@eggjs/static] starting static serve %s -> %s', newOptions.prefix, newOptions.dir);
|
|
49
|
-
}
|
|
50
|
-
return compose(middlewares);
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3N0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEQsT0FBTyxLQUFLLE1BQU0sV0FBVyxDQUFDO0FBQzlCLE9BQU8sT0FBTyxNQUFNLGFBQWEsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RDLGVBQWUsQ0FBQyxPQUFxQixFQUFFLEdBQVksRUFBRSxFQUFFO0lBQ3JELE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRELE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUU5QixTQUFTLGVBQWUsQ0FBQyxHQUFZLEVBQUUsSUFBVTtRQUMvQyxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sS0FBSyxDQUFDLEdBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBRSxlQUFlLENBQUUsQ0FBQztJQUV4QyxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUNuRCw2REFBNkQsQ0FBQyxDQUFDO1FBRWpFLElBQUksVUFBNEIsQ0FBQztRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLGtFQUFrRTtZQUNsRSxVQUFVLEdBQUc7Z0JBQ1gsR0FBRyxPQUFPO2dCQUNWLEdBQUcsRUFBRSxNQUFNO2FBQ1osQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQ25DLDBFQUEwRSxDQUFDLENBQUM7WUFDOUUsVUFBVSxHQUFHO2dCQUNYLEdBQUcsT0FBTztnQkFDVixHQUFHLE1BQU07YUFDVixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFekMsR0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQzNFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUMifQ==
|
package/dist/esm/app.d.ts
DELETED
package/dist/esm/app.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export default class AppBoot {
|
|
2
|
-
app;
|
|
3
|
-
constructor(app) {
|
|
4
|
-
this.app = app;
|
|
5
|
-
}
|
|
6
|
-
async configWillLoad() {
|
|
7
|
-
const app = this.app;
|
|
8
|
-
// make sure static middleware is before bodyParser
|
|
9
|
-
const index = app.config.coreMiddleware.indexOf('bodyParser');
|
|
10
|
-
if (index === -1) {
|
|
11
|
-
app.config.coreMiddleware.push('static');
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
app.config.coreMiddleware.splice(index, 0, 'static');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsT0FBTyxPQUFPLE9BQU87SUFDVCxHQUFHLENBQUM7SUFDckIsWUFBWSxHQUFZO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLG1EQUFtRDtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
export default (appInfo) => {
|
|
3
|
-
return {
|
|
4
|
-
static: {
|
|
5
|
-
prefix: '/public/',
|
|
6
|
-
dir: path.join(appInfo.baseDir, 'app/public'),
|
|
7
|
-
// dirs: [ dir1, dir2 ] or [ dir1, { prefix: '/static2', dir: dir2 } ],
|
|
8
|
-
dirs: undefined,
|
|
9
|
-
// support lazy load
|
|
10
|
-
dynamic: true,
|
|
11
|
-
preload: false,
|
|
12
|
-
buffer: false,
|
|
13
|
-
maxFiles: 1000,
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3QixlQUFlLENBQUMsT0FBbUIsRUFBRSxFQUFFO0lBQ3JDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsVUFBVTtZQUNsQixHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztZQUM3Qyx1RUFBdUU7WUFDdkUsSUFBSSxFQUFFLFNBQVM7WUFDZixvQkFBb0I7WUFDcEIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDQztLQUNsQixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
static: {
|
|
3
|
-
maxAge: 31536000,
|
|
4
|
-
buffer: true,
|
|
5
|
-
},
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnByb2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5wcm9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7SUFDYixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtLQUNHO0NBQ2xCLENBQUMifQ==
|
package/dist/esm/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './types.js';
|
package/dist/esm/index.js
DELETED
package/dist/esm/package.json
DELETED
package/dist/esm/types.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Options as StaticCacheOptions } from '@eggjs/koa-static-cache';
|
|
2
|
-
export interface StaticDirOptions extends Omit<StaticCacheOptions, 'dir'> {
|
|
3
|
-
/**
|
|
4
|
-
* static files store dir
|
|
5
|
-
*/
|
|
6
|
-
dir: string;
|
|
7
|
-
/**
|
|
8
|
-
* static files prefix
|
|
9
|
-
* Default to `'/public/'`
|
|
10
|
-
*/
|
|
11
|
-
prefix: string;
|
|
12
|
-
/**
|
|
13
|
-
* cache max age in `seconds`
|
|
14
|
-
* Default to `0` on development, `31536000` on production
|
|
15
|
-
*/
|
|
16
|
-
maxAge: number;
|
|
17
|
-
/**
|
|
18
|
-
* dynamic load file which not cached on initialization
|
|
19
|
-
* Default to `true
|
|
20
|
-
*/
|
|
21
|
-
dynamic: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* caches the assets on initialization or not,
|
|
24
|
-
* always work together with `options.dynamic`
|
|
25
|
-
* Default to `false`
|
|
26
|
-
*/
|
|
27
|
-
preload: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* buffer the file content or not
|
|
30
|
-
* Default to `false` on development, `true` on production
|
|
31
|
-
*/
|
|
32
|
-
buffer: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* max files count in store
|
|
35
|
-
* Default to `1000`
|
|
36
|
-
*/
|
|
37
|
-
maxFiles: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Static file serve
|
|
41
|
-
* @member Config#static
|
|
42
|
-
* @see https://github.com/koajs/static-cache
|
|
43
|
-
*/
|
|
44
|
-
export interface StaticConfig extends Omit<StaticDirOptions, 'dir'> {
|
|
45
|
-
/**
|
|
46
|
-
* static files store dir
|
|
47
|
-
* Default to `${baseDir}/app/public`
|
|
48
|
-
*/
|
|
49
|
-
dir: string | Array<string | StaticDirOptions>;
|
|
50
|
-
/**
|
|
51
|
-
* static files store dirs
|
|
52
|
-
* @deprecated use `dir` instead
|
|
53
|
-
*/
|
|
54
|
-
dirs?: Array<string | StaticDirOptions>;
|
|
55
|
-
}
|
|
56
|
-
declare module '@eggjs/core' {
|
|
57
|
-
interface EggAppConfig {
|
|
58
|
-
static: StaticConfig;
|
|
59
|
-
}
|
|
60
|
-
}
|
package/dist/esm/types.js
DELETED
package/dist/package.json
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert';
|
|
2
|
-
import { mkdirSync, existsSync } from 'node:fs';
|
|
3
|
-
import range from 'koa-range';
|
|
4
|
-
import compose from 'koa-compose';
|
|
5
|
-
import type { EggCore, Context, Next } from '@eggjs/core';
|
|
6
|
-
import { staticCache } from '@eggjs/koa-static-cache';
|
|
7
|
-
import { LRU } from 'ylru';
|
|
8
|
-
import { isObject } from 'is-type-of';
|
|
9
|
-
import type { StaticConfig, StaticDirOptions } from '../../types.js';
|
|
10
|
-
|
|
11
|
-
export default (options: StaticConfig, app: EggCore) => {
|
|
12
|
-
const dirs = (options.dirs ?? []).concat(options.dir);
|
|
13
|
-
|
|
14
|
-
const prefixes: string[] = [];
|
|
15
|
-
|
|
16
|
-
function rangeMiddleware(ctx: Context, next: Next) {
|
|
17
|
-
// if match static file, and use range middleware.
|
|
18
|
-
const isMatch = prefixes.some(p => ctx.path.startsWith(p));
|
|
19
|
-
if (isMatch) {
|
|
20
|
-
return range(ctx as any, next);
|
|
21
|
-
}
|
|
22
|
-
return next();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const middlewares = [ rangeMiddleware ];
|
|
26
|
-
|
|
27
|
-
for (const dirObj of dirs) {
|
|
28
|
-
assert(isObject(dirObj) || typeof dirObj === 'string',
|
|
29
|
-
'`config.static.dir` must be `string | Array<string|object>`');
|
|
30
|
-
|
|
31
|
-
let newOptions: StaticDirOptions;
|
|
32
|
-
if (typeof dirObj === 'string') {
|
|
33
|
-
// copy origin options to new options ensure the safety of objects
|
|
34
|
-
newOptions = {
|
|
35
|
-
...options,
|
|
36
|
-
dir: dirObj,
|
|
37
|
-
};
|
|
38
|
-
} else {
|
|
39
|
-
assert(typeof dirObj.dir === 'string',
|
|
40
|
-
'`config.static.dirs` should contains `[].dir` property when object style');
|
|
41
|
-
newOptions = {
|
|
42
|
-
...options,
|
|
43
|
-
...dirObj,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (newOptions.dynamic && !newOptions.files) {
|
|
48
|
-
newOptions.files = new LRU(newOptions.maxFiles);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (newOptions.prefix) {
|
|
52
|
-
prefixes.push(newOptions.prefix);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// ensure directory exists
|
|
56
|
-
if (!existsSync(newOptions.dir)) {
|
|
57
|
-
mkdirSync(newOptions.dir, { recursive: true });
|
|
58
|
-
}
|
|
59
|
-
middlewares.push(staticCache(newOptions));
|
|
60
|
-
|
|
61
|
-
(app as any).coreLogger.info('[@eggjs/static] starting static serve %s -> %s',
|
|
62
|
-
newOptions.prefix, newOptions.dir);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return compose(middlewares);
|
|
66
|
-
};
|
package/src/app.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { ILifecycleBoot, EggCore } from '@eggjs/core';
|
|
2
|
-
|
|
3
|
-
export default class AppBoot implements ILifecycleBoot {
|
|
4
|
-
private readonly app;
|
|
5
|
-
constructor(app: EggCore) {
|
|
6
|
-
this.app = app;
|
|
7
|
-
}
|
|
8
|
-
async configWillLoad() {
|
|
9
|
-
const app = this.app;
|
|
10
|
-
// make sure static middleware is before bodyParser
|
|
11
|
-
const index = app.config.coreMiddleware.indexOf('bodyParser');
|
|
12
|
-
if (index === -1) {
|
|
13
|
-
app.config.coreMiddleware.push('static');
|
|
14
|
-
} else {
|
|
15
|
-
app.config.coreMiddleware.splice(index, 0, 'static');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import type { EggAppInfo } from '@eggjs/core';
|
|
3
|
-
import type { StaticConfig } from '../types.js';
|
|
4
|
-
|
|
5
|
-
export default (appInfo: EggAppInfo) => {
|
|
6
|
-
return {
|
|
7
|
-
static: {
|
|
8
|
-
prefix: '/public/',
|
|
9
|
-
dir: path.join(appInfo.baseDir, 'app/public'),
|
|
10
|
-
// dirs: [ dir1, dir2 ] or [ dir1, { prefix: '/static2', dir: dir2 } ],
|
|
11
|
-
dirs: undefined,
|
|
12
|
-
// support lazy load
|
|
13
|
-
dynamic: true,
|
|
14
|
-
preload: false,
|
|
15
|
-
buffer: false,
|
|
16
|
-
maxFiles: 1000,
|
|
17
|
-
} as StaticConfig,
|
|
18
|
-
};
|
|
19
|
-
};
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './types.js';
|
package/src/typings/index.d.ts
DELETED