-
-
Notifications
You must be signed in to change notification settings - Fork 231
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add a prefix in aedes module and drop ts functions (#768)
- Loading branch information
Showing
8 changed files
with
172 additions
and
163 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,3 @@ | ||
import { Aedes, AedesOptions } from './types/instance' | ||
|
||
export declare function aedes (options?: AedesOptions): Aedes | ||
export declare function Server (options?: AedesOptions): Aedes | ||
|
||
export * from './types/instance' | ||
export * from './types/packet' | ||
export * from './types/client' | ||
export default aedes | ||
/// <reference path="./types/instance.d.ts" /> | ||
/// <reference path="./types/client.d.ts" /> | ||
/// <reference path="./types/packet.d.ts" /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,32 @@ | ||
import { IncomingMessage } from 'http' | ||
import { PublishPacket, SubscribePacket, Subscription, Subscriptions, UnsubscribePacket } from './packet' | ||
import { Connection } from './instance' | ||
import { EventEmitter } from 'events' | ||
declare module 'client' { | ||
import { IncomingMessage } from 'node:http' | ||
import { PublishPacket, SubscribePacket, Subscription, Subscriptions, UnsubscribePacket } from 'aedes:packet' | ||
import { Connection } from 'aedes:server' | ||
import { EventEmitter } from 'node:events' | ||
|
||
export interface Client extends EventEmitter { | ||
id: Readonly<string> | ||
clean: Readonly<boolean> | ||
version: Readonly<number> | ||
conn: Connection | ||
req?: IncomingMessage | ||
connecting: Readonly<boolean> | ||
connected: Readonly<boolean> | ||
closed: Readonly<boolean> | ||
export interface Client extends EventEmitter { | ||
id: Readonly<string> | ||
clean: Readonly<boolean> | ||
version: Readonly<number> | ||
conn: Connection | ||
req?: IncomingMessage | ||
connecting: Readonly<boolean> | ||
connected: Readonly<boolean> | ||
closed: Readonly<boolean> | ||
|
||
on (event: 'connected', listener: () => void): this | ||
on (event: 'error', listener: (error: Error) => void): this | ||
on (event: 'connected', listener: () => void): this | ||
on (event: 'error', listener: (error: Error) => void): this | ||
|
||
publish (message: PublishPacket, callback?: (error?: Error) => void): void | ||
subscribe ( | ||
subscriptions: Subscriptions | Subscription | Subscription[] | SubscribePacket, | ||
callback?: (error?: Error) => void | ||
): void | ||
unsubscribe (topicObjects: Subscriptions | Subscription | Subscription[] | UnsubscribePacket, callback?: (error?: Error) => void): void | ||
close (callback?: () => void): void | ||
emptyOutgoingQueue (callback?: () => void): void | ||
publish (message: PublishPacket, callback?: (error?: Error) => void): void | ||
subscribe ( | ||
subscriptions: Subscriptions | Subscription | Subscription[] | SubscribePacket, | ||
callback?: (error?: Error) => void | ||
): void | ||
unsubscribe (topicObjects: Subscriptions | Subscription | Subscription[] | UnsubscribePacket, callback?: (error?: Error) => void): void | ||
close (callback?: () => void): void | ||
emptyOutgoingQueue (callback?: () => void): void | ||
} | ||
} | ||
declare module 'aedes:client' { | ||
export * from 'client' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,100 +1,100 @@ | ||
import { Duplex } from 'stream' | ||
import { Socket } from 'net' | ||
import { Client } from './client' | ||
import type { AedesPublishPacket, ConnectPacket, ConnackPacket, Subscription, PingreqPacket, PublishPacket, PubrelPacket } from './packet' | ||
import { EventEmitter } from 'events' | ||
|
||
type LastHearthbeatTimestamp = Date; | ||
|
||
export interface Brokers { | ||
[brokerId: string]: LastHearthbeatTimestamp; | ||
} | ||
|
||
export type Connection = Duplex | Socket | ||
|
||
/* eslint no-unused-vars: 0 */ | ||
export const enum AuthErrorCode { | ||
UNNACCEPTABLE_PROTOCOL = 1, | ||
IDENTIFIER_REJECTED = 2, | ||
SERVER_UNAVAILABLE = 3, | ||
BAD_USERNAME_OR_PASSWORD = 4, | ||
NOT_AUTHORIZED = 5 | ||
} | ||
|
||
export type AuthenticateError = Error & { returnCode: AuthErrorCode } | ||
|
||
type PreConnectHandler = (client: Client, packet: ConnectPacket, callback: (error: Error | null, success: boolean) => void) => void | ||
|
||
type AuthenticateHandler = ( | ||
client: Client, | ||
username: Readonly<string>, | ||
password: Readonly<Buffer>, | ||
done: (error: AuthenticateError | null, success: boolean | null) => void | ||
) => void | ||
|
||
type AuthorizePublishHandler = (client: Client, packet: PublishPacket, callback: (error?: Error | null) => void) => void | ||
|
||
type AuthorizeSubscribeHandler = (client: Client, subscription: Subscription, callback: (error: Error | null, subscription?: Subscription | null) => void) => void | ||
|
||
type AuthorizeForwardHandler = (client: Client, packet: AedesPublishPacket) => AedesPublishPacket | null | void | ||
|
||
type PublishedHandler = (packet: AedesPublishPacket, client: Client, callback: (error?: Error | null) => void) => void | ||
|
||
export interface AedesOptions { | ||
mq?: any | ||
id?: string | ||
persistence?: any | ||
concurrency?: number | ||
heartbeatInterval?: number | ||
connectTimeout?: number | ||
queueLimit?: number | ||
maxClientsIdLength?: number | ||
preConnect?: PreConnectHandler | ||
authenticate?: AuthenticateHandler | ||
authorizePublish?: AuthorizePublishHandler | ||
authorizeSubscribe?: AuthorizeSubscribeHandler | ||
authorizeForward?: AuthorizeForwardHandler | ||
published?: PublishedHandler | ||
declare module 'aedes' { | ||
import { Duplex } from 'node:stream' | ||
import { Socket } from 'node:net' | ||
import { Client } from 'aedes:client' | ||
import type { AedesPublishPacket, ConnectPacket, ConnackPacket, Subscription, PingreqPacket, PublishPacket, PubrelPacket } from 'aedes:packet' | ||
import { EventEmitter } from 'node:events' | ||
|
||
type LastHearthbeatTimestamp = Date; | ||
|
||
export interface Brokers { | ||
[brokerId: string]: LastHearthbeatTimestamp; | ||
} | ||
|
||
export type Connection = Duplex | Socket | ||
|
||
/* eslint no-unused-vars: 0 */ | ||
export const enum AuthErrorCode { | ||
UNNACCEPTABLE_PROTOCOL = 1, | ||
IDENTIFIER_REJECTED = 2, | ||
SERVER_UNAVAILABLE = 3, | ||
BAD_USERNAME_OR_PASSWORD = 4, | ||
NOT_AUTHORIZED = 5 | ||
} | ||
|
||
export type AuthenticateError = Error & { returnCode: AuthErrorCode } | ||
|
||
type PreConnectHandler = (client: Client, packet: ConnectPacket, callback: (error: Error | null, success: boolean) => void) => void | ||
|
||
type AuthenticateHandler = ( | ||
client: Client, | ||
username: Readonly<string>, | ||
password: Readonly<Buffer>, | ||
done: (error: AuthenticateError | null, success: boolean | null) => void | ||
) => void | ||
|
||
type AuthorizePublishHandler = (client: Client, packet: PublishPacket, callback: (error?: Error | null) => void) => void | ||
|
||
type AuthorizeSubscribeHandler = (client: Client, subscription: Subscription, callback: (error: Error | null, subscription?: Subscription | null) => void) => void | ||
|
||
type AuthorizeForwardHandler = (client: Client, packet: AedesPublishPacket) => AedesPublishPacket | null | void | ||
|
||
type PublishedHandler = (packet: AedesPublishPacket, client: Client, callback: (error?: Error | null) => void) => void | ||
|
||
export interface AedesOptions { | ||
mq?: any | ||
id?: string | ||
persistence?: any | ||
concurrency?: number | ||
heartbeatInterval?: number | ||
connectTimeout?: number | ||
queueLimit?: number | ||
maxClientsIdLength?: number | ||
preConnect?: PreConnectHandler | ||
authenticate?: AuthenticateHandler | ||
authorizePublish?: AuthorizePublishHandler | ||
authorizeSubscribe?: AuthorizeSubscribeHandler | ||
authorizeForward?: AuthorizeForwardHandler | ||
published?: PublishedHandler | ||
} | ||
|
||
export default class Aedes extends EventEmitter { | ||
id: Readonly<string> | ||
connectedClients: Readonly<number> | ||
closed: Readonly<boolean> | ||
brokers: Readonly<Brokers> | ||
|
||
constructor(option?: AedesOptions) | ||
handle: (stream: Connection) => Client | ||
|
||
on (event: 'closed', listener: () => void): this | ||
on (event: 'client' | 'clientReady' | 'clientDisconnect' | 'keepaliveTimeout', listener: (client: Client) => void): this | ||
on (event: 'clientError' | 'connectionError', listener: (client: Client, error: Error) => void): this | ||
on (event: 'connackSent', listener: (packet: ConnackPacket, client: Client) => void): this | ||
on (event: 'ping', listener: (packet: PingreqPacket, client: Client) => void): this | ||
on (event: 'publish', listener: (packet: AedesPublishPacket, client: Client | null) => void): this | ||
on (event: 'ack', listener: (packet: PublishPacket | PubrelPacket, client: Client) => void): this | ||
on (event: 'subscribe', listener: (subscriptions: Subscription[], client: Client) => void): this | ||
on (event: 'unsubscribe', listener: (unsubscriptions: string[], client: Client) => void): this | ||
|
||
publish (packet: PublishPacket, callback: (error?: Error) => void): void | ||
subscribe (topic: string, deliverfunc: (packet: AedesPublishPacket, callback: () => void) => void, callback: () => void): void | ||
unsubscribe (topic: string, deliverfunc: (packet: AedesPublishPacket, callback: () => void) => void, callback: () => void): void | ||
close (callback?: () => void): void | ||
|
||
preConnect: PreConnectHandler | ||
authenticate: AuthenticateHandler | ||
authorizePublish: AuthorizePublishHandler | ||
authorizeSubscribe: AuthorizeSubscribeHandler | ||
authorizeForward: AuthorizeForwardHandler | ||
published: PublishedHandler | ||
} | ||
|
||
export { Aedes } | ||
// export function createServer(options?: AedesOptions): Aedes | ||
} | ||
|
||
export interface Aedes extends EventEmitter { | ||
id: Readonly<string> | ||
connectedClients: Readonly<number> | ||
closed: Readonly<boolean> | ||
brokers: Readonly<Brokers> | ||
|
||
handle: (stream: Connection) => Client | ||
|
||
on (event: 'closed', listener: () => void): this | ||
on (event: 'client' | 'clientReady' | 'clientDisconnect' | 'keepaliveTimeout', listener: (client: Client) => void): this | ||
on (event: 'clientError' | 'connectionError', listener: (client: Client, error: Error) => void): this | ||
on (event: 'connackSent', listener: (packet: ConnackPacket, client: Client) => void): this | ||
on (event: 'ping', listener: (packet: PingreqPacket, client: Client) => void): this | ||
on (event: 'publish', listener: (packet: AedesPublishPacket, client: Client | null) => void): this | ||
on (event: 'ack', listener: (packet: PublishPacket | PubrelPacket, client: Client) => void): this | ||
on (event: 'subscribe', listener: (subscriptions: Subscription[], client: Client) => void): this | ||
on (event: 'unsubscribe', listener: (unsubscriptions: string[], client: Client) => void): this | ||
|
||
publish ( | ||
packet: PublishPacket, | ||
callback: (error?: Error) => void | ||
): void | ||
subscribe ( | ||
topic: string, | ||
deliverfunc: (packet: AedesPublishPacket, callback: () => void) => void, | ||
callback: () => void | ||
): void | ||
unsubscribe ( | ||
topic: string, | ||
deliverfunc: (packet: AedesPublishPacket, callback: () => void) => void, | ||
callback: () => void | ||
): void | ||
close (callback?: () => void): void | ||
|
||
preConnect: PreConnectHandler | ||
authenticate: AuthenticateHandler | ||
authorizePublish: AuthorizePublishHandler | ||
authorizeSubscribe: AuthorizeSubscribeHandler | ||
authorizeForward: AuthorizeForwardHandler | ||
published: PublishedHandler | ||
declare module 'aedes:server' { | ||
export * from 'aedes' | ||
export { default } from 'aedes' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,23 @@ | ||
import { AedesPacket } from 'aedes-packet' | ||
import { IConnackPacket, IConnectPacket, IPingreqPacket, IPublishPacket, IPubrelPacket, ISubscribePacket, ISubscription, IUnsubscribePacket } from 'mqtt-packet' | ||
import { Client } from './client' | ||
declare module 'packet' { | ||
import { AedesPacket } from 'aedes-packet' | ||
import { IConnackPacket, IConnectPacket, IPingreqPacket, IPublishPacket, IPubrelPacket, ISubscribePacket, ISubscription, IUnsubscribePacket } from 'mqtt-packet' | ||
import { Client } from 'aedes:client' | ||
|
||
export type SubscribePacket = ISubscribePacket & { cmd: 'subscribe' } | ||
export type UnsubscribePacket = IUnsubscribePacket & { cmd: 'unsubscribe' } | ||
export type Subscription = ISubscription & { clientId?: Client['id'] } | ||
export type Subscriptions = { subscriptions: Subscription[] } | ||
export type SubscribePacket = ISubscribePacket & { cmd: 'subscribe' } | ||
export type UnsubscribePacket = IUnsubscribePacket & { cmd: 'unsubscribe' } | ||
export type Subscription = ISubscription & { clientId?: Client['id'] } | ||
export type Subscriptions = { subscriptions: Subscription[] } | ||
|
||
export type PublishPacket = IPublishPacket & { cmd: 'publish' } | ||
export type PublishPacket = IPublishPacket & { cmd: 'publish' } | ||
|
||
export type ConnectPacket = IConnectPacket & { cmd: 'connect' } | ||
export type ConnackPacket = IConnackPacket & { cmd: 'connack' } | ||
export type ConnectPacket = IConnectPacket & { cmd: 'connect' } | ||
export type ConnackPacket = IConnackPacket & { cmd: 'connack' } | ||
|
||
export type PubrelPacket = IPubrelPacket & { cmd: 'pubrel' } | ||
export type PingreqPacket = IPingreqPacket & { cmd: 'pingreq' } | ||
export type PubrelPacket = IPubrelPacket & { cmd: 'pubrel' } | ||
export type PingreqPacket = IPingreqPacket & { cmd: 'pingreq' } | ||
|
||
export type AedesPublishPacket = PublishPacket & AedesPacket | ||
export type AedesPublishPacket = PublishPacket & AedesPacket | ||
} | ||
declare module 'aedes:packet' { | ||
export * from 'packet' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,15 @@ | ||
{ | ||
"compilerOptions": { | ||
"module": "commonjs", | ||
"target": "es6", | ||
"module": "commonjs", | ||
"noEmit": true, | ||
"strict": true | ||
"strict": true, | ||
"removeComments": true, | ||
"typeRoots" : ["../types", "../node_modules/@types/"] | ||
}, | ||
"include": [ | ||
"/test/types/*.test-d.ts", | ||
"/types/*.d.ts", | ||
"./test/types/*.test-d.ts", | ||
"./types/*.d.ts", | ||
"aedes.d.ts" | ||
] | ||
} |