Updated the files.

This commit is contained in:
Batuhan Berk Başoğlu 2024-02-08 19:38:41 -05:00
parent 1553e6b971
commit 753967d4f5
23418 changed files with 3784666 additions and 0 deletions

4
my-app/node_modules/bonjour-service/dist/lib/KeyValue.d.ts generated vendored Executable file
View file

@ -0,0 +1,4 @@
type KeyValue = {
[key: string]: any;
};
export default KeyValue;

3
my-app/node_modules/bonjour-service/dist/lib/KeyValue.js generated vendored Executable file
View file

@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=KeyValue.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"KeyValue.js","sourceRoot":"","sources":["../../src/lib/KeyValue.ts"],"names":[],"mappings":""}

33
my-app/node_modules/bonjour-service/dist/lib/browser.d.ts generated vendored Executable file
View file

@ -0,0 +1,33 @@
/// <reference types="node" />
import KeyValue from './KeyValue';
import { EventEmitter } from 'events';
import Service from './service';
export interface BrowserConfig {
type: string;
name?: string;
protocol?: 'tcp' | 'udp';
subtypes?: string[];
txt?: KeyValue;
}
export type BrowserOnUp = (service: Service) => void;
export declare class Browser extends EventEmitter {
private mdns;
private onresponse;
private serviceMap;
private txt;
private name?;
private txtQuery;
private wildcard;
private _services;
constructor(mdns: any, opts: BrowserConfig | BrowserOnUp | null, onup?: BrowserOnUp);
start(): void;
stop(): void;
update(): void;
get services(): Service[];
private addService;
private updateService;
private removeService;
private goodbyes;
private buildServicesFor;
}
export default Browser;

179
my-app/node_modules/bonjour-service/dist/lib/browser.js generated vendored Executable file
View file

@ -0,0 +1,179 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Browser = void 0;
const dns_txt_1 = __importDefault(require("./dns-txt"));
const dns_equal_1 = __importDefault(require("./utils/dns-equal"));
const events_1 = require("events");
const service_types_1 = require("./service-types");
const filter_service_1 = __importDefault(require("./utils/filter-service"));
const filter_txt_1 = __importDefault(require("./utils/filter-txt"));
const equal_txt_1 = __importDefault(require("./utils/equal-txt"));
const TLD = '.local';
const WILDCARD = '_services._dns-sd._udp' + TLD;
class Browser extends events_1.EventEmitter {
constructor(mdns, opts, onup) {
super();
this.onresponse = undefined;
this.serviceMap = {};
this.wildcard = false;
this._services = [];
if (typeof opts === 'function')
return new Browser(mdns, null, opts);
this.mdns = mdns;
this.txt = new dns_txt_1.default(opts !== null && opts.txt != null ? opts.txt : undefined);
if (opts === null || opts.type === undefined) {
this.name = WILDCARD;
this.wildcard = true;
}
else {
this.name = (0, service_types_1.toString)({ name: opts.type, protocol: opts.protocol || 'tcp' }) + TLD;
if (opts.name)
this.name = opts.name + '.' + this.name;
this.wildcard = false;
}
if (opts != null && opts.txt !== undefined)
this.txtQuery = (0, filter_txt_1.default)(opts.txt);
if (onup)
this.on('up', onup);
this.start();
}
start() {
if (this.onresponse || this.name === undefined)
return;
var self = this;
var nameMap = {};
if (!this.wildcard)
nameMap[this.name] = true;
this.onresponse = (packet, rinfo) => {
if (self.wildcard) {
packet.answers.forEach((answer) => {
if (answer.type !== 'PTR' || answer.name !== self.name || answer.name in nameMap)
return;
nameMap[answer.data] = true;
self.mdns.query(answer.data, 'PTR');
});
}
Object.keys(nameMap).forEach(function (name) {
self.goodbyes(name, packet).forEach(self.removeService.bind(self));
var matches = self.buildServicesFor(name, packet, self.txt, rinfo);
if (matches.length === 0)
return;
matches.forEach((service) => {
if (self.serviceMap[service.fqdn]) {
self.updateService(service);
return;
}
self.addService(service);
});
});
};
this.mdns.on('response', this.onresponse);
this.update();
}
stop() {
if (!this.onresponse)
return;
this.mdns.removeListener('response', this.onresponse);
this.onresponse = undefined;
}
update() {
this.mdns.query(this.name, 'PTR');
}
get services() {
return this._services;
}
addService(service) {
if ((0, filter_service_1.default)(service, this.txtQuery) === false)
return;
this._services.push(service);
this.serviceMap[service.fqdn] = true;
this.emit('up', service);
}
updateService(service) {
var _a;
if ((0, equal_txt_1.default)(service.txt, ((_a = this._services.find((s) => (0, dns_equal_1.default)(s.fqdn, service.fqdn))) === null || _a === void 0 ? void 0 : _a.txt) || {}))
return;
if (!(0, filter_service_1.default)(service, this.txtQuery)) {
this.removeService(service.fqdn);
return;
}
this._services = this._services.map(function (s) {
if (!(0, dns_equal_1.default)(s.fqdn, service.fqdn))
return s;
return service;
});
this.emit('txt-update', service);
}
removeService(fqdn) {
var service, index;
this._services.some(function (s, i) {
if ((0, dns_equal_1.default)(s.fqdn, fqdn)) {
service = s;
index = i;
return true;
}
});
if (!service || index === undefined)
return;
this._services.splice(index, 1);
delete this.serviceMap[fqdn];
this.emit('down', service);
}
goodbyes(name, packet) {
return packet.answers.concat(packet.additionals)
.filter((rr) => rr.type === 'PTR' && rr.ttl === 0 && (0, dns_equal_1.default)(rr.name, name))
.map((rr) => rr.data);
}
buildServicesFor(name, packet, txt, referer) {
var records = packet.answers.concat(packet.additionals).filter((rr) => rr.ttl > 0);
return records
.filter((rr) => rr.type === 'PTR' && (0, dns_equal_1.default)(rr.name, name))
.map((ptr) => {
const service = {
addresses: [],
subtypes: []
};
records.filter((rr) => {
return (rr.type === 'PTR' && (0, dns_equal_1.default)(rr.data, ptr.data) && rr.name.includes('._sub'));
}).forEach((rr) => {
const types = (0, service_types_1.toType)(rr.name);
service.subtypes.push(types.subtype);
});
records
.filter((rr) => {
return (rr.type === 'SRV' || rr.type === 'TXT') && (0, dns_equal_1.default)(rr.name, ptr.data);
})
.forEach((rr) => {
if (rr.type === 'SRV') {
var parts = rr.name.split('.');
var name = parts[0];
var types = (0, service_types_1.toType)(parts.slice(1, -1).join('.'));
service.name = name;
service.fqdn = rr.name;
service.host = rr.data.target;
service.referer = referer;
service.port = rr.data.port;
service.type = types.name;
service.protocol = types.protocol;
}
else if (rr.type === 'TXT') {
service.rawTxt = rr.data;
service.txt = this.txt.decodeAll(rr.data);
}
});
if (!service.name)
return;
records
.filter((rr) => (rr.type === 'A' || rr.type === 'AAAA') && (0, dns_equal_1.default)(rr.name, service.host))
.forEach((rr) => service.addresses.push(rr.data));
return service;
})
.filter((rr) => !!rr);
}
}
exports.Browser = Browser;
exports.default = Browser;
//# sourceMappingURL=browser.js.map

File diff suppressed because one or more lines are too long

10
my-app/node_modules/bonjour-service/dist/lib/dns-txt.d.ts generated vendored Executable file
View file

@ -0,0 +1,10 @@
/// <reference types="node" />
import KeyValue from './KeyValue';
export declare class DnsTxt {
private binary;
constructor(opts?: KeyValue);
encode(data?: KeyValue): Buffer[];
decode(buffer: Buffer): KeyValue;
decodeAll(buffer: Array<Buffer>): KeyValue;
}
export default DnsTxt;

42
my-app/node_modules/bonjour-service/dist/lib/dns-txt.js generated vendored Executable file
View file

@ -0,0 +1,42 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.DnsTxt = void 0;
class DnsTxt {
constructor(opts = {}) {
this.binary = opts ? opts.binary : false;
}
encode(data = {}) {
return Object.entries(data)
.map(([key, value]) => {
let item = `${key}=${value}`;
return Buffer.from(item);
});
}
decode(buffer) {
var data = {};
try {
let format = buffer.toString();
let parts = format.split(/=(.+)/);
let key = parts[0];
let value = parts[1];
data[key] = value;
}
catch (_) { }
return data;
}
decodeAll(buffer) {
return buffer
.filter(i => i.length > 1)
.map(i => this.decode(i))
.reduce((prev, curr) => {
var obj = prev;
let [key] = Object.keys(curr);
let [value] = Object.values(curr);
obj[key] = value;
return obj;
}, {});
}
}
exports.DnsTxt = DnsTxt;
exports.default = DnsTxt;
//# sourceMappingURL=dns-txt.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"dns-txt.js","sourceRoot":"","sources":["../../src/lib/dns-txt.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AAIZ,MAAa,MAAM;IAIf,YAAY,OAAiB,EAAE;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAC5C,CAAC;IAOM,MAAM,CAAC,OAAiB,EAAE;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClB,IAAI,IAAI,GAAW,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;YACpC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;IACN,CAAC;IAOM,MAAM,CAAC,MAAc;QACxB,IAAI,IAAI,GAAa,EAAE,CAAA;QAEvB,IAAI;YACA,IAAI,MAAM,GAAoB,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC/C,IAAI,KAAK,GAAqB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACnD,IAAI,GAAG,GAAuB,KAAK,CAAC,CAAC,CAAC,CAAA;YACtC,IAAI,KAAK,GAAqB,KAAK,CAAC,CAAC,CAAC,CAAA;YACtC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;SACpB;QAAC,OAAM,CAAC,EAAE,GAAE;QAEb,OAAO,IAAI,CAAA;IACf,CAAC;IAOM,SAAS,CAAC,MAAqB;QAClC,OAAO,MAAM;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACxB,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACnB,IAAI,GAAG,GAAW,IAAI,CAAA;YACtB,IAAI,CAAC,GAAG,CAAC,GAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,CAAC,GAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACrC,GAAG,CAAC,GAAG,CAAC,GAAU,KAAK,CAAA;YACvB,OAAO,GAAG,CAAA;QACd,CAAC,EAAE,EAAE,CAAC,CAAA;IACV,CAAC;CAEJ;AA1DD,wBA0DC;AAED,kBAAe,MAAM,CAAA"}

View file

@ -0,0 +1,14 @@
import { ServiceConfig, ServiceRecord } from './service';
export declare class Server {
mdns: any;
private registry;
private errorCallback;
constructor(opts: Partial<ServiceConfig>, errorCallback?: Function | undefined);
register(records: Array<ServiceRecord> | ServiceRecord): void;
unregister(records: Array<ServiceRecord> | ServiceRecord): void;
private respondToQuery;
private recordsFor;
private isDuplicateRecord;
private unique;
}
export default Server;

119
my-app/node_modules/bonjour-service/dist/lib/mdns-server.js generated vendored Executable file
View file

@ -0,0 +1,119 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Server = void 0;
const multicast_dns_1 = __importDefault(require("multicast-dns"));
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
const dns_equal_1 = __importDefault(require("./utils/dns-equal"));
class Server {
constructor(opts, errorCallback) {
this.registry = {};
this.mdns = (0, multicast_dns_1.default)(opts);
this.mdns.setMaxListeners(0);
this.mdns.on('query', this.respondToQuery.bind(this));
this.errorCallback = errorCallback !== null && errorCallback !== void 0 ? errorCallback : function (err) { throw err; };
}
register(records) {
const shouldRegister = (record) => {
var subRegistry = this.registry[record.type];
if (!subRegistry) {
subRegistry = this.registry[record.type] = [];
}
else if (subRegistry.some(this.isDuplicateRecord(record))) {
return;
}
subRegistry.push(record);
};
if (Array.isArray(records)) {
records.forEach(shouldRegister);
}
else {
shouldRegister(records);
}
}
unregister(records) {
const shouldUnregister = (record) => {
let type = record.type;
if (!(type in this.registry)) {
return;
}
this.registry[type] = this.registry[type].filter((i) => i.name !== record.name);
};
if (Array.isArray(records)) {
records.forEach(shouldUnregister);
}
else {
shouldUnregister(records);
}
}
respondToQuery(query) {
let self = this;
query.questions.forEach((question) => {
var type = question.type;
var name = question.name;
var answers = type === 'ANY'
? Object.keys(self.registry).map(self.recordsFor.bind(self, name)).flat(1)
: self.recordsFor(name, type);
if (answers.length === 0)
return;
var additionals = [];
if (type !== 'ANY') {
answers.forEach((answer) => {
if (answer.type !== 'PTR')
return;
additionals = additionals
.concat(self.recordsFor(answer.data, 'SRV'))
.concat(self.recordsFor(answer.data, 'TXT'));
});
additionals
.filter(function (record) {
return record.type === 'SRV';
})
.map(function (record) {
return record.data.target;
})
.filter(this.unique())
.forEach(function (target) {
additionals = additionals
.concat(self.recordsFor(target, 'A'))
.concat(self.recordsFor(target, 'AAAA'));
});
}
self.mdns.respond({ answers: answers, additionals: additionals }, (err) => {
if (err) {
this.errorCallback(err);
}
});
});
}
recordsFor(name, type) {
if (!(type in this.registry)) {
return [];
}
return this.registry[type].filter((record) => {
var _name = ~name.indexOf('.') ? record.name : record.name.split('.')[0];
return (0, dns_equal_1.default)(_name, name);
});
}
isDuplicateRecord(a) {
return (b) => {
return a.type === b.type &&
a.name === b.name &&
(0, es6_1.default)(a.data, b.data);
};
}
unique() {
var set = [];
return (obj) => {
if (~set.indexOf(obj))
return false;
set.push(obj);
return true;
};
}
}
exports.Server = Server;
exports.default = Server;
//# sourceMappingURL=mdns-server.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"mdns-server.js","sourceRoot":"","sources":["../../src/lib/mdns-server.ts"],"names":[],"mappings":"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"}

14
my-app/node_modules/bonjour-service/dist/lib/registry.d.ts generated vendored Executable file
View file

@ -0,0 +1,14 @@
import Server from './mdns-server';
import Service, { ServiceConfig } from './service';
export declare class Registry {
private server;
private services;
constructor(server: Server);
publish(config: ServiceConfig): Service;
unpublishAll(callback: CallableFunction | undefined): void;
destroy(): void;
private probe;
private announce;
private teardown;
}
export default Registry;

143
my-app/node_modules/bonjour-service/dist/lib/registry.js generated vendored Executable file
View file

@ -0,0 +1,143 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Registry = void 0;
const dns_equal_1 = __importDefault(require("./utils/dns-equal"));
const service_1 = __importDefault(require("./service"));
const REANNOUNCE_MAX_MS = 60 * 60 * 1000;
const REANNOUNCE_FACTOR = 3;
const noop = function () { };
class Registry {
constructor(server) {
this.services = [];
this.server = server;
}
publish(config) {
function start(service, registry, opts) {
if (service.activated)
return;
service.activated = true;
registry.services.push(service);
if (!(service instanceof service_1.default))
return;
if (opts === null || opts === void 0 ? void 0 : opts.probe) {
registry.probe(registry.server.mdns, service, (exists) => {
if (exists) {
if (service.stop !== undefined)
service.stop();
console.log(new Error('Service name is already in use on the network'));
return;
}
registry.announce(registry.server, service);
});
}
else {
registry.announce(registry.server, service);
}
}
function stop(service, registry, callback) {
if (!callback)
callback = noop;
if (!service.activated)
return process.nextTick(callback);
if (!(service instanceof service_1.default))
return process.nextTick(callback);
registry.teardown(registry.server, service, callback);
const index = registry.services.indexOf(service);
if (index !== -1)
registry.services.splice(index, 1);
}
const service = new service_1.default(config);
service.start = start.bind(null, service, this);
service.stop = stop.bind(null, service, this);
service.start({ probe: config.probe !== false });
return service;
}
unpublishAll(callback) {
this.teardown(this.server, this.services, callback);
this.services = [];
}
destroy() {
this.services.map(service => service.destroyed = true);
}
probe(mdns, service, callback) {
var sent = false;
var retries = 0;
var timer;
const send = () => {
if (!service.activated || service.destroyed)
return;
mdns.query(service.fqdn, 'ANY', function () {
sent = true;
timer = setTimeout(++retries < 3 ? send : done, 250);
timer.unref();
});
};
const onresponse = (packet) => {
if (!sent)
return;
if (packet.answers.some(matchRR) || packet.additionals.some(matchRR))
done(true);
};
const matchRR = (rr) => {
return (0, dns_equal_1.default)(rr.name, service.fqdn);
};
const done = (exists) => {
mdns.removeListener('response', onresponse);
clearTimeout(timer);
callback(!!exists);
};
mdns.on('response', onresponse);
setTimeout(send, Math.random() * 250);
}
announce(server, service) {
var delay = 1000;
var packet = service.records();
server.register(packet);
const broadcast = () => {
if (!service.activated || service.destroyed)
return;
server.mdns.respond(packet, function () {
if (!service.published) {
service.activated = true;
service.published = true;
service.emit('up');
}
delay = delay * REANNOUNCE_FACTOR;
if (delay < REANNOUNCE_MAX_MS && !service.destroyed) {
setTimeout(broadcast, delay).unref();
}
});
};
broadcast();
}
teardown(server, services, callback) {
if (!Array.isArray(services))
services = [services];
services = services.filter((service) => service.activated);
var records = services.flatMap(function (service) {
service.activated = false;
var records = service.records();
records.forEach((record) => {
record.ttl = 0;
});
return records;
});
if (records.length === 0)
return callback && process.nextTick(callback);
server.unregister(records);
server.mdns.respond(records, function () {
services.forEach(function (service) {
service.published = false;
});
if (typeof callback === "function") {
callback.apply(null, arguments);
}
});
}
}
exports.Registry = Registry;
exports.default = Registry;
//# sourceMappingURL=registry.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"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"}

View file

@ -0,0 +1,7 @@
export interface ServiceType {
name?: string;
protocol?: 'tcp' | 'udp' | string | null | undefined;
subtype?: string | undefined;
}
export declare const toString: (data: ServiceType) => any;
export declare const toType: (string: string) => ServiceType;

View file

@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toType = exports.toString = void 0;
const Prefix = (name) => {
return '_' + name;
};
const AllowedProp = (key) => {
let keys = ['name', 'protocol', 'subtype'];
return keys.includes(key);
};
const toString = (data) => {
let formatted = {
name: data.name,
protocol: data.protocol,
subtype: data.subtype
};
let entries = Object.entries(formatted);
return entries
.filter(([key, val]) => AllowedProp(key) && val !== undefined)
.reduce((prev, [key, val]) => {
switch (typeof val) {
case 'object':
val.map((i) => prev.push(Prefix(i)));
break;
default:
prev.push(Prefix(val));
break;
}
return prev;
}, [])
.join('.');
};
exports.toString = toString;
const toType = (string) => {
let parts = string.split('.');
let subtype;
for (let i in parts) {
if (parts[i][0] !== '_')
continue;
parts[i] = parts[i].slice(1);
}
if (parts.includes('sub')) {
subtype = parts.shift();
parts.shift();
}
return {
name: parts.shift(),
protocol: parts.shift() || null,
subtype: subtype
};
};
exports.toType = toType;
//# sourceMappingURL=service-types.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"service-types.js","sourceRoot":"","sources":["../../src/lib/service-types.ts"],"names":[],"mappings":";;;AAcA,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE;IACpC,OAAO,GAAG,GAAG,IAAI,CAAA;AACrB,CAAC,CAAA;AAOD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;IACzC,IAAI,IAAI,GAAkB,CAAC,MAAM,EAAC,UAAU,EAAC,SAAS,CAAC,CAAA;IACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC,CAAA;AAOM,MAAM,QAAQ,GAAG,CAAC,IAAiB,EAAO,EAAE;IAE/C,IAAI,SAAS,GAAgB;QACzB,IAAI,EAAU,IAAI,CAAC,IAAI;QACvB,QAAQ,EAAM,IAAI,CAAC,QAAQ;QAC3B,OAAO,EAAM,IAAI,CAAC,OAAO;KAC5B,CAAA;IAED,IAAI,OAAO,GAAe,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACnD,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,EAAE;QACxB,QAAO,OAAO,GAAG,EAAE;YACf,KAAK,QAAQ;gBACT,GAAG,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5C,MAAK;YACT;gBACI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,MAAK;SACZ;QACD,OAAO,IAAI,CAAA;IACf,CAAC,EAAC,EAAE,CAAC;SACJ,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC,CAAA;AAvBY,QAAA,QAAQ,YAuBpB;AAOM,MAAM,MAAM,GAAG,CAAC,MAAc,EAAe,EAAE;IAElD,IAAI,KAAK,GAAkB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,OAA2B,CAAC;IAGhC,KAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAChB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,SAAQ;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KAC/B;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,KAAK,EAAE,CAAC;KACjB;IAGD,OAAO;QACH,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;QACnB,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI;QAC/B,OAAO,EAAE,OAAO;KACnB,CAAA;AACL,CAAC,CAAA;AAtBY,QAAA,MAAM,UAsBlB"}

56
my-app/node_modules/bonjour-service/dist/lib/service.d.ts generated vendored Executable file
View file

@ -0,0 +1,56 @@
/// <reference types="node" />
import KeyValue from './KeyValue';
import { EventEmitter } from 'events';
export interface ServiceConfig {
name: string;
type: string;
port: number;
protocol?: 'tcp' | 'udp';
host?: string;
fqdn?: string;
subtypes?: Array<string>;
txt?: KeyValue;
probe?: boolean;
disableIPv6?: boolean;
}
export interface ServiceRecord {
name: string;
type: 'PTR' | 'SRV' | 'TXT' | 'A' | 'AAAA';
ttl: number;
data: KeyValue | string | any;
}
export interface ServiceReferer {
address: string;
family: 'IPv4' | 'IPv6';
port: number;
size: number;
}
export declare class Service extends EventEmitter {
name: string;
type: string;
protocol: 'tcp' | 'udp';
port: number;
host: string;
fqdn: string;
txt?: any;
subtypes?: Array<string>;
addresses?: Array<string>;
referer?: ServiceReferer;
disableIPv6: boolean;
probe: boolean;
published: boolean;
activated: boolean;
destroyed: boolean;
start?: CallableFunction;
stop?: CallableFunction;
private txtService;
constructor(config: ServiceConfig);
records(): Array<ServiceRecord>;
private RecordPTR;
private RecordSubtypePTR;
private RecordSRV;
private RecordTXT;
private RecordA;
private RecordAAAA;
}
export default Service;

115
my-app/node_modules/bonjour-service/dist/lib/service.js generated vendored Executable file
View file

@ -0,0 +1,115 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Service = void 0;
const os_1 = __importDefault(require("os"));
const dns_txt_1 = __importDefault(require("./dns-txt"));
const events_1 = require("events");
const service_types_1 = require("./service-types");
const TLD = '.local';
class Service extends events_1.EventEmitter {
constructor(config) {
super();
this.probe = true;
this.published = false;
this.activated = false;
this.destroyed = false;
this.txtService = new dns_txt_1.default();
if (!config.name)
throw new Error('ServiceConfig requires `name` property to be set');
if (!config.type)
throw new Error('ServiceConfig requires `type` property to be set');
if (!config.port)
throw new Error('ServiceConfig requires `port` property to be set');
this.name = config.name.split('.').join('-');
this.protocol = config.protocol || 'tcp';
this.type = (0, service_types_1.toString)({ name: config.type, protocol: this.protocol });
this.port = config.port;
this.host = config.host || os_1.default.hostname();
this.fqdn = `${this.name}.${this.type}${TLD}`;
this.txt = config.txt;
this.subtypes = config.subtypes;
this.disableIPv6 = !!config.disableIPv6;
}
records() {
var records = [this.RecordPTR(this), this.RecordSRV(this), this.RecordTXT(this)];
for (let subtype of this.subtypes || []) {
records.push(this.RecordSubtypePTR(this, subtype));
}
let ifaces = Object.values(os_1.default.networkInterfaces());
for (let iface of ifaces) {
let addrs = iface;
for (let addr of addrs) {
if (addr.internal || addr.mac === '00:00:00:00:00:00')
continue;
switch (addr.family) {
case 'IPv4':
records.push(this.RecordA(this, addr.address));
break;
case 'IPv6':
if (this.disableIPv6)
break;
records.push(this.RecordAAAA(this, addr.address));
break;
}
}
}
return records;
}
RecordPTR(service) {
return {
name: `${service.type}${TLD}`,
type: 'PTR',
ttl: 28800,
data: service.fqdn
};
}
RecordSubtypePTR(service, subtype) {
return {
name: `_${subtype}._sub.${service.type}${TLD}`,
type: 'PTR',
ttl: 28800,
data: `${service.name}.${service.type}${TLD}`
};
}
RecordSRV(service) {
return {
name: service.fqdn,
type: 'SRV',
ttl: 120,
data: {
port: service.port,
target: service.host
}
};
}
RecordTXT(service) {
return {
name: service.fqdn,
type: 'TXT',
ttl: 4500,
data: this.txtService.encode(service.txt)
};
}
RecordA(service, ip) {
return {
name: service.host,
type: 'A',
ttl: 120,
data: ip
};
}
RecordAAAA(service, ip) {
return {
name: service.host,
type: 'AAAA',
ttl: 120,
data: ip
};
}
}
exports.Service = Service;
exports.default = Service;
//# sourceMappingURL=service.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/lib/service.ts"],"names":[],"mappings":"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"}

View file

@ -0,0 +1 @@
export default function dnsEqual(a: string, b: string): boolean;

View file

@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const capitalLetterRegex = /[A-Z]/g;
function toLowerCase(input) {
return input.toLowerCase();
}
function dnsEqual(a, b) {
const aFormatted = a.replace(capitalLetterRegex, toLowerCase);
const bFormatted = b.replace(capitalLetterRegex, toLowerCase);
return aFormatted === bFormatted;
}
exports.default = dnsEqual;
//# sourceMappingURL=dns-equal.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"dns-equal.js","sourceRoot":"","sources":["../../../src/lib/utils/dns-equal.ts"],"names":[],"mappings":";;AACA,MAAM,kBAAkB,GAAY,QAAQ,CAAA;AAE5C,SAAS,WAAW,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;AAC9B,CAAC;AAED,SAAwB,QAAQ,CAAC,CAAS,EAAE,CAAS;IACjD,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;IAE7D,OAAO,UAAU,KAAK,UAAU,CAAA;AACpC,CAAC;AALD,2BAKC"}

View file

@ -0,0 +1 @@
export default function equalTxt(a: Record<string, string>, b: Record<string, string>): boolean;

View file

@ -0,0 +1,17 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function equalTxt(a, b) {
if (a === undefined || b === undefined)
return false;
let aKeys = Object.keys(a);
let bKeys = Object.keys(b);
if (aKeys.length != bKeys.length)
return false;
for (let key of aKeys) {
if (a[key] != b[key])
return false;
}
return true;
}
exports.default = equalTxt;
//# sourceMappingURL=equal-txt.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"equal-txt.js","sourceRoot":"","sources":["../../../src/lib/utils/equal-txt.ts"],"names":[],"mappings":";;AAAA,SAAwB,QAAQ,CAAC,CAAyB,EAAE,CAAyB;IACjF,IAAG,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAC7C,KAAI,IAAI,GAAG,IAAI,KAAK,EAAE;QAClB,IAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;KACpC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AATD,2BASC"}

View file

@ -0,0 +1,4 @@
import KeyValue from '../KeyValue';
import Service from '../service';
declare const _default: (service: Service, txtQuery: KeyValue | undefined) => boolean;
export default _default;

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = (service, txtQuery) => {
if (txtQuery === undefined)
return true;
let serviceTxt = service.txt;
let query = Object.entries(txtQuery)
.map(([key, value]) => {
let queryValue = serviceTxt[key];
if (queryValue === undefined)
return false;
if (value != queryValue)
return false;
return true;
});
if (query.length == 0)
return true;
if (query.includes(false))
return false;
return true;
};
//# sourceMappingURL=filter-service.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"filter-service.js","sourceRoot":"","sources":["../../../src/lib/utils/filter-service.ts"],"names":[],"mappings":";;AAOA,kBAAe,CAAC,OAAgB,EAAE,QAA8B,EAAW,EAAE;IACzE,IAAG,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClB,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAChC,IAAG,UAAU,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACzC,IAAG,KAAK,IAAI,UAAU;YAAE,OAAO,KAAK,CAAA;QACpC,OAAO,IAAI,CAAA;IACf,CAAC,CAAC,CAAA;IACN,IAAG,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,IAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,OAAO,IAAI,CAAA;AACf,CAAC,CAAA"}

View file

@ -0,0 +1,3 @@
import KeyValue from '../KeyValue';
declare const _default: (data: KeyValue) => {};
export default _default;

View file

@ -0,0 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = (data) => Object.keys(data)
.filter((key) => !key.includes('binary'))
.reduce((cur, key) => { return Object.assign(cur, { [key]: data[key] }); }, {});
//# sourceMappingURL=filter-txt.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"filter-txt.js","sourceRoot":"","sources":["../../../src/lib/utils/filter-txt.ts"],"names":[],"mappings":";;AAMA,kBAAe,CAAC,IAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KACnD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACxC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAA,CAAC,EAAE,EAAE,CAAC,CAAA"}