@matterbridge/dgram 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/bmc-button.svg +22 -0
- package/dist/coap.d.ts +34 -0
- package/dist/coap.js +252 -0
- package/dist/dgram.d.ts +44 -0
- package/dist/dgram.js +252 -0
- package/dist/export.d.ts +5 -0
- package/dist/export.js +5 -0
- package/dist/mdns.d.ts +188 -0
- package/dist/mdns.js +702 -0
- package/dist/multicast.d.ts +18 -0
- package/dist/multicast.js +118 -0
- package/dist/unicast.d.ts +11 -0
- package/dist/unicast.js +40 -0
- package/matterbridge.svg +50 -0
- package/package.json +33 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AddressInfo } from 'node:net';
|
|
2
|
+
import { Dgram } from './dgram.js';
|
|
3
|
+
export declare const MDNS_MULTICAST_IPV4_ADDRESS = "224.0.0.251";
|
|
4
|
+
export declare const MDNS_MULTICAST_IPV6_ADDRESS = "ff02::fb";
|
|
5
|
+
export declare const MDNS_MULTICAST_PORT = 5353;
|
|
6
|
+
export declare const COAP_MULTICAST_IPV4_ADDRESS = "224.0.1.187";
|
|
7
|
+
export declare const COAP_MULTICAST_IPV6_ADDRESS = "ff02::fd";
|
|
8
|
+
export declare const COAP_MULTICAST_PORT = 5683;
|
|
9
|
+
export declare class Multicast extends Dgram {
|
|
10
|
+
multicastAddress: string;
|
|
11
|
+
multicastPort: number;
|
|
12
|
+
outgoingInterfaceAddress: string | undefined;
|
|
13
|
+
joinedInterfaces: string[];
|
|
14
|
+
constructor(name: string, multicastAddress: string, multicastPort: number, socketType: 'udp4' | 'udp6', reuseAddr?: boolean | undefined, interfaceName?: string, interfaceAddress?: string, outgoingInterfaceAddress?: string);
|
|
15
|
+
start(): void;
|
|
16
|
+
onListening(address: AddressInfo): void;
|
|
17
|
+
stop(): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import { BLUE, CYAN, db, RED, YELLOW } from 'node-ansi-logger';
|
|
3
|
+
import { Dgram } from './dgram.js';
|
|
4
|
+
export const MDNS_MULTICAST_IPV4_ADDRESS = '224.0.0.251';
|
|
5
|
+
export const MDNS_MULTICAST_IPV6_ADDRESS = 'ff02::fb';
|
|
6
|
+
export const MDNS_MULTICAST_PORT = 5353;
|
|
7
|
+
export const COAP_MULTICAST_IPV4_ADDRESS = '224.0.1.187';
|
|
8
|
+
export const COAP_MULTICAST_IPV6_ADDRESS = 'ff02::fd';
|
|
9
|
+
export const COAP_MULTICAST_PORT = 5683;
|
|
10
|
+
export class Multicast extends Dgram {
|
|
11
|
+
multicastAddress;
|
|
12
|
+
multicastPort;
|
|
13
|
+
outgoingInterfaceAddress;
|
|
14
|
+
joinedInterfaces = [];
|
|
15
|
+
constructor(name, multicastAddress, multicastPort, socketType, reuseAddr = true, interfaceName, interfaceAddress, outgoingInterfaceAddress) {
|
|
16
|
+
super(name, socketType, reuseAddr, interfaceName, interfaceAddress);
|
|
17
|
+
this.multicastAddress = multicastAddress;
|
|
18
|
+
this.multicastPort = multicastPort;
|
|
19
|
+
this.outgoingInterfaceAddress = outgoingInterfaceAddress;
|
|
20
|
+
}
|
|
21
|
+
start() {
|
|
22
|
+
if (this.socketType === 'udp4') {
|
|
23
|
+
this.log.debug(`Starting ipv4 dgram multicast socket...`);
|
|
24
|
+
this.interfaceAddress = this.interfaceAddress ?? this.getIpv4InterfaceAddress(this.interfaceName);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.log.debug(`Starting ipv6 dgram multicast socket...`);
|
|
28
|
+
this.interfaceAddress = this.interfaceAddress ?? this.getIpv6InterfaceAddress(this.interfaceName);
|
|
29
|
+
}
|
|
30
|
+
this.log.debug(`Binding dgram multicast socket to ${BLUE}${this.interfaceAddress}${db}:${BLUE}${this.multicastPort}${db} on interface ${CYAN}${this.interfaceName}${db}`);
|
|
31
|
+
this.socket.bind(this.multicastPort, this.interfaceAddress, () => {
|
|
32
|
+
const address = this.socket.address();
|
|
33
|
+
this.log.debug(`Dgram multicast socket bound to ${BLUE}${address.family}${db} ${BLUE}${address.address}${db}:${BLUE}${address.port}${db}`);
|
|
34
|
+
this.emit('bound', address);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
onListening(address) {
|
|
38
|
+
this.log.debug(`Dgram multicast socket listening on ${BLUE}${address.family}${db} ${BLUE}${address.address}${db}:${BLUE}${address.port}${db}`);
|
|
39
|
+
this.socket.setBroadcast(true);
|
|
40
|
+
this.log.debug(`Dgram multicast socket broadcast enabled`);
|
|
41
|
+
this.socket.setTTL(255);
|
|
42
|
+
this.log.debug(`Dgram multicast socket TTL set to 255`);
|
|
43
|
+
this.socket.setMulticastTTL(255);
|
|
44
|
+
this.log.debug(`Dgram multicast socket multicast TTL set to 255`);
|
|
45
|
+
this.socket.setMulticastLoopback(true);
|
|
46
|
+
this.log.debug(`Dgram multicast socket multicast loopback enabled`);
|
|
47
|
+
Object.entries(os.networkInterfaces()).forEach(([name, interfaces]) => {
|
|
48
|
+
this.log.debug(`Dgram multicast socket processing interface ${CYAN}${name}${db}`);
|
|
49
|
+
if (!interfaces)
|
|
50
|
+
return;
|
|
51
|
+
if (this.interfaceName && name !== this.interfaceName)
|
|
52
|
+
return;
|
|
53
|
+
let iface;
|
|
54
|
+
let membershipInterface;
|
|
55
|
+
const ifaceIpv4 = interfaces.find((iface) => iface.family === 'IPv4' && this.socketType === 'udp4');
|
|
56
|
+
if (ifaceIpv4) {
|
|
57
|
+
iface = ifaceIpv4;
|
|
58
|
+
membershipInterface = ifaceIpv4.address;
|
|
59
|
+
}
|
|
60
|
+
const ifaceIpv6 = interfaces.find((iface) => iface.family === 'IPv6' && this.socketType === 'udp6');
|
|
61
|
+
if (ifaceIpv6) {
|
|
62
|
+
iface = ifaceIpv6;
|
|
63
|
+
membershipInterface = ifaceIpv6.address + (ifaceIpv6.scopeid !== undefined ? (process.platform === 'win32' ? '%' + String(ifaceIpv6.scopeid) : '%' + name) : '');
|
|
64
|
+
}
|
|
65
|
+
const ifaceUla = interfaces.find((iface) => iface.family === 'IPv6' && this.socketType === 'udp6' && iface.address.startsWith('fd'));
|
|
66
|
+
if (ifaceUla) {
|
|
67
|
+
iface = ifaceUla;
|
|
68
|
+
membershipInterface = ifaceUla.address + (ifaceUla.scopeid !== undefined ? (process.platform === 'win32' ? '%' + String(ifaceUla.scopeid) : '%' + name) : '');
|
|
69
|
+
}
|
|
70
|
+
const ifaceUla64 = interfaces.find((iface) => iface.family === 'IPv6' && this.socketType === 'udp6' && iface.address.startsWith('fd') && iface.netmask === 'ffff:ffff:ffff:ffff::');
|
|
71
|
+
if (ifaceUla64) {
|
|
72
|
+
iface = ifaceUla64;
|
|
73
|
+
membershipInterface = ifaceUla64.address + (ifaceUla64.scopeid !== undefined ? (process.platform === 'win32' ? '%' + String(ifaceUla64.scopeid) : '%' + name) : '');
|
|
74
|
+
}
|
|
75
|
+
const ifaceLinkLocal = interfaces.find((iface) => iface.family === 'IPv6' && this.socketType === 'udp6' && iface.address.startsWith('fe80'));
|
|
76
|
+
if (ifaceLinkLocal) {
|
|
77
|
+
iface = ifaceLinkLocal;
|
|
78
|
+
membershipInterface = ifaceLinkLocal.address + (ifaceLinkLocal.scopeid !== undefined ? (process.platform === 'win32' ? '%' + String(ifaceLinkLocal.scopeid) : '%' + name) : '');
|
|
79
|
+
}
|
|
80
|
+
if (iface && membershipInterface) {
|
|
81
|
+
try {
|
|
82
|
+
this.socket.addMembership(this.multicastAddress, membershipInterface);
|
|
83
|
+
this.joinedInterfaces.push(membershipInterface);
|
|
84
|
+
this.log.debug(`Dgram multicast socket joined multicast group ${BLUE}${this.multicastAddress}${db} on interface ${CYAN}${name}${db} ${BLUE}${iface.family}${db} ${BLUE}${iface.address}${db} ${BLUE}${iface.scopeid}${db} >>> ${YELLOW}${membershipInterface}${db}`);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
this.log.debug(`Dgram multicast socket failed to join multicast group ${BLUE}${this.multicastAddress}${db} on interface ${CYAN}${name}${db} ${BLUE}${iface.family}${db} ${BLUE}${iface.address}${db} ${BLUE}${iface.scopeid}${db} >>> ${RED}${membershipInterface}${db}: ${error instanceof Error ? error.message : error}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
let interfaceAddress = this.outgoingInterfaceAddress || this.interfaceAddress;
|
|
92
|
+
if (!this.outgoingInterfaceAddress && this.socketType === 'udp4' && this.interfaceAddress === '0.0.0.0') {
|
|
93
|
+
interfaceAddress = this.getIpv4InterfaceAddress(this.interfaceName);
|
|
94
|
+
}
|
|
95
|
+
if (!this.outgoingInterfaceAddress && this.socketType === 'udp6' && this.interfaceAddress === '::') {
|
|
96
|
+
interfaceAddress = '::' + this.getIpv6ScopeId(this.interfaceName);
|
|
97
|
+
}
|
|
98
|
+
this.log.debug(`Dgram multicast socket setting multicastInterface to ${BLUE}${interfaceAddress}${db} for ${BLUE}${address.family}${db} ${BLUE}${address.address}${db}:${BLUE}${address.port}${db}`);
|
|
99
|
+
this.socket.setMulticastInterface(interfaceAddress);
|
|
100
|
+
this.log.debug(`Dgram multicast socket multicastInterface set to ${BLUE}${interfaceAddress}${db}`);
|
|
101
|
+
this.emit('ready', address);
|
|
102
|
+
}
|
|
103
|
+
stop() {
|
|
104
|
+
this.log.debug('Stopping dgram multicast socket...');
|
|
105
|
+
this.joinedInterfaces.forEach((membershipInterface) => {
|
|
106
|
+
try {
|
|
107
|
+
this.socket.dropMembership(this.multicastAddress, membershipInterface);
|
|
108
|
+
this.log.debug(`Dgram multicast socket dropped multicast group ${BLUE}${this.multicastAddress}${db} on interface ${YELLOW}${membershipInterface}${db}`);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
this.log.debug(`Dgram multicast socket failed to drop multicast group ${BLUE}${this.multicastAddress}${db} on interface ${RED}${membershipInterface}${db}: ${error}`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
this.joinedInterfaces = [];
|
|
115
|
+
this.socket.close();
|
|
116
|
+
this.log.debug('Stopped dgram multicast socket.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AddressInfo } from 'node:net';
|
|
2
|
+
import { RemoteInfo } from 'node:dgram';
|
|
3
|
+
import { Dgram } from './dgram.js';
|
|
4
|
+
export declare class Unicast extends Dgram {
|
|
5
|
+
port: number | undefined;
|
|
6
|
+
constructor(name: string, socketType: 'udp4' | 'udp6', reuseAddr?: boolean | undefined, interfaceName?: string, interfaceAddress?: string, port?: number);
|
|
7
|
+
start(): void;
|
|
8
|
+
onListening(address: AddressInfo): void;
|
|
9
|
+
onMessage(msg: Buffer, rinfo: RemoteInfo): void;
|
|
10
|
+
stop(): void;
|
|
11
|
+
}
|
package/dist/unicast.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BLUE, db } from 'node-ansi-logger';
|
|
2
|
+
import { Dgram } from './dgram.js';
|
|
3
|
+
export class Unicast extends Dgram {
|
|
4
|
+
port;
|
|
5
|
+
constructor(name, socketType, reuseAddr = true, interfaceName, interfaceAddress, port) {
|
|
6
|
+
super(name, socketType, reuseAddr, interfaceName, interfaceAddress);
|
|
7
|
+
this.port = port;
|
|
8
|
+
}
|
|
9
|
+
start() {
|
|
10
|
+
if (this.socketType === 'udp4') {
|
|
11
|
+
this.log.debug(`Starting ipv4 dgram unicast socket...`);
|
|
12
|
+
this.interfaceAddress = this.interfaceAddress ?? (this.interfaceName ? this.getIpv4InterfaceAddress(this.interfaceName) : undefined);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
this.log.debug(`Starting ipv6 dgram unicast socket...`);
|
|
16
|
+
this.interfaceAddress = this.interfaceAddress ?? (this.interfaceName ? this.getIpv6InterfaceAddress(this.interfaceName) : undefined);
|
|
17
|
+
}
|
|
18
|
+
this.interfaceNetmask = this.interfaceAddress ? this.getNetmask(this.interfaceAddress) : undefined;
|
|
19
|
+
this.log.debug(`Binding dgram unicast socket to ${BLUE}${this.interfaceAddress || 'all available addresses'}${db} on port ${BLUE}${this.port || 'any available port'}${db}...`);
|
|
20
|
+
this.socket.bind(this.port, this.interfaceAddress, () => {
|
|
21
|
+
const address = this.socket.address();
|
|
22
|
+
this.log.debug(`Dgram unicast socket bound to ${BLUE}${address.family}${db} ${BLUE}${address.address}${db}:${BLUE}${address.port}${db}`);
|
|
23
|
+
this.emit('bound', address);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
onListening(address) {
|
|
27
|
+
this.log.debug(`Dgram unicast socket listening on ${BLUE}${address.family}${db} ${BLUE}${address.address}${db}:${BLUE}${address.port}${db}`);
|
|
28
|
+
this.socket.setBroadcast(true);
|
|
29
|
+
this.log.debug(`Dgram unicast socket broadcast enabled`);
|
|
30
|
+
this.emit('ready', address);
|
|
31
|
+
}
|
|
32
|
+
onMessage(msg, rinfo) {
|
|
33
|
+
this.log.debug(`Socket received a message from ${BLUE}${rinfo.family}${db} ${BLUE}${rinfo.address}${db}:${BLUE}${rinfo.port}${db}`);
|
|
34
|
+
}
|
|
35
|
+
stop() {
|
|
36
|
+
this.log.debug('Stopping dgram unicast socket...');
|
|
37
|
+
this.socket.close();
|
|
38
|
+
this.log.debug('Stopped dgram unicast socket.');
|
|
39
|
+
}
|
|
40
|
+
}
|
package/matterbridge.svg
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 296.2 296.2">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="lg1" x1="16.6" y1="16.6" x2="279.6" y2="279.6" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0" stop-color="#00b48d" />
|
|
5
|
+
<stop offset=".1" stop-color="#3faa77" />
|
|
6
|
+
<stop offset=".3" stop-color="#234148" />
|
|
7
|
+
<stop offset=".7" stop-color="#203b44" />
|
|
8
|
+
<stop offset=".9" stop-color="#ad2e6e" />
|
|
9
|
+
<stop offset="1" stop-color="#c81b74" />
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="lg2" x1="31.1" y1="31.1" x2="265.1" y2="265.1" gradientUnits="userSpaceOnUse">
|
|
12
|
+
<stop offset="0" stop-color="#00b48d" />
|
|
13
|
+
<stop offset=".2" stop-color="#285251" />
|
|
14
|
+
<stop offset=".4" stop-color="#234148" />
|
|
15
|
+
<stop offset=".8" stop-color="#203b44" />
|
|
16
|
+
<stop offset=".9" stop-color="#a8316c" />
|
|
17
|
+
<stop offset="1" stop-color="#c81b74" />
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient id="lg3" x1="116.2" y1="143.9" x2="139.8" y2="143.9"
|
|
20
|
+
gradientUnits="userSpaceOnUse">
|
|
21
|
+
<stop offset="0" stop-color="#8bc751" />
|
|
22
|
+
<stop offset="1" stop-color="#0db14b" />
|
|
23
|
+
</linearGradient>
|
|
24
|
+
<linearGradient id="lg4" x1="136.1" y1="100.8" x2="159.6" y2="100.8"
|
|
25
|
+
xlink:href="#lg3" />
|
|
26
|
+
<linearGradient id="lg5" x1="155.3" y1="143.9" x2="178.9" y2="143.9"
|
|
27
|
+
xlink:href="#lg3" />
|
|
28
|
+
<linearGradient id="lg6" x1="46.8" y1="25.7" x2="89.6" y2="74.8" gradientUnits="userSpaceOnUse">
|
|
29
|
+
<stop offset="0" stop-color="#b1d34a" />
|
|
30
|
+
<stop offset="1" stop-color="#50b848" />
|
|
31
|
+
</linearGradient>
|
|
32
|
+
</defs>
|
|
33
|
+
<rect width="296.2" height="296.2" rx="56.7" ry="56.7" style="fill:url(#lg1)" />
|
|
34
|
+
<rect x="16.3" y="16.3" width="263.6" height="263.6" rx="50.5" ry="50.5" style="fill:url(#lg2)" />
|
|
35
|
+
<circle cx="128" cy="143.9" r="11.8" style="fill:url(#lg3)" />
|
|
36
|
+
<circle cx="147.8" cy="100.8" r="11.8" style="fill:url(#lg4)" />
|
|
37
|
+
<path
|
|
38
|
+
d="m244.6 114.5.4-.5L160 33a17 17 0 0 0-24.7-.5l-86.4 83.3a15 15 0 0 0 9.2 26.9h19.3v-4.7l-13.7-12.7v-.1l83.7-80.8 84.2 81-13.9 12.8v4.5h19.5a15 15 0 0 0 7.4-28.1Z"
|
|
39
|
+
style="fill:url(#lg3)" />
|
|
40
|
+
<circle cx="167.1" cy="143.9" r="11.8" style="fill:url(#lg5)" />
|
|
41
|
+
<path fill="#fff" d="M219 89.3V35.5a10.5 10.5 0 1 0-21 0v33.7l21 20Z" />
|
|
42
|
+
<path
|
|
43
|
+
d="M91.4 73.3H83a37 37 0 0 0-14.5-28.4L65 50.2c.1 0 12.6 9 11.7 25.4-5.3-.4-11.2-1.9-16.3-5.3-11.8-7.8-16-23.7-11.9-46 8.7 1.5 34 7 43 22.8 4.1 7.3 4.1 16.1 0 26.2Z"
|
|
44
|
+
style="fill:url(#lg6)" />
|
|
45
|
+
<path
|
|
46
|
+
d="M65.9 80a49.6 49.6 0 0 0 17.8 2.2l16.6-16c1.6-8.3.5-15.7-3.3-22.4C84.6 22 47.8 17.5 46.2 17.4l-3-.4-.6 3c-3.8 18.4-5.9 50.6 23.2 60ZM48.4 24.4c8.7 1.5 34 7 43 22.8 4.1 7.3 4.1 16.1 0 26.2H83a37 37 0 0 0-14.5-28.4l-3.7 5.3c.1 0 12.6 9 11.7 25.4-5.3-.4-11.2-1.9-16.3-5.3-11.9-7.8-16-23.7-11.9-46Z"
|
|
47
|
+
fill="#1e5857" />
|
|
48
|
+
<path fill="#fff"
|
|
49
|
+
d="M250.5 90.5a17.4 17.4 0 1 1 0-34.8 17.4 17.4 0 0 1 0 34.8Zm0-22.7a5.4 5.4 0 0 0 0 10.7 5.3 5.3 0 0 0 0-10.7ZM258.8 148.2a15.9 15.9 0 0 0-9.6 28.5c-.8 4.2-5.4 4.6-5.4 4.6h-26v-43l13.6-13-1.8-2-82.2-79-81.2 78.3-2.5 2.6 13.7 13v42.9H53a21.5 21.5 0 1 0 11.7 15h12.6v18.8c0 7.8 6.4 14.1 14.1 14.1h29.3v14.8H64a10.6 10.6 0 0 0-17.7 8 10.6 10.6 0 0 0 17.6 8h157.6a16.3 16.3 0 1 0 0-16h-84.8V229h66.8c7.8 0 14.2-6.3 14.2-14.1v-19.2h27.6c14.3 0 17.8-12.8 18.5-16.6a15.9 15.9 0 0 0-5-30.9ZM43.7 210.8a10.3 10.3 0 1 1 0-20.6 10.3 10.3 0 0 1 0 20.6Zm192 36a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm-77-34.8h-22v-34h22v34Zm8.4-79.8c2.7 0 5.2 1 7.2 2.5v-10.4L188 137s2.6 1.3 4.6 1.3h6.7v68c0 3.2-2.6 5.7-5.7 5.7h-19v-34h1.4a7.5 7.5 0 0 0 0-15H120a7.5 7.5 0 0 0 0 15h.7v34h-19.3a5.7 5.7 0 0 1-5.7-5.6v-68.1h6.7c2 0 4.6-1.3 4.6-1.3l13.7-12.7v10.4a11.7 11.7 0 0 1 16 1.6v-13a14.9 14.9 0 0 0-25-10.8s-.1.2-.1.2l-.5.5-6.9 7H92.5l55-53.2 55.1 53.2h-11.8l-7-7c0-.2-.2-.3-.4-.5l-.2-.2a14.8 14.8 0 0 0-25 10.9v12.9c2.2-2.5 5.3-4.1 8.9-4.1Zm91.7 36.7a4.9 4.9 0 1 1 0-9.7 4.9 4.9 0 0 1 0 9.7Z" />
|
|
50
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@matterbridge/dgram",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Matterbridge dgram library",
|
|
5
|
+
"author": "https://github.com/Luligu",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Luligu/matterbridge.git",
|
|
9
|
+
"directory": "packages/dgram"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [],
|
|
15
|
+
"license": "Apache-2.0",
|
|
16
|
+
"funding": {
|
|
17
|
+
"type": "buymeacoffee",
|
|
18
|
+
"url": "https://www.buymeacoffee.com/luligugithub"
|
|
19
|
+
},
|
|
20
|
+
"type": "module",
|
|
21
|
+
"main": "./dist/export.js",
|
|
22
|
+
"types": "./dist/export.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/export.d.ts",
|
|
26
|
+
"import": "./dist/export.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@matterbridge/jest-utils": "^0.0.1",
|
|
31
|
+
"node-ansi-logger": "3.1.1"
|
|
32
|
+
}
|
|
33
|
+
}
|