k99 0.2.0 → 0.3.0-beta.1
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/LICENSE +1 -1
- package/README.md +8 -0
- package/README.zh.md +8 -0
- package/browser/package.json +8 -0
- package/browser/types.d.ts +20 -0
- package/cli/command/create.js +1 -2
- package/cli/command/index.js +1 -2
- package/cli/command/init.js +3 -5
- package/cli/command/start.js +9 -10
- package/cli/index.js +3 -4
- package/cli/opt/bind.js +1 -2
- package/cli/opt/index.js +1 -2
- package/cli/opt/listen.js +1 -2
- package/cli/opt/path.js +1 -2
- package/cli/opt/port.js +1 -2
- package/cli/opt/show-router.js +1 -2
- package/dist/k99.browser.js +3110 -0
- package/dist/k99.browser.min.js +6 -0
- package/dist/k99.esm.js +3082 -0
- package/dist/k99.esm.min.js +6 -0
- package/dist/k99.js +3104 -0
- package/dist/k99.mjs +3082 -0
- package/dist/k99Browser.browser.js +490 -0
- package/dist/k99Browser.browser.min.js +6 -0
- package/dist/k99Browser.esm.js +475 -0
- package/dist/k99Browser.esm.min.js +6 -0
- package/dist/k99Browser.js +484 -0
- package/dist/k99Browser.mjs +475 -0
- package/dist/k99Services.browser.js +145 -0
- package/dist/k99Services.browser.min.js +6 -0
- package/dist/k99Services.esm.js +136 -0
- package/dist/k99Services.esm.min.js +6 -0
- package/dist/k99Services.js +141 -0
- package/dist/k99Services.mjs +136 -0
- package/node/index.js +1386 -0
- package/node/index.mjs +1350 -0
- package/node/package.json +5 -0
- package/node/types.d.ts +166 -0
- package/package.json +77 -11
- package/services/package.json +8 -0
- package/services/types.d.ts +22 -0
- package/starter.js +0 -1
- package/types.d.ts +748 -0
- package/Container.d.ts +0 -92
- package/Container.js +0 -242
- package/Container.js.map +0 -1
- package/Controller/index.d.ts +0 -178
- package/Controller/index.js +0 -576
- package/Controller/index.js.map +0 -1
- package/Controller/patch/cookie.d.ts +0 -33
- package/Controller/patch/cookie.js +0 -168
- package/Controller/patch/cookie.js.map +0 -1
- package/Controller/patch/index.d.ts +0 -7
- package/Controller/patch/index.js +0 -26
- package/Controller/patch/index.js.map +0 -1
- package/Controller/patch/render.d.ts +0 -5
- package/Controller/patch/render.js +0 -24
- package/Controller/patch/render.js.map +0 -1
- package/ExitSignal.d.ts +0 -14
- package/ExitSignal.js +0 -29
- package/ExitSignal.js.map +0 -1
- package/Extension.d.ts +0 -56
- package/Extension.js +0 -93
- package/Extension.js.map +0 -1
- package/ExtensionContainer.d.ts +0 -55
- package/ExtensionContainer.js +0 -105
- package/ExtensionContainer.js.map +0 -1
- package/Plugin.d.ts +0 -52
- package/Plugin.js +0 -278
- package/Plugin.js.map +0 -1
- package/Preprocessor.d.ts +0 -86
- package/Preprocessor.js +0 -135
- package/Preprocessor.js.map +0 -1
- package/Router/assets.d.ts +0 -33
- package/Router/assets.js +0 -106
- package/Router/assets.js.map +0 -1
- package/Router/callback.d.ts +0 -9
- package/Router/callback.js +0 -152
- package/Router/callback.js.map +0 -1
- package/Router/extendsInterface.d.ts +0 -8
- package/Router/extendsInterface.js +0 -43
- package/Router/extendsInterface.js.map +0 -1
- package/Router/index.d.ts +0 -184
- package/Router/index.js +0 -615
- package/Router/index.js.map +0 -1
- package/Router/log.d.ts +0 -23
- package/Router/log.js +0 -120
- package/Router/log.js.map +0 -1
- package/Router/order.d.ts +0 -14
- package/Router/order.js +0 -71
- package/Router/order.js.map +0 -1
- package/Router/register.d.ts +0 -9
- package/Router/register.js +0 -252
- package/Router/register.js.map +0 -1
- package/Router/registerManager.d.ts +0 -22
- package/Router/registerManager.js +0 -102
- package/Router/registerManager.js.map +0 -1
- package/Router/scan.d.ts +0 -2
- package/Router/scan.js +0 -72
- package/Router/scan.js.map +0 -1
- package/Router/setHandleItem.d.ts +0 -3
- package/Router/setHandleItem.js +0 -94
- package/Router/setHandleItem.js.map +0 -1
- package/Router/settings.d.ts +0 -12
- package/Router/settings.js +0 -74
- package/Router/settings.js.map +0 -1
- package/Router/start.d.ts +0 -3
- package/Router/start.js +0 -270
- package/Router/start.js.map +0 -1
- package/Router/vars.d.ts +0 -10
- package/Router/vars.js +0 -40
- package/Router/vars.js.map +0 -1
- package/Service.d.ts +0 -12
- package/Service.js +0 -20
- package/Service.js.map +0 -1
- package/cli/command/create.d.ts +0 -7
- package/cli/command/create.js.map +0 -1
- package/cli/command/index.d.ts +0 -7
- package/cli/command/index.js.map +0 -1
- package/cli/command/init.d.ts +0 -6
- package/cli/command/init.js.map +0 -1
- package/cli/command/start.d.ts +0 -6
- package/cli/command/start.js.map +0 -1
- package/cli/index.d.ts +0 -2
- package/cli/index.js.map +0 -1
- package/cli/opt/bind.d.ts +0 -3
- package/cli/opt/bind.js.map +0 -1
- package/cli/opt/index.d.ts +0 -16
- package/cli/opt/index.js.map +0 -1
- package/cli/opt/listen.d.ts +0 -3
- package/cli/opt/listen.js.map +0 -1
- package/cli/opt/path.d.ts +0 -3
- package/cli/opt/path.js.map +0 -1
- package/cli/opt/port.d.ts +0 -3
- package/cli/opt/port.js.map +0 -1
- package/cli/opt/show-router.d.ts +0 -3
- package/cli/opt/show-router.js.map +0 -1
- package/index.d.ts +0 -354
- package/index.js +0 -155
- package/index.js.map +0 -1
- package/setOptions.d.ts +0 -12
- package/setOptions.js +0 -60
- package/setOptions.js.map +0 -1
- package/starter.d.ts +0 -2
- package/starter.js.map +0 -1
- package/symbols.d.ts +0 -13
- package/symbols.js +0 -31
- package/symbols.js.map +0 -1
- package/util/index.d.ts +0 -5
- package/util/index.js +0 -92
- package/util/index.js.map +0 -1
- package/util/stream.d.ts +0 -19
- package/util/stream.js +0 -66
- package/util/stream.js.map +0 -1
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.attach = attach;
|
|
7
|
-
exports.init = init;
|
|
8
|
-
const map = new WeakMap();
|
|
9
|
-
|
|
10
|
-
function* get(controller, name) {
|
|
11
|
-
const list = map.get(controller) || [];
|
|
12
|
-
|
|
13
|
-
for (const {
|
|
14
|
-
name: n,
|
|
15
|
-
value,
|
|
16
|
-
expire,
|
|
17
|
-
domain,
|
|
18
|
-
path,
|
|
19
|
-
secure,
|
|
20
|
-
httpOnly
|
|
21
|
-
} of list) {
|
|
22
|
-
if (name && n !== name) {
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
yield {
|
|
27
|
-
value,
|
|
28
|
-
expire,
|
|
29
|
-
domain,
|
|
30
|
-
path,
|
|
31
|
-
secure,
|
|
32
|
-
httpOnly
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function setCookieHeader(controller) {
|
|
38
|
-
controller.setHeader('set-cookie', (map.get(controller) || []).map(({
|
|
39
|
-
name,
|
|
40
|
-
value,
|
|
41
|
-
expire,
|
|
42
|
-
domain,
|
|
43
|
-
path,
|
|
44
|
-
secure,
|
|
45
|
-
httpOnly
|
|
46
|
-
}) => name && [`${encodeURI(name)}=${encodeURI(value || '')}`, expire && `Expires=${expire}`, domain && `Domain=${encodeURI(domain)}`, path && `Path=${encodeURI(path)}`, secure && 'Secure', httpOnly && 'HttpOnly'].filter(Boolean).join('; ')).filter(Boolean));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function set(controller, name, value, {
|
|
50
|
-
expire,
|
|
51
|
-
domain,
|
|
52
|
-
path,
|
|
53
|
-
secure,
|
|
54
|
-
httpOnly
|
|
55
|
-
} = {}) {
|
|
56
|
-
const list = map.get(controller) || [];
|
|
57
|
-
map.set(controller, list);
|
|
58
|
-
list.push({
|
|
59
|
-
name,
|
|
60
|
-
value,
|
|
61
|
-
expire,
|
|
62
|
-
domain,
|
|
63
|
-
path,
|
|
64
|
-
secure,
|
|
65
|
-
httpOnly
|
|
66
|
-
});
|
|
67
|
-
setCookieHeader(controller);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function clear(controller, name, opt) {
|
|
71
|
-
const list = map.get(controller) || [];
|
|
72
|
-
const {
|
|
73
|
-
cookies
|
|
74
|
-
} = controller;
|
|
75
|
-
map.set(controller, list);
|
|
76
|
-
let expire = 'Fri, 31 Dec 1999 16:00:00 GMT';
|
|
77
|
-
|
|
78
|
-
if (typeof name === 'string') {
|
|
79
|
-
if (!name) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const {
|
|
84
|
-
domain,
|
|
85
|
-
path,
|
|
86
|
-
secure,
|
|
87
|
-
httpOnly
|
|
88
|
-
} = opt !== true && opt || {};
|
|
89
|
-
list.push({
|
|
90
|
-
name,
|
|
91
|
-
value: 'delete',
|
|
92
|
-
expire,
|
|
93
|
-
domain,
|
|
94
|
-
path,
|
|
95
|
-
secure,
|
|
96
|
-
httpOnly
|
|
97
|
-
});
|
|
98
|
-
} else {
|
|
99
|
-
const {
|
|
100
|
-
domain,
|
|
101
|
-
path,
|
|
102
|
-
secure,
|
|
103
|
-
httpOnly
|
|
104
|
-
} = name || {};
|
|
105
|
-
map.set(controller, []);
|
|
106
|
-
|
|
107
|
-
if (opt) {
|
|
108
|
-
for (let name in cookies) {
|
|
109
|
-
list.push({
|
|
110
|
-
name,
|
|
111
|
-
value: 'delete',
|
|
112
|
-
expire,
|
|
113
|
-
domain,
|
|
114
|
-
path,
|
|
115
|
-
secure,
|
|
116
|
-
httpOnly
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
setCookieHeader(controller);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function attach(Controller) {
|
|
126
|
-
Reflect.defineProperty(Controller.prototype, 'getCookie', {
|
|
127
|
-
configurable: true,
|
|
128
|
-
|
|
129
|
-
value(name) {
|
|
130
|
-
return get(this, name);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
});
|
|
134
|
-
Reflect.defineProperty(Controller.prototype, 'setCookie', {
|
|
135
|
-
configurable: true,
|
|
136
|
-
|
|
137
|
-
value(name, value, option) {
|
|
138
|
-
return set(this, name, value, option);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
});
|
|
142
|
-
Reflect.defineProperty(Controller.prototype, 'clearCookie', {
|
|
143
|
-
configurable: true,
|
|
144
|
-
|
|
145
|
-
value(name, option) {
|
|
146
|
-
return clear(this, name, option);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
function init(controller) {
|
|
153
|
-
const cookie = controller.headers['cookie'] || '';
|
|
154
|
-
let cookies = {};
|
|
155
|
-
|
|
156
|
-
for (const item of cookie.replace(/\s/g, '').split(';')) {
|
|
157
|
-
const v = item.split('=');
|
|
158
|
-
const name = decodeURIComponent(v.shift());
|
|
159
|
-
cookies[name] = decodeURIComponent(v.join('='));
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
Reflect.defineProperty(controller, 'cookies', {
|
|
163
|
-
value: cookies,
|
|
164
|
-
configurable: true,
|
|
165
|
-
enumerable: true
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=cookie.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/k99/Controller/patch/cookie.ts"],"names":["map","WeakMap","get","controller","name","list","n","value","expire","domain","path","secure","httpOnly","setCookieHeader","setHeader","encodeURI","filter","Boolean","join","set","push","clear","opt","cookies","attach","Controller","Reflect","defineProperty","prototype","configurable","option","init","cookie","headers","item","replace","split","v","decodeURIComponent","shift","enumerable"],"mappings":"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","sourcesContent":["import Controller, { Class as ControllerClass } from '..';\nimport { CookieOptionInfo, CookieOption, CookieClearOption } from '../../index';\n\ninterface CookieInfo extends CookieOptionInfo {\n\tname: string;\n}\nconst map = new WeakMap<Controller, CookieInfo[]>();\nfunction *get(controller: Controller, name: string): Iterable<CookieOptionInfo> {\n\tconst list = map.get(controller) || [];\n\tfor (const {name: n, value, expire, domain, path, secure, httpOnly } of list) {\n\t\tif (name && n !== name) { continue; }\n\t\tyield { value, expire, domain, path, secure, httpOnly };\n\t}\n}\n\nfunction setCookieHeader(controller: Controller): void {\n\tcontroller.setHeader('set-cookie', (map.get(controller) || []).map(({ name, value, expire, domain, path, secure, httpOnly }) => name && [\n\t\t`${ encodeURI(name) }=${ encodeURI(value || '') }`,\n\t\texpire && `Expires=${ expire }`,\n\t\tdomain && `Domain=${ encodeURI(domain) }`,\n\t\tpath && `Path=${ encodeURI(path) }`,\n\t\tsecure && 'Secure',\n\t\thttpOnly && 'HttpOnly',\n\t].filter(Boolean).join('; ')).filter(Boolean));\n}\nfunction set(controller: Controller, name: string, value: string, { expire, domain, path, secure, httpOnly }: CookieOption = {}): void {\n\tconst list = map.get(controller) || [];\n\tmap.set(controller, list);\n\tlist.push({ name, value, expire, domain, path, secure, httpOnly });\n\tsetCookieHeader(controller);\n}\n\nfunction clear(controller: Controller, name: string, opt?: CookieClearOption): void;\nfunction clear(controller: Controller, opt?: CookieClearOption, all?: boolean): void;\nfunction clear(controller: Controller, name?: string | CookieClearOption, opt?: CookieClearOption | boolean): void;\nfunction clear(controller: Controller, name?: string | CookieClearOption, opt?: CookieClearOption | boolean): void {\n\tconst list = map.get(controller) || [];\n\tconst { cookies } = controller;\n\tmap.set(controller, list);\n\tlet expire = 'Fri, 31 Dec 1999 16:00:00 GMT';\n\tif (typeof name === 'string') {\n\t\tif (!name) { return; }\n\t\tconst { domain, path, secure, httpOnly }: CookieClearOption = opt !== true && opt || {};\n\t\tlist.push({ name, value: 'delete', expire, domain, path, secure, httpOnly });\n\t} else {\n\t\tconst { domain, path, secure, httpOnly }: CookieClearOption = name || {};\n\t\tmap.set(controller, []);\n\t\tif (opt) {\n\t\t\tfor (let name in cookies) {\n\t\t\t\tlist.push({ name, value: 'delete', expire, domain, path, secure, httpOnly });\n\t\t\t}\n\t\t}\n\t}\n\tsetCookieHeader(controller);\n}\nexport function attach<C extends Controller, CC extends ControllerClass<C>>(Controller: CC) {\n\tReflect.defineProperty(Controller.prototype, 'getCookie', { configurable: true, value(this: C, name: string) { return get(this, name); } });\n\tReflect.defineProperty(Controller.prototype, 'setCookie', { configurable: true, value(this: C, name: string, value: string, option: CookieOption) { return set(this, name, value, option); } });\n\tReflect.defineProperty(Controller.prototype, 'clearCookie', { configurable: true, value(this: C, name?: string | CookieClearOption, option?: CookieClearOption | boolean) { return clear(this, name, option); } });\n}\n\nexport function init<C extends Controller>(controller: C) {\n\tconst cookie = controller.headers['cookie'] || '';\n\tlet cookies: { [key: string]: string; } = {};\n\tfor (const item of cookie.replace(/\\s/g, '').split(';')) {\n\t\tconst v = item.split('=');\n\t\tconst name = decodeURIComponent(v.shift() as string);\n\t\tcookies[name] = decodeURIComponent(v.join('='));\n\t}\n\tReflect.defineProperty(controller, 'cookies', { value: cookies, configurable: true, enumerable: true });\n}\n\nexport interface Interface {\n\t/** 请求 cookie */\n\treadonly cookies: Readonly<{ [key: string]: string; }>;\n\t/**\n\t * 获取已设置的 cookie 信息\n\t */\n\tgetCookie(name: string): Iterable<CookieOptionInfo>;\n\t/**\n\t * 设置 cookie\n\t * @param name cookie 名称\n\t * @param value cookie 内容\n\t * @param option 选项\n\t */\n\tsetCookie(name: string, value: string, option?: CookieOption): void;\n\t/**\n\t * 清除指定 cookie\n\t * @param name 要清楚的 cookie 名称\n\t * @param option 选项\n\t */\n\tclearCookie(name: string, option?: CookieClearOption): void;\n\t/**\n\t * 清除所有的 cookie\n\t * @param option 选项\n\t * @param all 是否包括请求 cookie 在内的 cookie 都要清除\n\t */\n\tclearCookie(option?: CookieClearOption, all?: boolean): void;\n}\n"],"file":"cookie.js"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as cookie from './cookie';
|
|
2
|
-
import * as render from './render';
|
|
3
|
-
import Controller, { Class as ControllerClass } from '..';
|
|
4
|
-
export declare function attach<C extends Controller, CC extends ControllerClass<C>>(Controller: CC): void;
|
|
5
|
-
export declare function init<C extends Controller>(controller: C): void;
|
|
6
|
-
export interface Interface extends cookie.Interface, render.Interface {
|
|
7
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.attach = attach;
|
|
7
|
-
exports.init = init;
|
|
8
|
-
|
|
9
|
-
var cookie = _interopRequireWildcard(require("./cookie"));
|
|
10
|
-
|
|
11
|
-
var render = _interopRequireWildcard(require("./render"));
|
|
12
|
-
|
|
13
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
14
|
-
|
|
15
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
-
|
|
17
|
-
function attach(Controller) {
|
|
18
|
-
cookie.attach(Controller);
|
|
19
|
-
render.attach(Controller);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function init(controller) {
|
|
23
|
-
cookie.init(controller);
|
|
24
|
-
render.init(controller);
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/k99/Controller/patch/index.ts"],"names":["attach","Controller","cookie","render","init","controller"],"mappings":";;;;;;;;AAAA;;AACA;;;;;;AAEO,SAASA,MAAT,CAAqEC,UAArE,EAAqF;AAC3FC,EAAAA,MAAM,CAACF,MAAP,CAAcC,UAAd;AACAE,EAAAA,MAAM,CAACH,MAAP,CAAcC,UAAd;AACA;;AACM,SAASG,IAAT,CAAoCC,UAApC,EAAmD;AACzDH,EAAAA,MAAM,CAACE,IAAP,CAAYC,UAAZ;AACAF,EAAAA,MAAM,CAACC,IAAP,CAAYC,UAAZ;AACA","sourcesContent":["import * as cookie from './cookie';\nimport * as render from './render';\nimport Controller, { Class as ControllerClass } from '..';\nexport function attach<C extends Controller, CC extends ControllerClass<C>>(Controller: CC) {\n\tcookie.attach(Controller);\n\trender.attach(Controller);\n}\nexport function init<C extends Controller>(controller: C) {\n\tcookie.init(controller);\n\trender.init(controller);\n}\n\nexport interface Interface extends cookie.Interface, render.Interface {}\n"],"file":"index.js"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import Controller, { Class as ControllerClass } from '..';
|
|
2
|
-
export declare function attach<C extends Controller, CC extends ControllerClass<C>>(Controller: CC): void;
|
|
3
|
-
export declare function init<C extends Controller>(controller: C): void;
|
|
4
|
-
export interface Interface {
|
|
5
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.attach = attach;
|
|
7
|
-
exports.init = init;
|
|
8
|
-
|
|
9
|
-
function render(controller, data, view, packageName) {
|
|
10
|
-
// TODO
|
|
11
|
-
return controller.exit();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function renderData(controller, data, view, packageName) {
|
|
15
|
-
// TODO
|
|
16
|
-
return controller.exit();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function attach(Controller) {// Reflect.defineProperty(Controller.prototype, 'render', { configurable: true, value(this: C, ...any: any[]) { return render(this, ...any); } });
|
|
20
|
-
// Reflect.defineProperty(Controller.prototype, 'renderData', { configurable: true, value(this: C, ...any: any[]) { return renderData(this, ...any); } });
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function init(controller) {}
|
|
24
|
-
//# sourceMappingURL=render.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/k99/Controller/patch/render.ts"],"names":["render","controller","data","view","packageName","exit","renderData","attach","Controller","init"],"mappings":";;;;;;;;AAKA,SAASA,MAAT,CAAgBC,UAAhB,EAAwCC,IAAxC,EAAgEC,IAAhE,EAAwFC,WAAxF,EAA8H;AAC7H;AACA,SAAOH,UAAU,CAACI,IAAX,EAAP;AACA;;AAID,SAASC,UAAT,CAAoBL,UAApB,EAA4CC,IAA5C,EAAoEC,IAApE,EAA4FC,WAA5F,EAAkI;AACjI;AACA,SAAOH,UAAU,CAACI,IAAX,EAAP;AACA;;AACM,SAASE,MAAT,CAAqEC,UAArE,EAAqF,CAC3F;AACA;AACA;;AAEM,SAASC,IAAT,CAAoCR,UAApC,EAAmD,CAAE","sourcesContent":["import Controller, { Class as ControllerClass } from '..';\n\nfunction render(controller: Controller, data?: object, view?: string, packageName?: string): Promise<never>;\nfunction render(controller: Controller, view: string, data?: object, packageName?: string): Promise<never>;\nfunction render(controller: Controller, data?: object | string, view?: string | object, packageName?: string): Promise<never>;\nfunction render(controller: Controller, data?: object | string, view?: string | object, packageName?: string): Promise<never> {\n\t// TODO\n\treturn controller.exit();\n}\nfunction renderData(controller: Controller, data?: object, view?: string, packageName?: string): Promise<never>;\nfunction renderData(controller: Controller, view: string, data?: object, packageName?: string): Promise<never>;\nfunction renderData(controller: Controller, data?: object | string, view?: string | object, packageName?: string): Promise<never>;\nfunction renderData(controller: Controller, data?: object | string, view?: string | object, packageName?: string): Promise<never> {\n\t// TODO\n\treturn controller.exit();\n}\nexport function attach<C extends Controller, CC extends ControllerClass<C>>(Controller: CC) {\n\t// Reflect.defineProperty(Controller.prototype, 'render', { configurable: true, value(this: C, ...any: any[]) { return render(this, ...any); } });\n\t// Reflect.defineProperty(Controller.prototype, 'renderData', { configurable: true, value(this: C, ...any: any[]) { return renderData(this, ...any); } });\n}\n\nexport function init<C extends Controller>(controller: C) {}\n\nexport interface Interface {\n\t// render(data?: object, view?: string, packageName?: string): Promise<never>;\n\t// render(view: string, data?: object, packageName?: string): Promise<never>;\n\t// render(data?: object | string, view?: string | object, packageName?: string): Promise<never>;\n\n\t// renderData(data?: object, view?: string, packageName?: string): Promise<never>;\n\t// renderData(view: string, data?: object, packageName?: string): Promise<never>;\n\t// renderData(data?: object | string, view?: string | object, packageName?: string): Promise<never>;\n}\n"],"file":"render.js"}
|
package/ExitSignal.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export default class ExitSignal extends Error {
|
|
2
|
-
/**
|
|
3
|
-
* 忽略对退出信号的捕获
|
|
4
|
-
* @description 用于 try { } catch(e) {} 的 catch 中忽略退出信号
|
|
5
|
-
* @example
|
|
6
|
-
* try {
|
|
7
|
-
* doSomething();
|
|
8
|
-
* } catch (e) {
|
|
9
|
-
* ExitSignal.assert(e);
|
|
10
|
-
* customProcess(e);
|
|
11
|
-
* }
|
|
12
|
-
*/
|
|
13
|
-
static assert(v: any): void;
|
|
14
|
-
}
|
package/ExitSignal.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
class ExitSignal extends Error {
|
|
9
|
-
/**
|
|
10
|
-
* 忽略对退出信号的捕获
|
|
11
|
-
* @description 用于 try { } catch(e) {} 的 catch 中忽略退出信号
|
|
12
|
-
* @example
|
|
13
|
-
* try {
|
|
14
|
-
* doSomething();
|
|
15
|
-
* } catch (e) {
|
|
16
|
-
* ExitSignal.assert(e);
|
|
17
|
-
* customProcess(e);
|
|
18
|
-
* }
|
|
19
|
-
*/
|
|
20
|
-
static assert(v) {
|
|
21
|
-
if (v instanceof ExitSignal) {
|
|
22
|
-
throw v;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
exports.default = ExitSignal;
|
|
29
|
-
//# sourceMappingURL=ExitSignal.js.map
|
package/ExitSignal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/k99/ExitSignal.ts"],"names":["ExitSignal","Error","assert","v"],"mappings":";;;;;;;AAAe,MAAMA,UAAN,SAAyBC,KAAzB,CAA+B;AAC7C;;;;;;;;;;;AAWA,SAAOC,MAAP,CAAcC,CAAd,EAA4B;AAC3B,QAAIA,CAAC,YAAYH,UAAjB,EAA6B;AAAE,YAAMG,CAAN;AAAU;AACzC;;AAd4C","sourcesContent":["export default class ExitSignal extends Error {\n\t/**\n\t * 忽略对退出信号的捕获\n\t * @description 用于 try { } catch(e) {} 的 catch 中忽略退出信号\n\t * @example\n\t * try {\n\t * \tdoSomething();\n\t * } catch (e) {\n\t * \tExitSignal.assert(e);\n\t * \tcustomProcess(e);\n\t * }\n\t */\n\tstatic assert(v: any): void {\n\t\tif (v instanceof ExitSignal) { throw v; }\n\t}\n}\n"],"file":"ExitSignal.js"}
|
package/Extension.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { IClass } from './index';
|
|
3
|
-
import Controller, { Class as ControllerClass } from './Controller';
|
|
4
|
-
import ExtensionContainer from './ExtensionContainer';
|
|
5
|
-
export interface Base {
|
|
6
|
-
exec(): void | Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
export declare type Param = ConstructorParameters<typeof Extension>;
|
|
9
|
-
export declare type Class<T extends Extension<any, any>> = IClass<T, Param, Base>;
|
|
10
|
-
declare class Extension<C extends Controller, CC extends ControllerClass<C>> extends ExtensionContainer<C, CC> {
|
|
11
|
-
/** 静态执行 */
|
|
12
|
-
static exec(): void | Promise<void>;
|
|
13
|
-
/** 关联的 Controller 实例 */
|
|
14
|
-
static readonly controller: ControllerClass<any>;
|
|
15
|
-
/**
|
|
16
|
-
* 使用 Extension 对关联的 Controller 进行扩展
|
|
17
|
-
* @param E 用于扩展的 Extension 类或其注册 id
|
|
18
|
-
*/
|
|
19
|
-
static extends(E: Class<Extension<any, any>> | string): Promise<IClass<any, [Readonly<{
|
|
20
|
-
[p: string]: string;
|
|
21
|
-
}>, import(".").BaseRequest, object, import(".").Exports<any>, import(".").FileInfo, import("./Router").default, import(".").K99Request | import("http").IncomingMessage | import("http2").Http2ServerRequest, import(".").K99Response | import("http").ServerResponse | import("http2").Http2ServerResponse], import("./Controller").Base<any>>>;
|
|
22
|
-
/**
|
|
23
|
-
* 设置关联的 Controller 的惰性 getter
|
|
24
|
-
* @description 惰性 getter 只会在第一次获取时执行
|
|
25
|
-
* @param name 属性名称
|
|
26
|
-
* @param getter Getter 函数
|
|
27
|
-
* @param enumerable 是否为可枚举属性
|
|
28
|
-
*/
|
|
29
|
-
static setLazyGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* 设置关联的 Controller 的 getter
|
|
32
|
-
* @param name 属性名称
|
|
33
|
-
* @param getter Getter 函数
|
|
34
|
-
* @param enumerable 是否为可枚举属性
|
|
35
|
-
*/
|
|
36
|
-
static setGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* 设置关联的 Controller 的 getter
|
|
39
|
-
* @param name 属性名称
|
|
40
|
-
* @param getter Getter 函数
|
|
41
|
-
* @param setter 要同时设置的 Setter 函数
|
|
42
|
-
* @param enumerable 是否为可枚举属性
|
|
43
|
-
*/
|
|
44
|
-
static setGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, setter: (this: C, value: T) => void, enumerable?: boolean): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* 设置关联的 Controller 的方法属性
|
|
47
|
-
* @param name 方法名
|
|
48
|
-
* @param f 方法
|
|
49
|
-
*/
|
|
50
|
-
static setMethod<P extends any[], R extends any, C extends Controller = Controller>(name: number | string | symbol, f: (this: C, ...p: P) => R): boolean;
|
|
51
|
-
}
|
|
52
|
-
interface Extension<C extends Controller, CC extends ControllerClass<C>> {
|
|
53
|
-
/** Extension 的类自身 */
|
|
54
|
-
readonly class: Class<this>;
|
|
55
|
-
}
|
|
56
|
-
export default Extension;
|
package/Extension.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _ExtensionContainer = _interopRequireDefault(require("./ExtensionContainer"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
|
-
class Extension extends _ExtensionContainer.default {
|
|
15
|
-
/** 静态执行 */
|
|
16
|
-
static exec() {}
|
|
17
|
-
/** 关联的 Controller 实例 */
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 使用 Extension 对关联的 Controller 进行扩展
|
|
22
|
-
* @param E 用于扩展的 Extension 类或其注册 id
|
|
23
|
-
*/
|
|
24
|
-
static extends(E) {
|
|
25
|
-
return this.controller.extends(E);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 设置关联的 Controller 的惰性 getter
|
|
29
|
-
* @description 惰性 getter 只会在第一次获取时执行
|
|
30
|
-
* @param name 属性名称
|
|
31
|
-
* @param getter Getter 函数
|
|
32
|
-
* @param enumerable 是否为可枚举属性
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
static setLazyGetter(name, getter, enumerable = false) {
|
|
37
|
-
return Reflect.defineProperty(this.controller.prototype, name, {
|
|
38
|
-
get() {
|
|
39
|
-
const value = getter.call(this);
|
|
40
|
-
Reflect.defineProperty(this, name, {
|
|
41
|
-
value,
|
|
42
|
-
enumerable,
|
|
43
|
-
configurable: true
|
|
44
|
-
});
|
|
45
|
-
return value;
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
enumerable,
|
|
49
|
-
configurable: true
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* 设置关联的 Controller 的 getter
|
|
54
|
-
* @param name 属性名称
|
|
55
|
-
* @param getter Getter 函数
|
|
56
|
-
* @param enumerable 是否为可枚举属性
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
static setGetter(name, getter, setter, enumerable = false) {
|
|
61
|
-
if (typeof setter === 'boolean') {
|
|
62
|
-
enumerable = setter;
|
|
63
|
-
setter = undefined;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return Reflect.defineProperty(this.controller.prototype, name, {
|
|
67
|
-
get: getter,
|
|
68
|
-
set: setter,
|
|
69
|
-
enumerable,
|
|
70
|
-
configurable: true
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* 设置关联的 Controller 的方法属性
|
|
75
|
-
* @param name 方法名
|
|
76
|
-
* @param f 方法
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
static setMethod(name, f) {
|
|
81
|
-
return Reflect.defineProperty(this.controller.prototype, name, {
|
|
82
|
-
value: f,
|
|
83
|
-
configurable: true
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
_defineProperty(Extension, "controller", undefined);
|
|
90
|
-
|
|
91
|
-
var _default = Extension;
|
|
92
|
-
exports.default = _default;
|
|
93
|
-
//# sourceMappingURL=Extension.js.map
|
package/Extension.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/k99/Extension.ts"],"names":["Extension","ExtensionContainer","exec","extends","E","controller","setLazyGetter","name","getter","enumerable","Reflect","defineProperty","prototype","get","value","call","configurable","setGetter","setter","undefined","set","setMethod","f"],"mappings":";;;;;;;AAEA;;;;;;AAQA,MAAMA,SAAN,SAA6EC,2BAA7E,CAAuG;AACtG;AACA,SAAOC,IAAP,GAAoC,CAAE;AACtC;;;AAEA;;;;AAIA,SAAOC,OAAP,CAAeC,CAAf,EAAuD;AACtD,WAAO,KAAKC,UAAL,CAAgBF,OAAhB,CAAwBC,CAAxB,CAAP;AACA;AACD;;;;;;;;;AAOA,SAAOE,aAAP,CAAuEC,IAAvE,EAAuGC,MAAvG,EAA+HC,UAAU,GAAG,KAA5I,EAA4J;AAC3J,WAAOC,OAAO,CAACC,cAAR,CAAuB,KAAKN,UAAL,CAAgBO,SAAvC,EAAkDL,IAAlD,EAAwD;AAAEM,MAAAA,GAAG,GAAU;AAC7E,cAAMC,KAAK,GAAGN,MAAM,CAACO,IAAP,CAAY,IAAZ,CAAd;AACAL,QAAAA,OAAO,CAACC,cAAR,CAAuB,IAAvB,EAA6BJ,IAA7B,EAAmC;AAAEO,UAAAA,KAAF;AAASL,UAAAA,UAAT;AAAqBO,UAAAA,YAAY,EAAE;AAAnC,SAAnC;AACA,eAAOF,KAAP;AACA,OAJ8D;;AAI5DL,MAAAA,UAJ4D;AAIhDO,MAAAA,YAAY,EAAE;AAJkC,KAAxD,CAAP;AAKA;AACD;;;;;;;;AAeA,SAAOC,SAAP,CAAmEV,IAAnE,EAAmGC,MAAnG,EAA2HU,MAA3H,EAA6KT,UAAU,GAAG,KAA1L,EAA0M;AACzM,QAAI,OAAOS,MAAP,KAAkB,SAAtB,EAAiC;AAChCT,MAAAA,UAAU,GAAGS,MAAb;AACAA,MAAAA,MAAM,GAAGC,SAAT;AACA;;AACD,WAAOT,OAAO,CAACC,cAAR,CAAuB,KAAKN,UAAL,CAAgBO,SAAvC,EAAkDL,IAAlD,EAAwD;AAAEM,MAAAA,GAAG,EAAEL,MAAP;AAAeY,MAAAA,GAAG,EAAEF,MAApB;AAA4BT,MAAAA,UAA5B;AAAwCO,MAAAA,YAAY,EAAE;AAAtD,KAAxD,CAAP;AACA;AACD;;;;;;;AAKA,SAAOK,SAAP,CAAoFd,IAApF,EAAoHe,CAApH,EAAyJ;AACxJ,WAAOZ,OAAO,CAACC,cAAR,CAAuB,KAAKN,UAAL,CAAgBO,SAAvC,EAAkDL,IAAlD,EAAwD;AAAEO,MAAAA,KAAK,EAAEQ,CAAT;AAAYN,MAAAA,YAAY,EAAE;AAA1B,KAAxD,CAAP;AACA;;AAvDqG;;gBAAjGhB,S,gBAI8CmB,S;;eA2DrCnB,S","sourcesContent":["import { IClass } from './index';\nimport Controller, { Class as ControllerClass} from './Controller';\nimport ExtensionContainer from './ExtensionContainer';\n\nexport interface Base {\n\texec(): void | Promise<void>;\n}\nexport type Param = ConstructorParameters<typeof Extension>;\nexport type Class<T extends Extension<any, any>> = IClass<T, Param, Base>;\n\nclass Extension<C extends Controller, CC extends ControllerClass<C>> extends ExtensionContainer<C, CC> {\n\t/** 静态执行 */\n\tstatic exec(): void | Promise<void> {}\n\t/** 关联的 Controller 实例 */\n\tstatic readonly controller: ControllerClass<any> = undefined as any;\n\t/**\n\t * 使用 Extension 对关联的 Controller 进行扩展\n\t * @param E 用于扩展的 Extension 类或其注册 id\n\t */\n\tstatic extends(E: Class<Extension<any, any>> | string) {\n\t\treturn this.controller.extends(E);\n\t}\n\t/**\n\t * 设置关联的 Controller 的惰性 getter\n\t * @description 惰性 getter 只会在第一次获取时执行\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tstatic setLazyGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, enumerable = false): boolean {\n\t\treturn Reflect.defineProperty(this.controller.prototype, name, { get(this: C) {\n\t\t\tconst value = getter.call(this);\n\t\t\tReflect.defineProperty(this, name, { value, enumerable, configurable: true });\n\t\t\treturn value;\n\t\t}, enumerable, configurable: true });\n\t}\n\t/**\n\t * 设置关联的 Controller 的 getter\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tstatic setGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;\n\t/**\n\t * 设置关联的 Controller 的 getter\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param setter 要同时设置的 Setter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tstatic setGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, setter: (this: C, value: T) => void, enumerable?: boolean): boolean;\n\tstatic setGetter<T extends any, C extends Controller = Controller>(name: number | string | symbol, getter: (this: C) => T, setter?: boolean | ((this: C, value: T) => void), enumerable = false): boolean {\n\t\tif (typeof setter === 'boolean') {\n\t\t\tenumerable = setter;\n\t\t\tsetter = undefined;\n\t\t}\n\t\treturn Reflect.defineProperty(this.controller.prototype, name, { get: getter, set: setter, enumerable, configurable: true });\n\t}\n\t/**\n\t * 设置关联的 Controller 的方法属性\n\t * @param name 方法名\n\t * @param f 方法\n\t */\n\tstatic setMethod<P extends any[], R extends any, C extends Controller = Controller>(name: number | string | symbol, f: (this: C, ...p: P) => R): boolean {\n\t\treturn Reflect.defineProperty(this.controller.prototype, name, { value: f, configurable: true });\n\t}\n}\n\ninterface Extension<C extends Controller, CC extends ControllerClass<C>> {\n\t/** Extension 的类自身 */\n\treadonly class: Class<this>;\n}\n\nexport default Extension;\n"],"file":"Extension.js"}
|
package/ExtensionContainer.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { IClass } from './index';
|
|
2
|
-
import Controller, { Class as ControllerClass } from './Controller';
|
|
3
|
-
import Container from './Container';
|
|
4
|
-
import Extension, { Class as ExtensionClass } from './Extension';
|
|
5
|
-
declare class ExtensionContainer<C extends Controller, CC extends ControllerClass<C>> extends Container<C, CC> {
|
|
6
|
-
/**
|
|
7
|
-
* 使用 Extension 对关联的 Controller 进行扩展
|
|
8
|
-
* @param E 用于扩展的 Extension 类或其注册 id
|
|
9
|
-
*/
|
|
10
|
-
extends(E: ExtensionClass<Extension<C, CC>> | string): Promise<void>;
|
|
11
|
-
/**
|
|
12
|
-
* 设置关联的 Controller 的属性
|
|
13
|
-
* @param name 属性名称
|
|
14
|
-
* @param value 要设置的值
|
|
15
|
-
* @param enumerable 是否可枚举
|
|
16
|
-
* @param writable 是否可写
|
|
17
|
-
*/
|
|
18
|
-
setProperty<T extends any>(name: number | string | symbol, value: T, enumerable?: boolean, writable?: boolean): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* 设置关联的 Controller 的惰性 getter
|
|
21
|
-
* @description 惰性 getter 只会在第一次获取时执行
|
|
22
|
-
* @param name 属性名称
|
|
23
|
-
* @param getter Getter 函数
|
|
24
|
-
* @param enumerable 是否为可枚举属性
|
|
25
|
-
*/
|
|
26
|
-
setLazyGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* 设置关联的 Controller 的 getter
|
|
29
|
-
* @param name 属性名称
|
|
30
|
-
* @param getter Getter 函数
|
|
31
|
-
* @param enumerable 是否为可枚举属性
|
|
32
|
-
*/
|
|
33
|
-
setGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* 设置关联的 Controller 的 getter
|
|
36
|
-
* @param name 属性名称
|
|
37
|
-
* @param getter Getter 函数
|
|
38
|
-
* @param setter 要同时设置的 Setter 函数
|
|
39
|
-
* @param enumerable 是否为可枚举属性
|
|
40
|
-
*/
|
|
41
|
-
setGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, setter: (this: C, value: T) => void, enumerable?: boolean): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* 设置关联的 Controller 的方法属性
|
|
44
|
-
* @param name 方法名
|
|
45
|
-
* @param f 方法
|
|
46
|
-
*/
|
|
47
|
-
setMethod<P extends any[], R extends any>(name: number | string | symbol, f: (this: C, ...p: P) => R): boolean;
|
|
48
|
-
/** 执行此项 */
|
|
49
|
-
exec(): void | Promise<void>;
|
|
50
|
-
}
|
|
51
|
-
interface ExtensionContainer<C extends Controller, CC extends ControllerClass<C>> {
|
|
52
|
-
/** ExtensionContainer 的类自身 */
|
|
53
|
-
readonly class: IClass<this, ConstructorParameters<typeof ExtensionContainer>, {}>;
|
|
54
|
-
}
|
|
55
|
-
export default ExtensionContainer;
|
package/ExtensionContainer.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _Container = _interopRequireDefault(require("./Container"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class ExtensionContainer extends _Container.default {
|
|
13
|
-
/**
|
|
14
|
-
* 使用 Extension 对关联的 Controller 进行扩展
|
|
15
|
-
* @param E 用于扩展的 Extension 类或其注册 id
|
|
16
|
-
*/
|
|
17
|
-
extends(E) {
|
|
18
|
-
return this.controller.extends(E);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* 设置关联的 Controller 的属性
|
|
22
|
-
* @param name 属性名称
|
|
23
|
-
* @param value 要设置的值
|
|
24
|
-
* @param enumerable 是否可枚举
|
|
25
|
-
* @param writable 是否可写
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
setProperty(name, value, enumerable = false, writable = false) {
|
|
30
|
-
return Reflect.defineProperty(this.controller, name, {
|
|
31
|
-
value,
|
|
32
|
-
enumerable,
|
|
33
|
-
writable,
|
|
34
|
-
configurable: true
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 设置关联的 Controller 的惰性 getter
|
|
39
|
-
* @description 惰性 getter 只会在第一次获取时执行
|
|
40
|
-
* @param name 属性名称
|
|
41
|
-
* @param getter Getter 函数
|
|
42
|
-
* @param enumerable 是否为可枚举属性
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
setLazyGetter(name, getter, enumerable = false) {
|
|
47
|
-
return Reflect.defineProperty(this.controller, name, {
|
|
48
|
-
get() {
|
|
49
|
-
const value = getter.call(this);
|
|
50
|
-
Reflect.defineProperty(this, name, {
|
|
51
|
-
value,
|
|
52
|
-
enumerable,
|
|
53
|
-
configurable: true
|
|
54
|
-
});
|
|
55
|
-
return value;
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
enumerable,
|
|
59
|
-
configurable: true
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* 设置关联的 Controller 的 getter
|
|
64
|
-
* @param name 属性名称
|
|
65
|
-
* @param getter Getter 函数
|
|
66
|
-
* @param enumerable 是否为可枚举属性
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
setGetter(name, getter, setter, enumerable = false) {
|
|
71
|
-
if (typeof setter === 'boolean') {
|
|
72
|
-
enumerable = setter;
|
|
73
|
-
setter = undefined;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return Reflect.defineProperty(this.controller, name, {
|
|
77
|
-
get: getter,
|
|
78
|
-
set: setter,
|
|
79
|
-
enumerable,
|
|
80
|
-
configurable: true
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* 设置关联的 Controller 的方法属性
|
|
85
|
-
* @param name 方法名
|
|
86
|
-
* @param f 方法
|
|
87
|
-
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
setMethod(name, f) {
|
|
91
|
-
return Reflect.defineProperty(this.controller, name, {
|
|
92
|
-
value: f,
|
|
93
|
-
configurable: true
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
/** 执行此项 */
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
exec() {}
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
var _default = ExtensionContainer;
|
|
104
|
-
exports.default = _default;
|
|
105
|
-
//# sourceMappingURL=ExtensionContainer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/k99/ExtensionContainer.ts"],"names":["ExtensionContainer","Container","extends","E","controller","setProperty","name","value","enumerable","writable","Reflect","defineProperty","configurable","setLazyGetter","getter","get","call","setGetter","setter","undefined","set","setMethod","f","exec"],"mappings":";;;;;;;AAEA;;;;AAGA,MAAMA,kBAAN,SAAsFC,kBAAtF,CAAuG;AACtG;;;;AAIAC,EAAAA,OAAO,CAACC,CAAD,EAA8D;AACpE,WAAO,KAAKC,UAAL,CAAgBF,OAAhB,CAAwBC,CAAxB,CAAP;AACA;AACD;;;;;;;;;AAOAE,EAAAA,WAAW,CAAgBC,IAAhB,EAAgDC,KAAhD,EAA0DC,UAAU,GAAG,KAAvE,EAA8EC,QAAQ,GAAG,KAAzF,EAAyG;AACnH,WAAOC,OAAO,CAACC,cAAR,CAAuB,KAAKP,UAA5B,EAAwCE,IAAxC,EAA8C;AAAEC,MAAAA,KAAF;AAASC,MAAAA,UAAT;AAAqBC,MAAAA,QAArB;AAA+BG,MAAAA,YAAY,EAAE;AAA7C,KAA9C,CAAP;AACA;AACD;;;;;;;;;AAOAC,EAAAA,aAAa,CAAgBP,IAAhB,EAAgDQ,MAAhD,EAAwEN,UAAU,GAAG,KAArF,EAAqG;AACjH,WAAOE,OAAO,CAACC,cAAR,CAAuB,KAAKP,UAA5B,EAAwCE,IAAxC,EAA8C;AAAES,MAAAA,GAAG,GAAG;AAC5D,cAAMR,KAAK,GAAGO,MAAM,CAACE,IAAP,CAAY,IAAZ,CAAd;AACAN,QAAAA,OAAO,CAACC,cAAR,CAAuB,IAAvB,EAA6BL,IAA7B,EAAmC;AAAEC,UAAAA,KAAF;AAASC,UAAAA,UAAT;AAAqBI,UAAAA,YAAY,EAAE;AAAnC,SAAnC;AACA,eAAOL,KAAP;AACA,OAJoD;;AAIlDC,MAAAA,UAJkD;AAItCI,MAAAA,YAAY,EAAE;AAJwB,KAA9C,CAAP;AAKA;AACD;;;;;;;;AAeAK,EAAAA,SAAS,CAAgBX,IAAhB,EAAgDQ,MAAhD,EAAwEI,MAAxE,EAA0HV,UAAU,GAAG,KAAvI,EAAuJ;AAC/J,QAAI,OAAOU,MAAP,KAAkB,SAAtB,EAAiC;AAChCV,MAAAA,UAAU,GAAGU,MAAb;AACAA,MAAAA,MAAM,GAAGC,SAAT;AACA;;AACD,WAAOT,OAAO,CAACC,cAAR,CAAuB,KAAKP,UAA5B,EAAwCE,IAAxC,EAA8C;AAAES,MAAAA,GAAG,EAAED,MAAP;AAAeM,MAAAA,GAAG,EAAEF,MAApB;AAA4BV,MAAAA,UAA5B;AAAwCI,MAAAA,YAAY,EAAE;AAAtD,KAA9C,CAAP;AACA;AACD;;;;;;;AAKAS,EAAAA,SAAS,CAAiCf,IAAjC,EAAiEgB,CAAjE,EAAsG;AAC9G,WAAOZ,OAAO,CAACC,cAAR,CAAuB,KAAKP,UAA5B,EAAwCE,IAAxC,EAA8C;AAAEC,MAAAA,KAAK,EAAEe,CAAT;AAAYV,MAAAA,YAAY,EAAE;AAA1B,KAA9C,CAAP;AACA;AACD;;;AACAW,EAAAA,IAAI,GAAyB,CAAE;;AA/DuE;;eAsExFvB,kB","sourcesContent":["import { IClass } from './index';\nimport Controller, { Class as ControllerClass } from './Controller';\nimport Container from './Container';\nimport Extension, { Class as ExtensionClass } from './Extension';\n\nclass ExtensionContainer<C extends Controller, CC extends ControllerClass<C>> extends Container<C, CC> {\n\t/**\n\t * 使用 Extension 对关联的 Controller 进行扩展\n\t * @param E 用于扩展的 Extension 类或其注册 id\n\t */\n\textends(E: ExtensionClass<Extension<C, CC>> | string): Promise<void> {\n\t\treturn this.controller.extends(E);\n\t}\n\t/**\n\t * 设置关联的 Controller 的属性\n\t * @param name 属性名称\n\t * @param value 要设置的值\n\t * @param enumerable 是否可枚举\n\t * @param writable 是否可写\n\t */\n\tsetProperty<T extends any>(name: number | string | symbol, value: T, enumerable = false, writable = false): boolean {\n\t\treturn Reflect.defineProperty(this.controller, name, { value, enumerable, writable, configurable: true });\n\t}\n\t/**\n\t * 设置关联的 Controller 的惰性 getter\n\t * @description 惰性 getter 只会在第一次获取时执行\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tsetLazyGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, enumerable = false): boolean {\n\t\treturn Reflect.defineProperty(this.controller, name, { get() {\n\t\t\tconst value = getter.call(this as C);\n\t\t\tReflect.defineProperty(this, name, { value, enumerable, configurable: true });\n\t\t\treturn value;\n\t\t}, enumerable, configurable: true });\n\t}\n\t/**\n\t * 设置关联的 Controller 的 getter\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tsetGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, enumerable?: boolean): boolean;\n\t/**\n\t * 设置关联的 Controller 的 getter\n\t * @param name 属性名称\n\t * @param getter Getter 函数\n\t * @param setter 要同时设置的 Setter 函数\n\t * @param enumerable 是否为可枚举属性\n\t */\n\tsetGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, setter: (this: C, value: T) => void, enumerable?: boolean): boolean;\n\tsetGetter<T extends any>(name: number | string | symbol, getter: (this: C) => T, setter?: boolean | ((this: C, value: T) => void), enumerable = false): boolean {\n\t\tif (typeof setter === 'boolean') {\n\t\t\tenumerable = setter;\n\t\t\tsetter = undefined;\n\t\t}\n\t\treturn Reflect.defineProperty(this.controller, name, { get: getter, set: setter, enumerable, configurable: true });\n\t}\n\t/**\n\t * 设置关联的 Controller 的方法属性\n\t * @param name 方法名\n\t * @param f 方法\n\t */\n\tsetMethod<P extends any[], R extends any>(name: number | string | symbol, f: (this: C, ...p: P) => R): boolean {\n\t\treturn Reflect.defineProperty(this.controller, name, { value: f, configurable: true });\n\t}\n\t/** 执行此项 */\n\texec(): void | Promise<void> {}\n}\ninterface ExtensionContainer<C extends Controller, CC extends ControllerClass<C>> {\n\t/** ExtensionContainer 的类自身 */\n\treadonly class: IClass<this, ConstructorParameters<typeof ExtensionContainer>, {}>;\n}\n\nexport default ExtensionContainer;\n"],"file":"ExtensionContainer.js"}
|