wooks 0.0.1-beta.0

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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +522 -0
  3. package/dist/src/composables/body.d.ts +17 -0
  4. package/dist/src/composables/body.d.ts.map +1 -0
  5. package/dist/src/composables/cookies.d.ts +13 -0
  6. package/dist/src/composables/cookies.d.ts.map +1 -0
  7. package/dist/src/composables/core-test.d.ts +19 -0
  8. package/dist/src/composables/core-test.d.ts.map +1 -0
  9. package/dist/src/composables/core.d.ts +30 -0
  10. package/dist/src/composables/core.d.ts.map +1 -0
  11. package/dist/src/composables/header-accept.d.ts +9 -0
  12. package/dist/src/composables/header-accept.d.ts.map +1 -0
  13. package/dist/src/composables/header-authorization.d.ts +20 -0
  14. package/dist/src/composables/header-authorization.d.ts.map +1 -0
  15. package/dist/src/composables/header-set-cache-control.d.ts +9 -0
  16. package/dist/src/composables/header-set-cache-control.d.ts.map +1 -0
  17. package/dist/src/composables/headers.d.ts +11 -0
  18. package/dist/src/composables/headers.d.ts.map +1 -0
  19. package/dist/src/composables/index.d.ts +11 -0
  20. package/dist/src/composables/index.d.ts.map +1 -0
  21. package/dist/src/composables/req-res.d.ts +34 -0
  22. package/dist/src/composables/req-res.d.ts.map +1 -0
  23. package/dist/src/composables/search-params.d.ts +13 -0
  24. package/dist/src/composables/search-params.d.ts.map +1 -0
  25. package/dist/src/composables/tests/body.spec.d.ts +2 -0
  26. package/dist/src/composables/tests/body.spec.d.ts.map +1 -0
  27. package/dist/src/composables/tests/cookies.spec.d.ts +2 -0
  28. package/dist/src/composables/tests/cookies.spec.d.ts.map +1 -0
  29. package/dist/src/composables/tests/core.spec.d.ts +2 -0
  30. package/dist/src/composables/tests/core.spec.d.ts.map +1 -0
  31. package/dist/src/composables/tests/headers.spec.d.ts +2 -0
  32. package/dist/src/composables/tests/headers.spec.d.ts.map +1 -0
  33. package/dist/src/composables/tests/req-res.spec.d.ts +2 -0
  34. package/dist/src/composables/tests/req-res.spec.d.ts.map +1 -0
  35. package/dist/src/composables/tests/search-params.spec.d.ts +2 -0
  36. package/dist/src/composables/tests/search-params.spec.d.ts.map +1 -0
  37. package/dist/src/content-types/index.d.ts +97 -0
  38. package/dist/src/content-types/index.d.ts.map +1 -0
  39. package/dist/src/e2e.spec.d.ts +2 -0
  40. package/dist/src/e2e.spec.d.ts.map +1 -0
  41. package/dist/src/errors/error-renderer.d.ts +9 -0
  42. package/dist/src/errors/error-renderer.d.ts.map +1 -0
  43. package/dist/src/errors/errors.spec.d.ts +2 -0
  44. package/dist/src/errors/errors.spec.d.ts.map +1 -0
  45. package/dist/src/errors/index.d.ts +3 -0
  46. package/dist/src/errors/index.d.ts.map +1 -0
  47. package/dist/src/errors/wooks-error.d.ts +20 -0
  48. package/dist/src/errors/wooks-error.d.ts.map +1 -0
  49. package/dist/src/http.d.ts +7 -0
  50. package/dist/src/http.d.ts.map +1 -0
  51. package/dist/src/index.d.ts +8 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/mime/extensions.d.ts +1184 -0
  54. package/dist/src/mime/extensions.d.ts.map +1 -0
  55. package/dist/src/mime/index.d.ts +2 -0
  56. package/dist/src/mime/index.d.ts.map +1 -0
  57. package/dist/src/mime/mime.spec.d.ts +2 -0
  58. package/dist/src/mime/mime.spec.d.ts.map +1 -0
  59. package/dist/src/response/core.d.ts +30 -0
  60. package/dist/src/response/core.d.ts.map +1 -0
  61. package/dist/src/response/factory.d.ts +4 -0
  62. package/dist/src/response/factory.d.ts.map +1 -0
  63. package/dist/src/response/index.d.ts +4 -0
  64. package/dist/src/response/index.d.ts.map +1 -0
  65. package/dist/src/response/renderer.d.ts +8 -0
  66. package/dist/src/response/renderer.d.ts.map +1 -0
  67. package/dist/src/response/response.spec.d.ts +2 -0
  68. package/dist/src/response/response.spec.d.ts.map +1 -0
  69. package/dist/src/serve-file/serve-file.d.ts +20 -0
  70. package/dist/src/serve-file/serve-file.d.ts.map +1 -0
  71. package/dist/src/serve-file/serve-file.spec.d.ts +2 -0
  72. package/dist/src/serve-file/serve-file.spec.d.ts.map +1 -0
  73. package/dist/src/server.d.ts +26 -0
  74. package/dist/src/server.d.ts.map +1 -0
  75. package/dist/src/status-codes/index.d.ts +135 -0
  76. package/dist/src/status-codes/index.d.ts.map +1 -0
  77. package/dist/src/types.d.ts +5 -0
  78. package/dist/src/types.d.ts.map +1 -0
  79. package/dist/src/utils/banner.d.ts +2 -0
  80. package/dist/src/utils/banner.d.ts.map +1 -0
  81. package/dist/src/utils/body-compressor.d.ts +8 -0
  82. package/dist/src/utils/body-compressor.d.ts.map +1 -0
  83. package/dist/src/utils/cache-control.d.ts +14 -0
  84. package/dist/src/utils/cache-control.d.ts.map +1 -0
  85. package/dist/src/utils/panic.d.ts +2 -0
  86. package/dist/src/utils/panic.d.ts.map +1 -0
  87. package/dist/src/utils/set-cookie.d.ts +16 -0
  88. package/dist/src/utils/set-cookie.d.ts.map +1 -0
  89. package/dist/src/utils/tests/body-compressor.spec.d.ts +2 -0
  90. package/dist/src/utils/tests/body-compressor.spec.d.ts.map +1 -0
  91. package/dist/src/utils/tests/set-cookie.spec.d.ts +2 -0
  92. package/dist/src/utils/tests/set-cookie.spec.d.ts.map +1 -0
  93. package/dist/src/utils/tests/time.spec.d.ts +2 -0
  94. package/dist/src/utils/tests/time.spec.d.ts.map +1 -0
  95. package/dist/src/utils/tests/url-search-params.spec.d.ts +2 -0
  96. package/dist/src/utils/tests/url-search-params.spec.d.ts.map +1 -0
  97. package/dist/src/utils/time.d.ts +5 -0
  98. package/dist/src/utils/time.d.ts.map +1 -0
  99. package/dist/src/utils/url-search-params.d.ts +6 -0
  100. package/dist/src/utils/url-search-params.d.ts.map +1 -0
  101. package/dist/wooks.cjs.prod.js +2679 -0
  102. package/dist/wooks.d.ts +550 -0
  103. package/dist/wooks.esm-bundler.js +2644 -0
  104. package/index.js +2 -0
  105. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/mime/extensions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8pCtB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function getMimeType(path: string, fallback?: string | null): string | null;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mime/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,GAAG,IAAI,CAGvF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mime.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime.spec.d.ts","sourceRoot":"","sources":["../../../src/mime/mime.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { BaseWooksResponseRenderer } from './renderer';
2
+ import { EHttpStatusCode } from '../status-codes';
3
+ import { TCookieAttributes } from '../utils/set-cookie';
4
+ import { TCacheControl } from '../utils/cache-control';
5
+ export declare class BaseWooksResponse<BodyType = unknown> {
6
+ protected renderer: BaseWooksResponseRenderer;
7
+ constructor(renderer?: BaseWooksResponseRenderer);
8
+ protected _status: EHttpStatusCode;
9
+ protected _body?: BodyType;
10
+ protected _headers: Record<string, string | string[]>;
11
+ get status(): EHttpStatusCode;
12
+ set status(value: EHttpStatusCode);
13
+ get body(): BodyType | undefined;
14
+ set body(value: BodyType | undefined);
15
+ setStatus(value: EHttpStatusCode): this;
16
+ setBody(value: BodyType): this;
17
+ getContentType(): string | string[];
18
+ setContentType(value: string): this;
19
+ enableCors(origin?: string): this;
20
+ setCookie(name: string, value: string, attrs?: Partial<TCookieAttributes>): this;
21
+ setCacheControl(data: TCacheControl): void;
22
+ setCookieRaw(rawValue: string): this;
23
+ header(name: string, value: string): this;
24
+ setHeader(name: string, value: string): this;
25
+ getHeader(name: string): string | string[];
26
+ protected mergeHeaders(): this;
27
+ protected mergeStatus(renderedBody: string): this;
28
+ respond(): void;
29
+ }
30
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/response/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAErE,OAAO,EAAsB,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAY1E,qBAAa,iBAAiB,CAAC,QAAQ,GAAG,OAAO;IACjC,SAAS,CAAC,QAAQ,EAAE,yBAAyB;gBAAnC,QAAQ,GAAE,yBAAwC;IAExE,SAAS,CAAC,OAAO,EAAE,eAAe,CAAI;IAEtC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAE1B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAK;IAE1D,IAAI,MAAM,IAIQ,eAAe,CAFhC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,eAAe,EAEhC;IAED,IAAI,IAAI,IAIQ,QAAQ,GAAG,SAAS,CAFnC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAEnC;IAED,SAAS,CAAC,KAAK,EAAE,eAAe;IAKhC,OAAO,CAAC,KAAK,EAAE,QAAQ;IAKvB,cAAc;IAId,cAAc,CAAC,KAAK,EAAE,MAAM;IAK5B,UAAU,CAAC,MAAM,GAAE,MAAY;IAK/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAMzE,eAAe,CAAC,IAAI,EAAE,aAAa;IAInC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAM7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKlC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIrC,SAAS,CAAC,IAAI,EAAE,MAAM;IAItB,SAAS,CAAC,YAAY;IAmBtB,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM;IAS1C,OAAO;CAuCV"}
@@ -0,0 +1,4 @@
1
+ import { TWooksErrorBodyExt } from '../errors/wooks-error';
2
+ import { BaseWooksResponse } from './core';
3
+ export declare function createResponseFrom<T = unknown>(data: T): BaseWooksResponse<T | TWooksErrorBodyExt> | null;
4
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/response/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE1C,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAkBzG"}
@@ -0,0 +1,4 @@
1
+ export * from './core';
2
+ export * from './renderer';
3
+ export * from './factory';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/response/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { BaseWooksResponse } from './core';
2
+ export declare class BaseWooksResponseRenderer<T = unknown> implements TWooksResponseRenderer<T> {
3
+ render(response: BaseWooksResponse<T>): string;
4
+ }
5
+ export interface TWooksResponseRenderer<T = unknown> {
6
+ render: (response: BaseWooksResponse<T>) => string;
7
+ }
8
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/response/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAI1C,qBAAa,yBAAyB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,sBAAsB,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM;CAcjD;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,OAAO;IAC/C,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;CACrD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=response.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.spec.d.ts","sourceRoot":"","sources":["../../../src/response/response.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Stats } from 'fs';
4
+ import { Readable } from 'stream';
5
+ import { TCacheControl } from '../utils/cache-control';
6
+ import { BaseWooksResponse } from '../response';
7
+ interface TServeFileOptions {
8
+ headers?: Record<string, string>;
9
+ cacheControl?: TCacheControl;
10
+ expires?: Date | string | number;
11
+ pragmaNoCache?: boolean;
12
+ baseDir?: string;
13
+ defaultExt?: string;
14
+ listDirectory?: boolean;
15
+ index?: string;
16
+ }
17
+ export declare function statFile(path: string): Promise<Stats>;
18
+ export declare function serveFile(filePath: string, options?: TServeFileOptions): Promise<Readable | string | BaseWooksResponse | string[] | unknown>;
19
+ export {};
20
+ //# sourceMappingURL=serve-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-file.d.ts","sourceRoot":"","sources":["../../../src/serve-file/serve-file.ts"],"names":[],"mappings":";;AAEA,OAAO,EAA4C,KAAK,EAAE,MAAM,IAAI,CAAA;AAKpE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,iBAAiB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,kBAEpC;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,iBAAiB,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CA0HtJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serve-file.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-file.spec.d.ts","sourceRoot":"","sources":["../../../src/serve-file/serve-file.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ /// <reference types="node" />
2
+ import { ProstoRouter, THttpMethod, TProstoLookupResult, TProstoParamsType } from '@prostojs/router';
3
+ import { IncomingMessage, Server, ServerResponse } from 'http';
4
+ import { TWooksHandler, TWooksOptions } from './types';
5
+ export declare class Wooks {
6
+ private options?;
7
+ protected router: ProstoRouter<TWooksHandler>;
8
+ protected server?: Server;
9
+ protected _uncoughtExceptionHandler: (error: Error) => void;
10
+ constructor(options?: TWooksOptions | undefined);
11
+ listen(port: number): Promise<void>;
12
+ listen(port: number, cb: () => void): Promise<void>;
13
+ listen(port: number, hostname: string): Promise<void>;
14
+ listen(port: number, hostname: string, cb: () => void): Promise<void>;
15
+ close(): Promise<unknown>;
16
+ protected processRequest(req: IncomingMessage, res: ServerResponse): void;
17
+ protected processHandlers(req: IncomingMessage, res: ServerResponse, found: TProstoLookupResult<TWooksHandler>): Promise<void>;
18
+ printError(expl: string, e: Error): void;
19
+ get<ResType = unknown, ParamsType = TProstoParamsType>(path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
20
+ post<ResType = unknown, ParamsType = TProstoParamsType>(path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
21
+ put<ResType = unknown, ParamsType = TProstoParamsType>(path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
22
+ delete<ResType = unknown, ParamsType = TProstoParamsType>(path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
23
+ patch<ResType = unknown, ParamsType = TProstoParamsType>(path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
24
+ on<ResType = unknown, ParamsType = TProstoParamsType>(method: THttpMethod | '*', path: string, handler: TWooksHandler<ResType>): import("@prostojs/router").TProstoRouterPathBuilder<ParamsType>;
25
+ }
26
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAK9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAItD,qBAAa,KAAK;IAOF,OAAO,CAAC,OAAO,CAAC;IAN5B,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;IAE7C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAEzB,SAAS,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;gBAEvC,OAAO,CAAC,2BAAe;IAOpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAErD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrE,KAAK;IAUZ,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc;cAiClD,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,CAAC,aAAa,CAAC;IA0BpH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK;IAOjC,GAAG,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAKpG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAIrG,GAAG,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAIpG,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAIvG,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAItG,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,MAAM,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;CAGjI"}
@@ -0,0 +1,135 @@
1
+ export declare const httpStatusCodes: {
2
+ 100: string;
3
+ 101: string;
4
+ 102: string;
5
+ 103: string;
6
+ 200: string;
7
+ 201: string;
8
+ 202: string;
9
+ 203: string;
10
+ 204: string;
11
+ 205: string;
12
+ 206: string;
13
+ 207: string;
14
+ 208: string;
15
+ 226: string;
16
+ 300: string;
17
+ 301: string;
18
+ 302: string;
19
+ 303: string;
20
+ 304: string;
21
+ 305: string;
22
+ 306: string;
23
+ 307: string;
24
+ 308: string;
25
+ 400: string;
26
+ 401: string;
27
+ 402: string;
28
+ 403: string;
29
+ 404: string;
30
+ 405: string;
31
+ 406: string;
32
+ 407: string;
33
+ 408: string;
34
+ 409: string;
35
+ 410: string;
36
+ 411: string;
37
+ 412: string;
38
+ 413: string;
39
+ 414: string;
40
+ 415: string;
41
+ 416: string;
42
+ 417: string;
43
+ 418: string;
44
+ 421: string;
45
+ 422: string;
46
+ 423: string;
47
+ 424: string;
48
+ 425: string;
49
+ 426: string;
50
+ 428: string;
51
+ 429: string;
52
+ 431: string;
53
+ 451: string;
54
+ 500: string;
55
+ 501: string;
56
+ 502: string;
57
+ 503: string;
58
+ 504: string;
59
+ 505: string;
60
+ 506: string;
61
+ 507: string;
62
+ 508: string;
63
+ 510: string;
64
+ 511: string;
65
+ };
66
+ export declare enum EHttpStatusCode {
67
+ Continue = 100,
68
+ SwitchingProtocols = 101,
69
+ Processing = 102,
70
+ EarlyHints = 103,
71
+ OK = 200,
72
+ Created = 201,
73
+ Accepted = 202,
74
+ NonAuthoritativeInformation = 203,
75
+ NoContent = 204,
76
+ ResetContent = 205,
77
+ PartialContent = 206,
78
+ MultiStatus = 207,
79
+ AlreadyReported = 208,
80
+ IMUsed = 226,
81
+ MultipleChoices = 300,
82
+ MovedPermanently = 301,
83
+ Found = 302,
84
+ SeeOther = 303,
85
+ NotModified = 304,
86
+ UseProxy = 305,
87
+ SwitchProxy = 306,
88
+ TemporaryRedirect = 307,
89
+ PermanentRedirect = 308,
90
+ BadRequest = 400,
91
+ Unauthorized = 401,
92
+ PaymentRequired = 402,
93
+ Forbidden = 403,
94
+ NotFound = 404,
95
+ MethodNotAllowed = 405,
96
+ NotAcceptable = 406,
97
+ ProxyAuthenticationRequired = 407,
98
+ RequestTimeout = 408,
99
+ Conflict = 409,
100
+ Gone = 410,
101
+ LengthRequired = 411,
102
+ PreconditionFailed = 412,
103
+ PayloadTooLarge = 413,
104
+ URITooLong = 414,
105
+ UnsupportedMediaType = 415,
106
+ RangeNotSatisfiable = 416,
107
+ ExpectationFailed = 417,
108
+ ImATeapot = 418,
109
+ MisdirectedRequest = 421,
110
+ UnprocessableEntity = 422,
111
+ Locked = 423,
112
+ FailedDependency = 424,
113
+ TooEarly = 425,
114
+ UpgradeRequired = 426,
115
+ PreconditionRequired = 428,
116
+ TooManyRequests = 429,
117
+ RequestHeaderFieldsTooLarge = 431,
118
+ UnavailableForLegalReasons = 451,
119
+ InternalServerError = 500,
120
+ NotImplemented = 501,
121
+ BadGateway = 502,
122
+ ServiceUnavailable = 503,
123
+ GatewayTimeout = 504,
124
+ HTTPVersionNotSupported = 505,
125
+ VariantAlsoNegotiates = 506,
126
+ InsufficientStorage = 507,
127
+ LoopDetected = 508,
128
+ NotExtended = 510,
129
+ NetworkAuthenticationRequired = 511
130
+ }
131
+ export declare type THttpSuccessCodes = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;
132
+ export declare type THttpBadRequestCodes = 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451;
133
+ export declare type THttpServerErrorCodes = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;
134
+ export declare type THttpErrorCodes = THttpBadRequestCodes | THttpServerErrorCodes;
135
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/status-codes/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE3B,CAAA;AAED,oBAAY,eAAe;IACvB,QAAQ,MAAM;IACd,kBAAkB,MAAM;IACxB,UAAU,MAAM;IAChB,UAAU,MAAM;IAChB,EAAE,MAAM;IACR,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,2BAA2B,MAAM;IACjC,SAAS,MAAM;IACf,YAAY,MAAM;IAClB,cAAc,MAAM;IACpB,WAAW,MAAM;IACjB,eAAe,MAAM;IACrB,MAAM,MAAM;IACZ,eAAe,MAAM;IACrB,gBAAgB,MAAM;IACtB,KAAK,MAAM;IACX,QAAQ,MAAM;IACd,WAAW,MAAM;IACjB,QAAQ,MAAM;IACd,WAAW,MAAM;IACjB,iBAAiB,MAAM;IACvB,iBAAiB,MAAM;IACvB,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,eAAe,MAAM;IACrB,SAAS,MAAM;IACf,QAAQ,MAAM;IACd,gBAAgB,MAAM;IACtB,aAAa,MAAM;IACnB,2BAA2B,MAAM;IACjC,cAAc,MAAM;IACpB,QAAQ,MAAM;IACd,IAAI,MAAM;IACV,cAAc,MAAM;IACpB,kBAAkB,MAAM;IACxB,eAAe,MAAM;IACrB,UAAU,MAAM;IAChB,oBAAoB,MAAM;IAC1B,mBAAmB,MAAM;IACzB,iBAAiB,MAAM;IACvB,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,mBAAmB,MAAM;IACzB,MAAM,MAAM;IACZ,gBAAgB,MAAM;IACtB,QAAQ,MAAM;IACd,eAAe,MAAM;IACrB,oBAAoB,MAAM;IAC1B,eAAe,MAAM;IACrB,2BAA2B,MAAM;IACjC,0BAA0B,MAAM;IAChC,mBAAmB,MAAM;IACzB,cAAc,MAAM;IACpB,UAAU,MAAM;IAChB,kBAAkB,MAAM;IACxB,cAAc,MAAM;IACpB,uBAAuB,MAAM;IAC7B,qBAAqB,MAAM;IAC3B,mBAAmB,MAAM;IACzB,YAAY,MAAM;IAClB,WAAW,MAAM;IACjB,6BAA6B,MAAM;CACtC;AAED,oBAAY,iBAAiB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEzF,oBAAY,oBAAoB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GACxF,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GACvF,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEzB,oBAAY,qBAAqB,GAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEpG,oBAAY,eAAe,GAAG,oBAAoB,GAAG,qBAAqB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { BaseWooksResponse } from './response';
2
+ export interface TWooksOptions {
3
+ }
4
+ export declare type TWooksHandler<ResType = unknown> = () => Promise<ResType> | ResType | Error | Promise<Error> | BaseWooksResponse<ResType> | Promise<BaseWooksResponse<ResType>>;
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,aAAa;CAE7B;AAED,oBAAY,aAAa,CAAC,OAAO,GAAG,OAAO,IAAI,MACxC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const banner: () => string;
2
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/utils/banner.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,cAA8F,CAAA"}
@@ -0,0 +1,8 @@
1
+ export declare type TBodyCompressor = {
2
+ compress: (data: string) => string | Promise<string>;
3
+ uncompress: (data: string) => string | Promise<string>;
4
+ };
5
+ export declare const compressors: Record<string, TBodyCompressor>;
6
+ export declare function compressBody(encodings: string[], body: string): Promise<string>;
7
+ export declare function uncompressBody(encodings: string[], body: string): Promise<string>;
8
+ //# sourceMappingURL=body-compressor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-compressor.d.ts","sourceRoot":"","sources":["../../../src/utils/body-compressor.ts"],"names":[],"mappings":"AAEA,oBAAY,eAAe,GAAG;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACzD,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAKvD,CAAA;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASrF;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASvF"}
@@ -0,0 +1,14 @@
1
+ import { TProstoTimeMultiString } from './time';
2
+ export declare type TCacheControl = {
3
+ mustRevalidate?: boolean;
4
+ noCache?: boolean | string;
5
+ noStore?: boolean;
6
+ noTransform?: boolean;
7
+ public?: boolean;
8
+ private?: boolean | string;
9
+ proxyRevalidate?: boolean;
10
+ maxAge?: number | TProstoTimeMultiString;
11
+ sMaxage?: number | TProstoTimeMultiString;
12
+ };
13
+ export declare function renderCacheControl(data: TCacheControl): string;
14
+ //# sourceMappingURL=cache-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-control.d.ts","sourceRoot":"","sources":["../../../src/utils/cache-control.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAE5D,oBAAY,aAAa,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAA;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAA;CAC5C,CAAA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,UAerD"}
@@ -0,0 +1,2 @@
1
+ export declare function panic(error: string): Error;
2
+ //# sourceMappingURL=panic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panic.d.ts","sourceRoot":"","sources":["../../../src/utils/panic.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,SAGlC"}
@@ -0,0 +1,16 @@
1
+ import { TProstoTimeMultiString } from './time';
2
+ export declare type TSetCookieData = {
3
+ value: string;
4
+ attrs: Partial<TCookieAttributes>;
5
+ };
6
+ export interface TCookieAttributes {
7
+ expires: Date | string | number;
8
+ maxAge: number | TProstoTimeMultiString;
9
+ domain: string;
10
+ path: string;
11
+ secure: boolean;
12
+ httpOnly: boolean;
13
+ sameSite: boolean | 'Lax' | 'None' | 'Strict';
14
+ }
15
+ export declare function renderCookie(key: string, data: TSetCookieData): string;
16
+ //# sourceMappingURL=set-cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-cookie.d.ts","sourceRoot":"","sources":["../../../src/utils/set-cookie.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAE5D,oBAAY,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAAE,CAAA;AAEjF,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAAA;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;CAChD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,UAY7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=body-compressor.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-compressor.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/body-compressor.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=set-cookie.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-cookie.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/set-cookie.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=time.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/time.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=url-search-params.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-search-params.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/url-search-params.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export declare type TProstoTimeUnit = 'ms' | 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'Y';
2
+ export declare type TProstoTimeSingleString = `${number}${TProstoTimeUnit}`;
3
+ export declare type TProstoTimeMultiString = `${TProstoTimeSingleString}${TProstoTimeSingleString | ''}${TProstoTimeSingleString | ''}${TProstoTimeSingleString | ''}`;
4
+ export declare function convertTime(time: number | TProstoTimeMultiString, unit?: TProstoTimeUnit): number;
5
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAC5E,oBAAY,uBAAuB,GAAG,GAAG,MAAM,GAAG,eAAe,EAAE,CAAA;AACnE,oBAAY,sBAAsB,GAAG,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,EAAE,GAAG,uBAAuB,GAAG,EAAE,GAAG,uBAAuB,GAAG,EAAE,EAAE,CAAA;AAE9J,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,EAAE,IAAI,GAAE,eAAsB,UAS9F"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import { URLSearchParams } from 'url';
3
+ export declare class ProstoURLSearchParams extends URLSearchParams {
4
+ toJson<T = unknown>(): T;
5
+ }
6
+ //# sourceMappingURL=url-search-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-search-params.d.ts","sourceRoot":"","sources":["../../../src/utils/url-search-params.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAA;AAErC,qBAAa,qBAAsB,SAAQ,eAAe;IACtD,MAAM,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC;CAY3B"}