Renamed PathEventEmitter to follow convention
All checks were successful
Build / Build NPM Project (push) Successful in 27s
Build / Tag Version (push) Successful in 7s
Build / Publish Documentation (push) Successful in 27s

This commit is contained in:
Zakary Timson 2024-10-14 14:09:51 -04:00
parent 2fda11f3b7
commit 23df6ad265
3 changed files with 26 additions and 26 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.19.0", "version": "0.19.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.19.0", "version": "0.19.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"var-persist": "^1.0.1" "var-persist": "^1.0.1"

View File

@ -1,6 +1,6 @@
{ {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.19.1", "version": "0.19.2",
"description": "Utility library", "description": "Utility library",
"author": "Zak Timson", "author": "Zak Timson",
"license": "MIT", "license": "MIT",

View File

@ -14,16 +14,16 @@ import {ASet} from './aset.ts';
export type Method = '*' | 'n' | 'c' | 'r' | 'u' | 'd' | 'x'; export type Method = '*' | 'n' | 'c' | 'r' | 'u' | 'd' | 'x';
/** /**
* Shorthand for creating PathedEvent from a string * Shorthand for creating Event from a string
* *
* @example * @example
* ```ts * ```ts
* const event: PathedEvent = PE`users/system:*`; * const event: Event = PE`users/system:*`;
* ``` * ```
* *
* @param {TemplateStringsArray} str String that will be parsed into PathedEvent * @param {TemplateStringsArray} str String that will be parsed into Event
* @param {string} args * @param {string} args
* @return {PathEvent} PathedEvent object * @return {PathEvent} Event object
*/ */
export function PE(str: TemplateStringsArray, ...args: string[]) { export function PE(str: TemplateStringsArray, ...args: string[]) {
const combined = []; const combined = [];
@ -35,7 +35,7 @@ export function PE(str: TemplateStringsArray, ...args: string[]) {
} }
/** /**
* Shorthand for creating PathedEvent strings, ensures paths are correct * Shorthand for creating Event strings, ensures paths are correct
* *
* @param {TemplateStringsArray} str * @param {TemplateStringsArray} str
* @param {string} args * @param {string} args
@ -53,8 +53,8 @@ export function PES(str: TemplateStringsArray, ...args: any[]) {
} }
/** /**
* A pathed event broken down into its core components for easy processing * A event broken down into its core components for easy processing
* PathedEvent Structure: `module/path/name:property:method` * Event Structure: `module/path/name:property:method`
* Example: `users/system:crud` or `storage/some/path/file.txt:r` * Example: `users/system:crud` or `storage/some/path/file.txt:r`
*/ */
export class PathEvent { export class PathEvent {
@ -81,9 +81,9 @@ export class PathEvent {
/** Delete method specified */ /** Delete method specified */
delete!: boolean; delete!: boolean;
constructor(pathedEvent: string | PathEvent) { constructor(Event: string | PathEvent) {
if(typeof pathedEvent == 'object') return Object.assign(this, pathedEvent); if(typeof Event == 'object') return Object.assign(this, Event);
let [p, scope, method] = pathedEvent.split(':'); let [p, scope, method] = Event.split(':');
if(!method) method = scope || '*'; if(!method) method = scope || '*';
if(p == '*' || !p && method == '*') { if(p == '*' || !p && method == '*') {
p = ''; p = '';
@ -104,10 +104,10 @@ export class PathEvent {
} }
/** /**
* Combine multiple pathed events into one parsed object. Longest path takes precedent, but all subsequent methods are * Combine multiple events into one parsed object. Longest path takes precedent, but all subsequent methods are
* combined until a "none" is reached * combined until a "none" is reached
* *
* @param {string | PathEvent} paths PathedEvents as strings or pre-parsed * @param {string | PathEvent} paths Events as strings or pre-parsed
* @return {PathEvent} Final combined permission * @return {PathEvent} Final combined permission
*/ */
static combine(paths: (string | PathEvent)[]): PathEvent { static combine(paths: (string | PathEvent)[]): PathEvent {
@ -138,7 +138,7 @@ export class PathEvent {
/** /**
* Squash 2 sets of paths & return true if any overlap is found * Squash 2 sets of paths & return true if any overlap is found
* *
* @param {string | PathEvent | (string | PathEvent)[]} target Array of PathedEvents as strings or pre-parsed * @param {string | PathEvent | (string | PathEvent)[]} target Array of Events as strings or pre-parsed
* @param has Target must have at least one of these path * @param has Target must have at least one of these path
* @return {boolean} Whether there is any overlap * @return {boolean} Whether there is any overlap
*/ */
@ -157,7 +157,7 @@ export class PathEvent {
/** /**
* Squash 2 sets of paths & return true if the target has all paths * Squash 2 sets of paths & return true if the target has all paths
* *
* @param {string | PathEvent | (string | PathEvent)[]} target Array of PathedEvents as strings or pre-parsed * @param {string | PathEvent | (string | PathEvent)[]} target Array of Events as strings or pre-parsed
* @param has Target must have all these paths * @param has Target must have all these paths
* @return {boolean} Whether there is any overlap * @return {boolean} Whether there is any overlap
*/ */
@ -168,7 +168,7 @@ export class PathEvent {
/** /**
* Same as `has` but raises an error if there is no overlap * Same as `has` but raises an error if there is no overlap
* *
* @param {string | string[]} target Array of PathedEvents as strings or pre-parsed * @param {string | string[]} target Array of Events as strings or pre-parsed
* @param has Target must have at least one of these path * @param has Target must have at least one of these path
*/ */
static hasFatal(target: string | PathEvent | (string | PathEvent)[], ...has: (string | PathEvent)[]): void { static hasFatal(target: string | PathEvent | (string | PathEvent)[], ...has: (string | PathEvent)[]): void {
@ -178,7 +178,7 @@ export class PathEvent {
/** /**
* Same as `hasAll` but raises an error if the target is missing any paths * Same as `hasAll` but raises an error if the target is missing any paths
* *
* @param {string | string[]} target Array of PathedEvents as strings or pre-parsed * @param {string | string[]} target Array of Events as strings or pre-parsed
* @param has Target must have all these paths * @param has Target must have all these paths
*/ */
static hasAllFatal(target: string | PathEvent | (string | PathEvent)[], ...has: (string | PathEvent)[]): void { static hasAllFatal(target: string | PathEvent | (string | PathEvent)[], ...has: (string | PathEvent)[]): void {
@ -186,11 +186,11 @@ export class PathEvent {
} }
/** /**
* Create pathed event string from its components * Create event string from its components
* *
* @param {string | string[]} path Event path * @param {string | string[]} path Event path
* @param {Method} methods Event method * @param {Method} methods Event method
* @return {string} String representation of PathedEvent * @return {string} String representation of Event
*/ */
static toString(path: string | string[], methods: Method | Method[]): string { static toString(path: string | string[], methods: Method | Method[]): string {
let p = makeArray(path).filter(p => p != null).join('/'); let p = makeArray(path).filter(p => p != null).join('/');
@ -199,9 +199,9 @@ export class PathEvent {
} }
/** /**
* Create pathed event string from its components * Create event string from its components
* *
* @return {string} String representation of PathedEvent * @return {string} String representation of Event
*/ */
toString() { toString() {
return PathEvent.toString(this.fullPath, this.methods); return PathEvent.toString(this.fullPath, this.methods);
@ -211,7 +211,7 @@ export class PathEvent {
export type PathListener = (event: PathEvent, ...args: any[]) => any; export type PathListener = (event: PathEvent, ...args: any[]) => any;
export type PathUnsubscribe = () => void; export type PathUnsubscribe = () => void;
export interface IPathedEventEmitter { export interface IPathEventEmitter {
emit(event: string, ...args: any[]): void; emit(event: string, ...args: any[]): void;
off(listener: PathListener): void; off(listener: PathListener): void;
on(event: string, listener: PathListener): PathUnsubscribe; on(event: string, listener: PathListener): PathUnsubscribe;
@ -222,7 +222,7 @@ export interface IPathedEventEmitter {
/** /**
* Event emitter that uses paths allowing listeners to listen to different combinations of modules, paths & methods * Event emitter that uses paths allowing listeners to listen to different combinations of modules, paths & methods
*/ */
export class PathEventEmitter implements IPathedEventEmitter{ export class PathEventEmitter implements IPathEventEmitter{
private listeners: [PathEvent, PathListener][] = []; private listeners: [PathEvent, PathListener][] = [];
emit(event: string | PathEvent, ...args: any[]) { emit(event: string | PathEvent, ...args: any[]) {
@ -250,7 +250,7 @@ export class PathEventEmitter implements IPathedEventEmitter{
}); });
} }
relayEvents(emitter: IPathedEventEmitter) { relayEvents(emitter: IPathEventEmitter) {
emitter.on('*', (event, ...args) => this.emit(event, ...args)); emitter.on('*', (event, ...args) => this.emit(event, ...args));
} }
} }