xray-typed 1.0.1 → 1.0.3

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.
@@ -8,19 +8,13 @@ import { SocksInboundConfig } from '../proxies/socks';
8
8
  import { HTTPInboundConfig } from '../proxies/http';
9
9
  import { DokodemoInboundConfig } from '../proxies/dokodemo';
10
10
  /**
11
- * Inbound connection configuration.
12
- *
13
- * @see https://xtls.github.io/en/config/inbound.html
11
+ * Common inbound fields shared by all protocol variants.
14
12
  */
15
- export interface InboundConfig {
16
- /** Inbound protocol name. */
17
- protocol?: InboundProtocol;
13
+ interface InboundConfigBase {
18
14
  /** Listening port. Can be a number, string range "1-65535", or comma-separated. */
19
15
  port?: number | string;
20
16
  /** Listening address (default: "0.0.0.0"). */
21
17
  listen?: string;
22
- /** Protocol-specific settings. Type depends on protocol value. */
23
- settings?: InboundSettings;
24
18
  /** Unique tag for routing reference. */
25
19
  tag?: string;
26
20
  /** Transport layer settings. */
@@ -28,9 +22,67 @@ export interface InboundConfig {
28
22
  /** Traffic sniffing configuration. */
29
23
  sniffing?: SniffingConfig;
30
24
  }
25
+ /**
26
+ * Discriminated union of all inbound configurations.
27
+ * TypeScript will automatically narrow `settings` based on `protocol`.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * if (inbound.protocol === 'shadowsocks') {
32
+ * inbound.settings?.method; // OK — ShadowsocksInboundConfig
33
+ * }
34
+ * ```
35
+ *
36
+ * @see https://xtls.github.io/en/config/inbound.html
37
+ */
38
+ export type InboundConfig = InboundVLess | InboundVMess | InboundTrojan | InboundShadowsocks | InboundSocks | InboundHTTP | InboundDokodemo | InboundTunnel | InboundMixed | InboundGeneric;
39
+ export interface InboundVLess extends InboundConfigBase {
40
+ protocol: 'vless';
41
+ settings?: VLessInboundConfig;
42
+ }
43
+ export interface InboundVMess extends InboundConfigBase {
44
+ protocol: 'vmess';
45
+ settings?: VMessInboundConfig;
46
+ }
47
+ export interface InboundTrojan extends InboundConfigBase {
48
+ protocol: 'trojan';
49
+ settings?: TrojanInboundConfig;
50
+ }
51
+ export interface InboundShadowsocks extends InboundConfigBase {
52
+ protocol: 'shadowsocks';
53
+ settings?: ShadowsocksInboundConfig;
54
+ }
55
+ export interface InboundSocks extends InboundConfigBase {
56
+ protocol: 'socks';
57
+ settings?: SocksInboundConfig;
58
+ }
59
+ export interface InboundHTTP extends InboundConfigBase {
60
+ protocol: 'http';
61
+ settings?: HTTPInboundConfig;
62
+ }
63
+ export interface InboundDokodemo extends InboundConfigBase {
64
+ protocol: 'dokodemo-door';
65
+ settings?: DokodemoInboundConfig;
66
+ }
67
+ /** Alias for dokodemo-door in Xray-Core. Same settings. */
68
+ export interface InboundTunnel extends InboundConfigBase {
69
+ protocol: 'tunnel';
70
+ settings?: DokodemoInboundConfig;
71
+ }
72
+ /** Alias for combined http+socks in Xray-Core. Accepts both setting types. */
73
+ export interface InboundMixed extends InboundConfigBase {
74
+ protocol: 'mixed';
75
+ settings?: SocksInboundConfig | HTTPInboundConfig;
76
+ }
77
+ /** Fallback for unknown/custom protocols. */
78
+ export interface InboundGeneric extends InboundConfigBase {
79
+ protocol?: string;
80
+ settings?: Record<string, unknown>;
81
+ }
31
82
  /**
32
83
  * Union type for all possible inbound protocol settings.
33
84
  */
34
85
  export type InboundSettings = VLessInboundConfig | VMessInboundConfig | TrojanInboundConfig | ShadowsocksInboundConfig | SocksInboundConfig | HTTPInboundConfig | DokodemoInboundConfig;
35
- export type InboundProtocol = 'vless' | 'vmess' | 'trojan' | 'shadowsocks' | 'socks' | 'http' | 'dokodemo-door';
86
+ export type InboundProtocol = 'vless' | 'vmess' | 'trojan' | 'shadowsocks' | 'socks' | 'http' | 'dokodemo-door' | 'tunnel' | 'mixed';
87
+ export {};
36
88
  //# sourceMappingURL=inbound.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/config/inbound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACrB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,CAAC;AAE5B,MAAM,MAAM,eAAe,GACrB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,aAAa,GACb,OAAO,GACP,MAAM,GACN,eAAe,CAAC"}
1
+ {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/config/inbound.ts"],"names":[],"mappings":"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"}
@@ -12,19 +12,13 @@ import { DNSOutboundConfig } from '../proxies/dns';
12
12
  import { WireGuardOutboundConfig } from '../proxies/wireguard';
13
13
  import { LoopbackOutboundConfig } from '../proxies/loopback';
14
14
  /**
15
- * Outbound connection configuration.
16
- *
17
- * @see https://xtls.github.io/en/config/outbound.html
15
+ * Common outbound fields shared by all protocol variants.
18
16
  */
19
- export interface OutboundConfig {
20
- /** Outbound protocol name. */
21
- protocol?: OutboundProtocol;
17
+ interface OutboundConfigBase {
22
18
  /** Send traffic through specific local address. */
23
19
  sendThrough?: string;
24
20
  /** Unique tag for routing reference. */
25
21
  tag?: string;
26
- /** Protocol-specific settings. Type depends on protocol value. */
27
- settings?: OutboundSettings;
28
22
  /** Transport layer settings. */
29
23
  streamSettings?: StreamSettingsConfig;
30
24
  /** Proxy chain settings. */
@@ -40,9 +34,73 @@ export interface ProxySettings {
40
34
  /** Use transport layer proxying (instead of application layer). */
41
35
  transportLayer?: boolean;
42
36
  }
37
+ /**
38
+ * Discriminated union of all outbound configurations.
39
+ * TypeScript will automatically narrow `settings` based on `protocol`.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * if (outbound.protocol === 'freedom') {
44
+ * outbound.settings?.fragment; // OK — FreedomOutboundConfig
45
+ * }
46
+ * ```
47
+ *
48
+ * @see https://xtls.github.io/en/config/outbound.html
49
+ */
50
+ export type OutboundConfig = OutboundVLess | OutboundVMess | OutboundTrojan | OutboundShadowsocks | OutboundSocks | OutboundHTTP | OutboundFreedom | OutboundBlackhole | OutboundDNS | OutboundWireGuard | OutboundLoopback | OutboundGeneric;
51
+ export interface OutboundVLess extends OutboundConfigBase {
52
+ protocol: 'vless';
53
+ settings?: VLessOutboundConfig;
54
+ }
55
+ export interface OutboundVMess extends OutboundConfigBase {
56
+ protocol: 'vmess';
57
+ settings?: VMessOutboundConfig;
58
+ }
59
+ export interface OutboundTrojan extends OutboundConfigBase {
60
+ protocol: 'trojan';
61
+ settings?: TrojanOutboundConfig;
62
+ }
63
+ export interface OutboundShadowsocks extends OutboundConfigBase {
64
+ protocol: 'shadowsocks';
65
+ settings?: ShadowsocksOutboundConfig;
66
+ }
67
+ export interface OutboundSocks extends OutboundConfigBase {
68
+ protocol: 'socks';
69
+ settings?: SocksOutboundConfig;
70
+ }
71
+ export interface OutboundHTTP extends OutboundConfigBase {
72
+ protocol: 'http';
73
+ settings?: HTTPOutboundConfig;
74
+ }
75
+ export interface OutboundFreedom extends OutboundConfigBase {
76
+ protocol: 'freedom';
77
+ settings?: FreedomOutboundConfig;
78
+ }
79
+ export interface OutboundBlackhole extends OutboundConfigBase {
80
+ protocol: 'blackhole';
81
+ settings?: BlackholeOutboundConfig;
82
+ }
83
+ export interface OutboundDNS extends OutboundConfigBase {
84
+ protocol: 'dns';
85
+ settings?: DNSOutboundConfig;
86
+ }
87
+ export interface OutboundWireGuard extends OutboundConfigBase {
88
+ protocol: 'wireguard';
89
+ settings?: WireGuardOutboundConfig;
90
+ }
91
+ export interface OutboundLoopback extends OutboundConfigBase {
92
+ protocol: 'loopback';
93
+ settings?: LoopbackOutboundConfig;
94
+ }
95
+ /** Fallback for unknown/custom protocols. */
96
+ export interface OutboundGeneric extends OutboundConfigBase {
97
+ protocol?: string;
98
+ settings?: Record<string, unknown>;
99
+ }
43
100
  /**
44
101
  * Union type for all possible outbound protocol settings.
45
102
  */
46
103
  export type OutboundSettings = VLessOutboundConfig | VMessOutboundConfig | TrojanOutboundConfig | ShadowsocksOutboundConfig | SocksOutboundConfig | HTTPOutboundConfig | FreedomOutboundConfig | BlackholeOutboundConfig | DNSOutboundConfig | WireGuardOutboundConfig | LoopbackOutboundConfig;
47
104
  export type OutboundProtocol = 'vless' | 'vmess' | 'trojan' | 'shadowsocks' | 'socks' | 'http' | 'freedom' | 'blackhole' | 'dns' | 'wireguard' | 'loopback';
105
+ export {};
48
106
  //# sourceMappingURL=outbound.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../src/config/outbound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,gCAAgC;IAChC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,4BAA4B;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mCAAmC;IACnC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC1B,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,yBAAyB,GACzB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,GACrB,uBAAuB,GACvB,iBAAiB,GACjB,uBAAuB,GACvB,sBAAsB,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GACtB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,aAAa,GACb,OAAO,GACP,MAAM,GACN,SAAS,GACT,WAAW,GACX,KAAK,GACL,WAAW,GACX,UAAU,CAAC"}
1
+ {"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../src/config/outbound.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { XrayConfig } from './xray-config';
1
+ export { XrayConfig, VersionConfig, XRAY_CONFIG_KEY_ORDER, XrayConfigKey, sortXrayConfig, } from './xray-config';
2
2
  export { LogConfig, LogLevel, MaskAddressMode, } from './config/log';
3
3
  export { APIConfig, APIService, } from './config/api';
4
4
  export { MetricsConfig, } from './config/metrics';
@@ -11,8 +11,8 @@ export { FakeDNSConfig, FakeDNSPoolConfig, } from './config/fakedns';
11
11
  export { ObservatoryConfig, BurstObservatoryConfig, HealthCheckSettings, } from './config/observatory';
12
12
  export { SniffingConfig, SniffDestOverride, } from './config/sniffing';
13
13
  export { MuxConfig, XudpProxyUDP443, } from './config/mux';
14
- export { InboundConfig, InboundSettings, InboundProtocol, } from './config/inbound';
15
- export { OutboundConfig, OutboundSettings, OutboundProtocol, ProxySettings, } from './config/outbound';
14
+ export { InboundConfig, InboundVLess, InboundVMess, InboundTrojan, InboundShadowsocks, InboundSocks, InboundHTTP, InboundDokodemo, InboundTunnel, InboundMixed, InboundGeneric, InboundSettings, InboundProtocol, } from './config/inbound';
15
+ export { OutboundConfig, OutboundVLess, OutboundVMess, OutboundTrojan, OutboundShadowsocks, OutboundSocks, OutboundHTTP, OutboundFreedom, OutboundBlackhole, OutboundDNS, OutboundWireGuard, OutboundLoopback, OutboundGeneric, OutboundSettings, OutboundProtocol, ProxySettings, } from './config/outbound';
16
16
  export { TransportProtocol, SecurityType, HeaderType, Int32Range, Bandwidth, } from './transport/common';
17
17
  export { StreamSettingsConfig } from './transport/stream';
18
18
  export { TCPConfig, TCPHeaderNone, TCPHeaderHTTP, TCPHTTPRequest, TCPHTTPResponse } from './transport/tcp';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortXrayConfig = exports.XRAY_CONFIG_KEY_ORDER = void 0;
4
+ // ── Root Config ──
5
+ var xray_config_1 = require("./xray-config");
6
+ Object.defineProperty(exports, "XRAY_CONFIG_KEY_ORDER", { enumerable: true, get: function () { return xray_config_1.XRAY_CONFIG_KEY_ORDER; } });
7
+ Object.defineProperty(exports, "sortXrayConfig", { enumerable: true, get: function () { return xray_config_1.sortXrayConfig; } });
3
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,6CAMuB;AAHnB,oHAAA,qBAAqB,OAAA;AAErB,6GAAA,cAAc,OAAA"}
@@ -13,7 +13,7 @@ export type Bandwidth = string | number;
13
13
  /**
14
14
  * Transport protocol type.
15
15
  */
16
- export type TransportProtocol = 'tcp' | 'raw' | 'kcp' | 'mkcp' | 'ws' | 'websocket' | 'http' | 'h2' | 'grpc' | 'gun' | 'quic' | 'httpupgrade' | 'splithttp' | 'xhttp' | 'hysteria2';
16
+ export type TransportProtocol = 'tcp' | 'raw' | 'kcp' | 'ws' | 'grpc' | 'httpupgrade' | 'xhttp' | 'hysteria';
17
17
  /**
18
18
  * Security type for stream settings.
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/transport/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,IAAI,GACJ,WAAW,GACX,MAAM,GACN,IAAI,GACJ,MAAM,GACN,KAAK,GACL,MAAM,GACN,aAAa,GACb,WAAW,GACX,OAAO,GACP,WAAW,CAAC;AAElB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,UAAU,GAChB,MAAM,GACN,MAAM,GACN,KAAK,GACL,cAAc,GACd,MAAM,GACN,WAAW,GACX,KAAK,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/transport/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,IAAI,GACJ,MAAM,GACN,aAAa,GACb,OAAO,GACP,UAAU,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC"}
@@ -73,4 +73,25 @@ export interface VersionConfig {
73
73
  /** Maximum allowed Xray-Core version. Empty or omitted = no upper bound. */
74
74
  max?: string;
75
75
  }
76
+ /**
77
+ * All top-level keys of XrayConfig in canonical order.
78
+ * Use with `sortXrayConfig` or for your own normalization logic.
79
+ */
80
+ export declare const XRAY_CONFIG_KEY_ORDER: readonly ["log", "api", "metrics", "dns", "routing", "policy", "inbounds", "outbounds", "transport", "stats", "reverse", "fakeDns", "observatory", "burstObservatory", "version"];
81
+ /** Union of all top-level XrayConfig key names. */
82
+ export type XrayConfigKey = (typeof XRAY_CONFIG_KEY_ORDER)[number];
83
+ /**
84
+ * Returns a new XrayConfig with keys sorted in canonical order.
85
+ * Unknown keys (not in the standard set) are appended at the end
86
+ * in their original order.
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * import { sortXrayConfig } from 'xray-typed';
91
+ *
92
+ * const normalized = sortXrayConfig(rawConfig);
93
+ * const json = JSON.stringify(normalized, null, 2);
94
+ * ```
95
+ */
96
+ export declare function sortXrayConfig<T extends XrayConfig>(config: T): T;
76
97
  //# sourceMappingURL=xray-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xray-config.d.ts","sourceRoot":"","sources":["../src/xray-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kDAAkD;IAClD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mDAAmD;IACnD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,6BAA6B;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC1B,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"xray-config.d.ts","sourceRoot":"","sources":["../src/xray-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kDAAkD;IAClD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mDAAmD;IACnD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,6BAA6B;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC1B,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,mLAgBgB,CAAC;AAEnD,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAgBjE"}
@@ -1,3 +1,53 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XRAY_CONFIG_KEY_ORDER = void 0;
4
+ exports.sortXrayConfig = sortXrayConfig;
5
+ /**
6
+ * All top-level keys of XrayConfig in canonical order.
7
+ * Use with `sortXrayConfig` or for your own normalization logic.
8
+ */
9
+ exports.XRAY_CONFIG_KEY_ORDER = [
10
+ 'log',
11
+ 'api',
12
+ 'metrics',
13
+ 'dns',
14
+ 'routing',
15
+ 'policy',
16
+ 'inbounds',
17
+ 'outbounds',
18
+ 'transport',
19
+ 'stats',
20
+ 'reverse',
21
+ 'fakeDns',
22
+ 'observatory',
23
+ 'burstObservatory',
24
+ 'version',
25
+ ];
26
+ /**
27
+ * Returns a new XrayConfig with keys sorted in canonical order.
28
+ * Unknown keys (not in the standard set) are appended at the end
29
+ * in their original order.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { sortXrayConfig } from 'xray-typed';
34
+ *
35
+ * const normalized = sortXrayConfig(rawConfig);
36
+ * const json = JSON.stringify(normalized, null, 2);
37
+ * ```
38
+ */
39
+ function sortXrayConfig(config) {
40
+ const sorted = {};
41
+ for (const key of exports.XRAY_CONFIG_KEY_ORDER) {
42
+ if (key in config) {
43
+ sorted[key] = config[key];
44
+ }
45
+ }
46
+ for (const key of Object.keys(config)) {
47
+ if (!(key in sorted)) {
48
+ sorted[key] = config[key];
49
+ }
50
+ }
51
+ return sorted;
52
+ }
3
53
  //# sourceMappingURL=xray-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xray-config.js","sourceRoot":"","sources":["../src/xray-config.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"xray-config.js","sourceRoot":"","sources":["../src/xray-config.ts"],"names":[],"mappings":";;;AAoHA,wCAgBC;AAtDD;;;GAGG;AACU,QAAA,qBAAqB,GAAG;IACjC,KAAK;IACL,KAAK;IACL,SAAS;IACT,KAAK;IACL,SAAS;IACT,QAAQ;IACR,UAAU;IACV,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;IACT,SAAS;IACT,aAAa;IACb,kBAAkB;IAClB,SAAS;CACqC,CAAC;AAKnD;;;;;;;;;;;;GAYG;AACH,SAAgB,cAAc,CAAuB,MAAS;IAC1D,MAAM,MAAM,GAAG,EAA6B,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,6BAAqB,EAAE,CAAC;QACtC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAc,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,MAAW,CAAC;AACvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xray-typed",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Complete TypeScript type definitions for Xray-Core JSON configuration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,4 +27,4 @@
27
27
  "devDependencies": {
28
28
  "typescript": "^5.9.3"
29
29
  }
30
- }
30
+ }