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.
Files changed (154) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -0
  3. package/README.zh.md +8 -0
  4. package/browser/package.json +8 -0
  5. package/browser/types.d.ts +20 -0
  6. package/cli/command/create.js +1 -2
  7. package/cli/command/index.js +1 -2
  8. package/cli/command/init.js +3 -5
  9. package/cli/command/start.js +9 -10
  10. package/cli/index.js +3 -4
  11. package/cli/opt/bind.js +1 -2
  12. package/cli/opt/index.js +1 -2
  13. package/cli/opt/listen.js +1 -2
  14. package/cli/opt/path.js +1 -2
  15. package/cli/opt/port.js +1 -2
  16. package/cli/opt/show-router.js +1 -2
  17. package/dist/k99.browser.js +3110 -0
  18. package/dist/k99.browser.min.js +6 -0
  19. package/dist/k99.esm.js +3082 -0
  20. package/dist/k99.esm.min.js +6 -0
  21. package/dist/k99.js +3104 -0
  22. package/dist/k99.mjs +3082 -0
  23. package/dist/k99Browser.browser.js +490 -0
  24. package/dist/k99Browser.browser.min.js +6 -0
  25. package/dist/k99Browser.esm.js +475 -0
  26. package/dist/k99Browser.esm.min.js +6 -0
  27. package/dist/k99Browser.js +484 -0
  28. package/dist/k99Browser.mjs +475 -0
  29. package/dist/k99Services.browser.js +145 -0
  30. package/dist/k99Services.browser.min.js +6 -0
  31. package/dist/k99Services.esm.js +136 -0
  32. package/dist/k99Services.esm.min.js +6 -0
  33. package/dist/k99Services.js +141 -0
  34. package/dist/k99Services.mjs +136 -0
  35. package/node/index.js +1386 -0
  36. package/node/index.mjs +1350 -0
  37. package/node/package.json +5 -0
  38. package/node/types.d.ts +166 -0
  39. package/package.json +77 -11
  40. package/services/package.json +8 -0
  41. package/services/types.d.ts +22 -0
  42. package/starter.js +0 -1
  43. package/types.d.ts +748 -0
  44. package/Container.d.ts +0 -92
  45. package/Container.js +0 -242
  46. package/Container.js.map +0 -1
  47. package/Controller/index.d.ts +0 -178
  48. package/Controller/index.js +0 -576
  49. package/Controller/index.js.map +0 -1
  50. package/Controller/patch/cookie.d.ts +0 -33
  51. package/Controller/patch/cookie.js +0 -168
  52. package/Controller/patch/cookie.js.map +0 -1
  53. package/Controller/patch/index.d.ts +0 -7
  54. package/Controller/patch/index.js +0 -26
  55. package/Controller/patch/index.js.map +0 -1
  56. package/Controller/patch/render.d.ts +0 -5
  57. package/Controller/patch/render.js +0 -24
  58. package/Controller/patch/render.js.map +0 -1
  59. package/ExitSignal.d.ts +0 -14
  60. package/ExitSignal.js +0 -29
  61. package/ExitSignal.js.map +0 -1
  62. package/Extension.d.ts +0 -56
  63. package/Extension.js +0 -93
  64. package/Extension.js.map +0 -1
  65. package/ExtensionContainer.d.ts +0 -55
  66. package/ExtensionContainer.js +0 -105
  67. package/ExtensionContainer.js.map +0 -1
  68. package/Plugin.d.ts +0 -52
  69. package/Plugin.js +0 -278
  70. package/Plugin.js.map +0 -1
  71. package/Preprocessor.d.ts +0 -86
  72. package/Preprocessor.js +0 -135
  73. package/Preprocessor.js.map +0 -1
  74. package/Router/assets.d.ts +0 -33
  75. package/Router/assets.js +0 -106
  76. package/Router/assets.js.map +0 -1
  77. package/Router/callback.d.ts +0 -9
  78. package/Router/callback.js +0 -152
  79. package/Router/callback.js.map +0 -1
  80. package/Router/extendsInterface.d.ts +0 -8
  81. package/Router/extendsInterface.js +0 -43
  82. package/Router/extendsInterface.js.map +0 -1
  83. package/Router/index.d.ts +0 -184
  84. package/Router/index.js +0 -615
  85. package/Router/index.js.map +0 -1
  86. package/Router/log.d.ts +0 -23
  87. package/Router/log.js +0 -120
  88. package/Router/log.js.map +0 -1
  89. package/Router/order.d.ts +0 -14
  90. package/Router/order.js +0 -71
  91. package/Router/order.js.map +0 -1
  92. package/Router/register.d.ts +0 -9
  93. package/Router/register.js +0 -252
  94. package/Router/register.js.map +0 -1
  95. package/Router/registerManager.d.ts +0 -22
  96. package/Router/registerManager.js +0 -102
  97. package/Router/registerManager.js.map +0 -1
  98. package/Router/scan.d.ts +0 -2
  99. package/Router/scan.js +0 -72
  100. package/Router/scan.js.map +0 -1
  101. package/Router/setHandleItem.d.ts +0 -3
  102. package/Router/setHandleItem.js +0 -94
  103. package/Router/setHandleItem.js.map +0 -1
  104. package/Router/settings.d.ts +0 -12
  105. package/Router/settings.js +0 -74
  106. package/Router/settings.js.map +0 -1
  107. package/Router/start.d.ts +0 -3
  108. package/Router/start.js +0 -270
  109. package/Router/start.js.map +0 -1
  110. package/Router/vars.d.ts +0 -10
  111. package/Router/vars.js +0 -40
  112. package/Router/vars.js.map +0 -1
  113. package/Service.d.ts +0 -12
  114. package/Service.js +0 -20
  115. package/Service.js.map +0 -1
  116. package/cli/command/create.d.ts +0 -7
  117. package/cli/command/create.js.map +0 -1
  118. package/cli/command/index.d.ts +0 -7
  119. package/cli/command/index.js.map +0 -1
  120. package/cli/command/init.d.ts +0 -6
  121. package/cli/command/init.js.map +0 -1
  122. package/cli/command/start.d.ts +0 -6
  123. package/cli/command/start.js.map +0 -1
  124. package/cli/index.d.ts +0 -2
  125. package/cli/index.js.map +0 -1
  126. package/cli/opt/bind.d.ts +0 -3
  127. package/cli/opt/bind.js.map +0 -1
  128. package/cli/opt/index.d.ts +0 -16
  129. package/cli/opt/index.js.map +0 -1
  130. package/cli/opt/listen.d.ts +0 -3
  131. package/cli/opt/listen.js.map +0 -1
  132. package/cli/opt/path.d.ts +0 -3
  133. package/cli/opt/path.js.map +0 -1
  134. package/cli/opt/port.d.ts +0 -3
  135. package/cli/opt/port.js.map +0 -1
  136. package/cli/opt/show-router.d.ts +0 -3
  137. package/cli/opt/show-router.js.map +0 -1
  138. package/index.d.ts +0 -354
  139. package/index.js +0 -155
  140. package/index.js.map +0 -1
  141. package/setOptions.d.ts +0 -12
  142. package/setOptions.js +0 -60
  143. package/setOptions.js.map +0 -1
  144. package/starter.d.ts +0 -2
  145. package/starter.js.map +0 -1
  146. package/symbols.d.ts +0 -13
  147. package/symbols.js +0 -31
  148. package/symbols.js.map +0 -1
  149. package/util/index.d.ts +0 -5
  150. package/util/index.js +0 -92
  151. package/util/index.js.map +0 -1
  152. package/util/stream.d.ts +0 -19
  153. package/util/stream.js +0 -66
  154. 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"}
@@ -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;
@@ -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"}