routup 0.6.0 → 0.7.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 (81) hide show
  1. package/dist/config/accessors.d.ts +15 -0
  2. package/dist/config/accessors.d.ts.map +1 -0
  3. package/dist/config/accessors.js +32 -0
  4. package/dist/config/accessors.js.map +1 -0
  5. package/dist/config/index.d.ts +5 -0
  6. package/dist/config/index.d.ts.map +1 -0
  7. package/dist/config/index.js +27 -0
  8. package/dist/config/index.js.map +1 -0
  9. package/dist/config/module.d.ts +20 -0
  10. package/dist/config/module.d.ts.map +1 -0
  11. package/dist/config/module.js +65 -0
  12. package/dist/config/module.js.map +1 -0
  13. package/dist/config/singleton.d.ts +4 -0
  14. package/dist/config/singleton.d.ts.map +1 -0
  15. package/dist/config/singleton.js +35 -0
  16. package/dist/config/singleton.js.map +1 -0
  17. package/dist/config/type.d.ts +66 -0
  18. package/dist/config/type.d.ts.map +1 -0
  19. package/dist/config/type.js +9 -0
  20. package/dist/config/type.js.map +1 -0
  21. package/dist/config/utils/defaults.d.ts +3 -0
  22. package/dist/config/utils/defaults.d.ts.map +1 -0
  23. package/dist/config/utils/defaults.js +23 -0
  24. package/dist/config/utils/defaults.js.map +1 -0
  25. package/dist/config/utils/etag.d.ts +3 -0
  26. package/dist/config/utils/etag.d.ts.map +1 -0
  27. package/dist/config/utils/etag.js +43 -0
  28. package/dist/config/utils/etag.js.map +1 -0
  29. package/dist/config/utils/index.d.ts +4 -0
  30. package/dist/config/utils/index.d.ts.map +1 -0
  31. package/dist/config/utils/index.js +26 -0
  32. package/dist/config/utils/index.js.map +1 -0
  33. package/dist/config/utils/trust-proxy.d.ts +3 -0
  34. package/dist/config/utils/trust-proxy.d.ts.map +1 -0
  35. package/dist/config/utils/trust-proxy.js +31 -0
  36. package/dist/config/utils/trust-proxy.js.map +1 -0
  37. package/dist/constants.d.ts +5 -1
  38. package/dist/constants.d.ts.map +1 -1
  39. package/dist/constants.js +4 -0
  40. package/dist/constants.js.map +1 -1
  41. package/dist/helpers/request/hostname.d.ts +8 -0
  42. package/dist/helpers/request/hostname.d.ts.map +1 -0
  43. package/dist/helpers/request/hostname.js +46 -0
  44. package/dist/helpers/request/hostname.js.map +1 -0
  45. package/dist/helpers/request/index.d.ts +3 -0
  46. package/dist/helpers/request/index.d.ts.map +1 -1
  47. package/dist/helpers/request/index.js +3 -0
  48. package/dist/helpers/request/index.js.map +1 -1
  49. package/dist/helpers/request/ip.d.ts +8 -0
  50. package/dist/helpers/request/ip.d.ts.map +1 -0
  51. package/dist/helpers/request/ip.js +29 -0
  52. package/dist/helpers/request/ip.js.map +1 -0
  53. package/dist/helpers/request/protocol.d.ts +9 -0
  54. package/dist/helpers/request/protocol.d.ts.map +1 -0
  55. package/dist/helpers/request/protocol.js +50 -0
  56. package/dist/helpers/request/protocol.js.map +1 -0
  57. package/dist/helpers/response/send.js +11 -14
  58. package/dist/helpers/response/send.js.map +1 -1
  59. package/dist/layer/module.d.ts.map +1 -1
  60. package/dist/layer/module.js +17 -2
  61. package/dist/layer/module.js.map +1 -1
  62. package/dist/route/module.d.ts.map +1 -1
  63. package/dist/route/module.js +3 -1
  64. package/dist/route/module.js.map +1 -1
  65. package/dist/router/module.d.ts.map +1 -1
  66. package/dist/router/module.js +14 -8
  67. package/dist/router/module.js.map +1 -1
  68. package/dist/type.d.ts +1 -0
  69. package/dist/type.d.ts.map +1 -1
  70. package/dist/utils/index.d.ts +1 -1
  71. package/dist/utils/index.d.ts.map +1 -1
  72. package/dist/utils/index.js +1 -1
  73. package/dist/utils/index.js.map +1 -1
  74. package/dist/utils/request.d.ts +3 -0
  75. package/dist/utils/request.d.ts.map +1 -0
  76. package/dist/utils/{response.js → request.js} +7 -6
  77. package/dist/utils/request.js.map +1 -0
  78. package/package.json +6 -4
  79. package/dist/utils/response.d.ts +0 -3
  80. package/dist/utils/response.d.ts.map +0 -1
  81. package/dist/utils/response.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ import { ConfigOptions, ConfigOptionsInput } from './type';
2
+ /**
3
+ * Fast set config option accessor.
4
+ *
5
+ * @param key
6
+ * @param value
7
+ */
8
+ export declare function setConfigOption<K extends keyof ConfigOptionsInput>(key: K, value: ConfigOptionsInput[K]): void;
9
+ /**
10
+ * Fast get config option accessor.
11
+ *
12
+ * @param key
13
+ */
14
+ export declare function getConfigOption<K extends keyof ConfigOptions>(key: K): ConfigOptions[K];
15
+ //# sourceMappingURL=accessors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../../src/config/accessors.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,QAIvG;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAI,aAAa,CAAC,CAAC,CAAC,CAIxF"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getConfigOption = exports.setConfigOption = void 0;
10
+ const singleton_1 = require("./singleton");
11
+ /**
12
+ * Fast set config option accessor.
13
+ *
14
+ * @param key
15
+ * @param value
16
+ */
17
+ function setConfigOption(key, value) {
18
+ const config = (0, singleton_1.useConfig)();
19
+ config.set(key, value);
20
+ }
21
+ exports.setConfigOption = setConfigOption;
22
+ /**
23
+ * Fast get config option accessor.
24
+ *
25
+ * @param key
26
+ */
27
+ function getConfigOption(key) {
28
+ const config = (0, singleton_1.useConfig)();
29
+ return config.get(key);
30
+ }
31
+ exports.getConfigOption = getConfigOption;
32
+ //# sourceMappingURL=accessors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessors.js","sourceRoot":"","sources":["../../src/config/accessors.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2CAAwC;AAGxC;;;;;GAKG;AACH,SAAgB,eAAe,CAAqC,GAAM,EAAE,KAA4B;IACpG,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAJD,0CAIC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAgC,GAAM;IACjE,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAJD,0CAIC"}
@@ -0,0 +1,5 @@
1
+ export * from './accessors';
2
+ export * from './module';
3
+ export * from './singleton';
4
+ export * from './type';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAOA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./accessors"), exports);
24
+ __exportStar(require("./module"), exports);
25
+ __exportStar(require("./singleton"), exports);
26
+ __exportStar(require("./type"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,yCAAuB"}
@@ -0,0 +1,20 @@
1
+ import { ObjectLiteral } from '../type';
2
+ import { ConfigContext, ConfigOptionsTransformer } from './type';
3
+ export declare class Config<O extends ObjectLiteral, I extends {
4
+ [T in keyof O]?: any;
5
+ } = O> {
6
+ protected options: Partial<O>;
7
+ protected defaults: O;
8
+ protected transformer: ConfigOptionsTransformer<O>;
9
+ constructor(context: ConfigContext<O>);
10
+ set<K extends keyof O>(key: K, value: I[K]): this;
11
+ has(key: keyof O): boolean;
12
+ reset(): this;
13
+ reset(key: keyof O): this;
14
+ reset(keys: (keyof O)[]): this;
15
+ get<K extends keyof O>(key: K): O[K];
16
+ getRaw<K extends keyof O>(key: K): O[K] | undefined;
17
+ setDefault<K extends keyof O>(key: K, value: I[K]): this;
18
+ getDefault<K extends keyof O>(key: K): O[K];
19
+ }
20
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/config/module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAEjE,qBAAa,MAAM,CACf,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG;CAAE,GAAG,CAAC;IAEtC,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEtB,SAAS,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAIvC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAQrC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI;IAMlD,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAI,OAAO;IAM3B,KAAK,IAAK,IAAI;IAEd,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAI,IAAI;IAE1B,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAI,IAAI;IAyB/B,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC;IAQrC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;IAUpD,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI;IAMzD,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC;CAG/C"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022-2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Config = void 0;
10
+ const smob_1 = require("smob");
11
+ class Config {
12
+ // -------------------------------------------------
13
+ constructor(context) {
14
+ this.options = context.options || {};
15
+ this.defaults = context.defaults;
16
+ this.transformer = context.transform;
17
+ }
18
+ // -------------------------------------------------
19
+ set(key, value) {
20
+ this.options[key] = this.transformer(key, value);
21
+ return this;
22
+ }
23
+ has(key) {
24
+ return (0, smob_1.hasOwnProperty)(this.options, key);
25
+ }
26
+ reset(key) {
27
+ if (typeof key === 'undefined') {
28
+ this.options = {};
29
+ return this;
30
+ }
31
+ if (Array.isArray(key)) {
32
+ for (let i = 0; i < key.length; i++) {
33
+ this.reset(key[i]);
34
+ }
35
+ return this;
36
+ }
37
+ if ((0, smob_1.hasOwnProperty)(this.options, key)) {
38
+ delete this.options[key];
39
+ }
40
+ return this;
41
+ }
42
+ // ----------------------------------------------
43
+ get(key) {
44
+ if ((0, smob_1.hasOwnProperty)(this.options, key)) {
45
+ return this.options[key];
46
+ }
47
+ return this.defaults[key];
48
+ }
49
+ getRaw(key) {
50
+ if ((0, smob_1.hasOwnProperty)(this.options, key)) {
51
+ return this.options[key];
52
+ }
53
+ return undefined;
54
+ }
55
+ // -------------------------------------------------
56
+ setDefault(key, value) {
57
+ this.defaults[key] = this.transformer(key, value);
58
+ return this;
59
+ }
60
+ getDefault(key) {
61
+ return this.defaults[key];
62
+ }
63
+ }
64
+ exports.Config = Config;
65
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/config/module.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+BAAsC;AAItC,MAAa,MAAM;IAUf,oDAAoD;IAEpD,YAAY,OAAyB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,oDAAoD;IAEpD,GAAG,CAAoB,GAAM,EAAE,KAAW;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAY;QACZ,OAAO,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAUD,KAAK,CAAC,GAA6B;QAC/B,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;YAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACtB;YAED,OAAO,IAAI,CAAC;SACf;QAED,IAAI,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iDAAiD;IAEjD,GAAG,CAAoB,GAAM;QACzB,IAAI,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAS,CAAC;SACpC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAoB,GAAM;QAC5B,IAAI,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAS,CAAC;SACpC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oDAAoD;IAEpD,UAAU,CAAoB,GAAM,EAAE,KAAW;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAS,CAAC;QAE1D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAoB,GAAM;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACJ;AAxFD,wBAwFC"}
@@ -0,0 +1,4 @@
1
+ import { Config } from './module';
2
+ import { ConfigOptions, ConfigOptionsInput } from './type';
3
+ export declare function useConfig(): Config<ConfigOptions, ConfigOptionsInput>;
4
+ //# sourceMappingURL=singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/config/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAK3D,wBAAgB,SAAS,IAAK,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAsBtE"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2021.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.useConfig = void 0;
10
+ const module_1 = require("./module");
11
+ const utils_1 = require("./utils");
12
+ let instance;
13
+ function useConfig() {
14
+ if (typeof instance !== 'undefined') {
15
+ return instance;
16
+ }
17
+ instance = new module_1.Config({
18
+ defaults: (0, utils_1.buildConfigDefaultOptions)(),
19
+ transform: (key, value) => {
20
+ switch (key) {
21
+ /* istanbul ignore next */
22
+ case 'etag':
23
+ return (0, utils_1.buildConfigEtagOption)(value);
24
+ /* istanbul ignore next */
25
+ case 'trustProxy':
26
+ return (0, utils_1.buildConfigTrustProxyOption)(value);
27
+ default:
28
+ return value;
29
+ }
30
+ },
31
+ });
32
+ return instance;
33
+ }
34
+ exports.useConfig = useConfig;
35
+ //# sourceMappingURL=singleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/config/singleton.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qCAAkC;AAElC,mCAAwG;AAExG,IAAI,QAAgE,CAAC;AAErE,SAAgB,SAAS;IACrB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACjC,OAAO,QAAQ,CAAC;KACnB;IAED,QAAQ,GAAG,IAAI,eAAM,CAAoC;QACrD,QAAQ,EAAE,IAAA,iCAAyB,GAAE;QACrC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACtB,QAAQ,GAAG,EAAE;gBACT,0BAA0B;gBAC1B,KAAK,MAAM;oBACP,OAAO,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC;gBACxC,0BAA0B;gBAC1B,KAAK,YAAY;oBACb,OAAO,IAAA,mCAA2B,EAAC,KAAK,CAAC,CAAC;gBAC9C;oBACI,OAAO,KAAK,CAAC;aACpB;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC;AAtBD,8BAsBC"}
@@ -0,0 +1,66 @@
1
+ /// <reference types="node" />
2
+ import { Options as EtagBaseOptions } from 'etag';
3
+ import { ObjectLiteral } from '../type';
4
+ export type EtagOptions = EtagBaseOptions & {
5
+ /**
6
+ * Threshold of bytes from which an etag is generated.
7
+ *
8
+ * default: undefined
9
+ */
10
+ threshold?: number;
11
+ };
12
+ export type EtagFn = (body: any, encoding?: BufferEncoding, size?: number) => string | undefined;
13
+ export type EtagInput = boolean | EtagOptions | EtagFn;
14
+ export type TrustProxyFn = (address: string, hop: number) => boolean;
15
+ export type TrustProxyInput = boolean | number | string | string[] | TrustProxyFn;
16
+ export type ConfigOptions = {
17
+ /**
18
+ * default: process.NODE_ENV
19
+ */
20
+ env: string;
21
+ /**
22
+ * default: () => false
23
+ */
24
+ trustProxy: TrustProxyFn;
25
+ /**
26
+ * default: 2
27
+ */
28
+ subdomainOffset: number;
29
+ /**
30
+ * default: () => true
31
+ */
32
+ etag: EtagFn;
33
+ /**
34
+ * Default: X-Forwarded-For
35
+ */
36
+ proxyIpHeader: string;
37
+ /**
38
+ * default: 0
39
+ */
40
+ proxyIpMax?: number;
41
+ /**
42
+ * default: true
43
+ */
44
+ caseSensitive: boolean;
45
+ /**
46
+ * default: request-id
47
+ */
48
+ requestIdHeader: string;
49
+ };
50
+ export type ConfigOptionsInput = {
51
+ /**
52
+ * default: true
53
+ */
54
+ etag?: EtagInput;
55
+ /**
56
+ * default: false
57
+ */
58
+ trustProxy?: TrustProxyInput;
59
+ } & Partial<Omit<ConfigOptions, 'etag' | 'trustProxy'>>;
60
+ export type ConfigOptionsTransformer<T extends ObjectLiteral, K extends keyof T = keyof T> = (key: K, value: any) => T[K];
61
+ export type ConfigContext<T extends ObjectLiteral> = {
62
+ defaults: T;
63
+ options?: Partial<T>;
64
+ transform: ConfigOptionsTransformer<T>;
65
+ };
66
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/config/type.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AACjG,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC;AAElF,MAAM,MAAM,aAAa,GAAG;IACxB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,UAAU,EAAE,YAAY,CAAC;IACzB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAExD,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,aAAa,EACxD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACvB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IACjD,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAA;CACzC,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022-2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/config/type.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,3 @@
1
+ import { ConfigOptions } from '../type';
2
+ export declare function buildConfigDefaultOptions(): ConfigOptions;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/config/utils/defaults.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,wBAAgB,yBAAyB,IAAK,aAAa,CAU1D"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022-2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.buildConfigDefaultOptions = void 0;
10
+ const etag_1 = require("./etag");
11
+ function buildConfigDefaultOptions() {
12
+ return {
13
+ env: process.env.NODE_ENV || 'development',
14
+ trustProxy: () => false,
15
+ subdomainOffset: 2,
16
+ etag: (0, etag_1.buildConfigEtagOption)(),
17
+ proxyIpHeader: 'X-Forwarded-For',
18
+ caseSensitive: true,
19
+ requestIdHeader: 'request-id',
20
+ };
21
+ }
22
+ exports.buildConfigDefaultOptions = buildConfigDefaultOptions;
23
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/config/utils/defaults.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,iCAA+C;AAE/C,SAAgB,yBAAyB;IACrC,OAAO;QACH,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;QAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;QACvB,eAAe,EAAE,CAAC;QAClB,IAAI,EAAE,IAAA,4BAAqB,GAAE;QAC7B,aAAa,EAAE,iBAAiB;QAChC,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,YAAY;KAChC,CAAC;AACN,CAAC;AAVD,8DAUC"}
@@ -0,0 +1,3 @@
1
+ import { EtagFn, EtagOptions } from '../type';
2
+ export declare function buildConfigEtagOption(input?: boolean | EtagOptions | EtagFn): EtagFn;
3
+ //# sourceMappingURL=etag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etag.d.ts","sourceRoot":"","sources":["../../../src/config/utils/etag.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAAI,MAAM,CAkCrF"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildConfigEtagOption = void 0;
13
+ const etag_1 = __importDefault(require("etag"));
14
+ const smob_1 = require("smob");
15
+ function buildConfigEtagOption(input) {
16
+ if (typeof input === 'function') {
17
+ return input;
18
+ }
19
+ input = input !== null && input !== void 0 ? input : true;
20
+ if (input === false) {
21
+ return () => undefined;
22
+ }
23
+ let options = {
24
+ weak: true,
25
+ };
26
+ if ((0, smob_1.isObject)(input)) {
27
+ options = (0, smob_1.merge)(input, options);
28
+ }
29
+ return (body, encoding, size) => {
30
+ const buff = Buffer.isBuffer(body) ?
31
+ body :
32
+ Buffer.from(body, encoding);
33
+ if (typeof options.threshold !== 'undefined') {
34
+ size = size !== null && size !== void 0 ? size : Buffer.byteLength(buff);
35
+ if (size <= options.threshold) {
36
+ return undefined;
37
+ }
38
+ }
39
+ return (0, etag_1.default)(buff, options);
40
+ };
41
+ }
42
+ exports.buildConfigEtagOption = buildConfigEtagOption;
43
+ //# sourceMappingURL=etag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etag.js","sourceRoot":"","sources":["../../../src/config/utils/etag.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,gDAAwB;AACxB,+BAAuC;AAGvC,SAAgB,qBAAqB,CAAC,KAAsC;IACxE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC7B,OAAO,KAAK,CAAC;KAChB;IAED,KAAK,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;IAEtB,IAAI,KAAK,KAAK,KAAK,EAAE;QACjB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;KAC1B;IAED,IAAI,OAAO,GAAiB;QACxB,IAAI,EAAE,IAAI;KACb,CAAC;IAEF,IAAI,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE;QACjB,OAAO,GAAG,IAAA,YAAK,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACnC;IAED,OAAO,CAAC,IAAS,EAAE,QAAyB,EAAE,IAAa,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEhC,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,WAAW,EAAE;YAC1C,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEvC,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE;gBAC3B,OAAO,SAAS,CAAC;aACpB;SACJ;QAED,OAAO,IAAA,cAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC;AAlCD,sDAkCC"}
@@ -0,0 +1,4 @@
1
+ export * from './defaults';
2
+ export * from './etag';
3
+ export * from './trust-proxy';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/utils/index.ts"],"names":[],"mappings":"AAOA,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./defaults"), exports);
24
+ __exportStar(require("./etag"), exports);
25
+ __exportStar(require("./trust-proxy"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,yCAAuB;AACvB,gDAA8B"}
@@ -0,0 +1,3 @@
1
+ import { TrustProxyFn } from '../type';
2
+ export declare function buildConfigTrustProxyOption(input?: boolean | number | string | string[] | TrustProxyFn): TrustProxyFn;
3
+ //# sourceMappingURL=trust-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-proxy.d.ts","sourceRoot":"","sources":["../../../src/config/utils/trust-proxy.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,2BAA2B,CACvC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,GAC3D,YAAY,CAmBf"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildConfigTrustProxyOption = void 0;
13
+ const proxy_addr_1 = __importDefault(require("proxy-addr"));
14
+ function buildConfigTrustProxyOption(input) {
15
+ if (typeof input === 'function') {
16
+ return input;
17
+ }
18
+ if (input === true) {
19
+ return () => true;
20
+ }
21
+ if (typeof input === 'number') {
22
+ return (address, hop) => hop < input;
23
+ }
24
+ if (typeof input === 'string') {
25
+ input = input.split(',')
26
+ .map((value) => value.trim());
27
+ }
28
+ return proxy_addr_1.default.compile(input || []);
29
+ }
30
+ exports.buildConfigTrustProxyOption = buildConfigTrustProxyOption;
31
+ //# sourceMappingURL=trust-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-proxy.js","sourceRoot":"","sources":["../../../src/config/utils/trust-proxy.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,4DAAmC;AAGnC,SAAgB,2BAA2B,CACvC,KAA2D;IAE3D,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC7B,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,KAAK,KAAK,IAAI,EAAE;QAChB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;KACrB;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAI,KAAgB,CAAC;KACpD;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;aACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACrC;IAED,OAAO,oBAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AArBD,kEAqBC"}
@@ -19,8 +19,12 @@ export declare enum HeaderName {
19
19
  CONTENT_LENGTH = "content-length",
20
20
  CONTENT_TYPE = "content-type",
21
21
  COOKIE = "cookie",
22
+ HOST = "host",
22
23
  LAST_MODIFIED = "last-modified",
23
24
  LOCATION = "location",
24
- SET_COOKIE = "set-cookie"
25
+ SET_COOKIE = "set-cookie",
26
+ X_FORWARDED_HOST = "x-forwarded-host",
27
+ X_FORWARDED_FOR = "x-forwarded-for",
28
+ X_FORWARDED_PROTO = "x-forwarded-proto"
25
29
  }
26
30
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,MAAM;IACd,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB;AAED,oBAAY,UAAU;IAClB,MAAM,WAAW;IACjB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,KAAK,UAAU;IACf,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC5B"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,MAAM;IACd,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB;AAED,oBAAY,UAAU;IAClB,MAAM,WAAW;IACjB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,KAAK,UAAU;IACf,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;CAC1C"}
package/dist/constants.js CHANGED
@@ -30,8 +30,12 @@ var HeaderName;
30
30
  HeaderName["CONTENT_LENGTH"] = "content-length";
31
31
  HeaderName["CONTENT_TYPE"] = "content-type";
32
32
  HeaderName["COOKIE"] = "cookie";
33
+ HeaderName["HOST"] = "host";
33
34
  HeaderName["LAST_MODIFIED"] = "last-modified";
34
35
  HeaderName["LOCATION"] = "location";
35
36
  HeaderName["SET_COOKIE"] = "set-cookie";
37
+ HeaderName["X_FORWARDED_HOST"] = "x-forwarded-host";
38
+ HeaderName["X_FORWARDED_FOR"] = "x-forwarded-for";
39
+ HeaderName["X_FORWARDED_PROTO"] = "x-forwarded-proto";
36
40
  })(HeaderName = exports.HeaderName || (exports.HeaderName = {}));
37
41
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,IAAY,MAQX;AARD,WAAY,MAAM;IACd,qBAAW,CAAA;IACX,uBAAa,CAAA;IACb,qBAAW,CAAA;IACX,yBAAe,CAAA;IACf,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;IACnB,uBAAa,CAAA;AACjB,CAAC,EARW,MAAM,GAAN,cAAM,KAAN,cAAM,QAQjB;AAED,IAAY,UAeX;AAfD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+CAAiC,CAAA;IACjC,iDAAmC,CAAA;IACnC,iDAAmC,CAAA;IACnC,6BAAe,CAAA;IACf,6CAA+B,CAAA;IAC/B,yDAA2C,CAAA;IAC3C,mDAAqC,CAAA;IACrC,+CAAiC,CAAA;IACjC,2CAA6B,CAAA;IAC7B,+BAAiB,CAAA;IACjB,6CAA+B,CAAA;IAC/B,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC7B,CAAC,EAfW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAerB"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,IAAY,MAQX;AARD,WAAY,MAAM;IACd,qBAAW,CAAA;IACX,uBAAa,CAAA;IACb,qBAAW,CAAA;IACX,yBAAe,CAAA;IACf,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;IACnB,uBAAa,CAAA;AACjB,CAAC,EARW,MAAM,GAAN,cAAM,KAAN,cAAM,QAQjB;AAED,IAAY,UAmBX;AAnBD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+CAAiC,CAAA;IACjC,iDAAmC,CAAA;IACnC,iDAAmC,CAAA;IACnC,6BAAe,CAAA;IACf,6CAA+B,CAAA;IAC/B,yDAA2C,CAAA;IAC3C,mDAAqC,CAAA;IACrC,+CAAiC,CAAA;IACjC,2CAA6B,CAAA;IAC7B,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,6CAA+B,CAAA;IAC/B,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;IACzB,mDAAqC,CAAA;IACrC,iDAAmC,CAAA;IACnC,qDAAuC,CAAA;AAC3C,CAAC,EAnBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAmBrB"}
@@ -0,0 +1,8 @@
1
+ import { TrustProxyInput } from '../../config';
2
+ import { Request } from '../../type';
3
+ type RequestHostNameOptions = {
4
+ trustProxy?: TrustProxyInput;
5
+ };
6
+ export declare function getRequestHostName(req: Request, options?: RequestHostNameOptions): string | undefined;
7
+ export {};
8
+ //# sourceMappingURL=hostname.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname.d.ts","sourceRoot":"","sources":["../../../src/helpers/request/hostname.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,eAAe,EAAa,MAAM,cAAc,CAAC;AAGxE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,KAAK,sBAAsB,GAAG;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAA;CAC/B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAI,MAAM,GAAG,SAAS,CAkCtG"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022.
4
+ * Author Peter Placzek (tada5hi)
5
+ * For the full copyright and license information,
6
+ * view the LICENSE file that was distributed with this source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getRequestHostName = void 0;
10
+ const config_1 = require("../../config");
11
+ const utils_1 = require("../../config/utils");
12
+ const constants_1 = require("../../constants");
13
+ function getRequestHostName(req, options) {
14
+ options = options || {};
15
+ let trustProxy;
16
+ if (typeof options.trustProxy !== 'undefined') {
17
+ trustProxy = (0, utils_1.buildConfigTrustProxyOption)(options.trustProxy);
18
+ }
19
+ else {
20
+ const config = (0, config_1.useConfig)();
21
+ trustProxy = config.get('trustProxy');
22
+ }
23
+ let hostname = req.headers[constants_1.HeaderName.X_FORWARDED_HOST];
24
+ if (!hostname || !req.socket.remoteAddress || !trustProxy(req.socket.remoteAddress, 0)) {
25
+ hostname = req.headers[constants_1.HeaderName.HOST];
26
+ }
27
+ else {
28
+ hostname = Array.isArray(hostname) ? hostname.pop() : hostname;
29
+ if (hostname && hostname.indexOf(',') !== -1) {
30
+ hostname = hostname.substring(0, hostname.indexOf(',')).trimEnd();
31
+ }
32
+ }
33
+ if (!hostname) {
34
+ return undefined;
35
+ }
36
+ // IPv6 literal support
37
+ const offset = hostname[0] === '[' ?
38
+ hostname.indexOf(']') + 1 :
39
+ 0;
40
+ const index = hostname.indexOf(':', offset);
41
+ return index !== -1 ?
42
+ hostname.substring(0, index) :
43
+ hostname;
44
+ }
45
+ exports.getRequestHostName = getRequestHostName;
46
+ //# sourceMappingURL=hostname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname.js","sourceRoot":"","sources":["../../../src/helpers/request/hostname.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,yCAAwE;AACxE,8CAAiE;AACjE,+CAA6C;AAO7C,SAAgB,kBAAkB,CAAC,GAAY,EAAE,OAAgC;IAC7E,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAExB,IAAI,UAAyB,CAAC;IAC9B,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE;QAC3C,UAAU,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAChE;SAAM;QACH,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACzC;IAED,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAU,CAAC,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;QACpF,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAU,CAAC,IAAI,CAAC,CAAC;KAC3C;SAAM;QACH,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1C,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACrE;KACJ;IAED,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO,SAAS,CAAC;KACpB;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;IACN,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9B,QAAQ,CAAC;AACjB,CAAC;AAlCD,gDAkCC"}
@@ -6,8 +6,11 @@ export * from './header-accept-charset';
6
6
  export * from './header-accept-encoding';
7
7
  export * from './header-accept-language';
8
8
  export * from './header-content-type';
9
+ export * from './hostname';
10
+ export * from './ip';
9
11
  export * from './mount-path';
10
12
  export * from './negotiator';
11
13
  export * from './params';
14
+ export * from './protocol';
12
15
  export * from './path';
13
16
  //# sourceMappingURL=index.d.ts.map