@hyphen/react-sdk 1.0.4 → 1.1.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.
Files changed (3) hide show
  1. package/dist/index.cjs +701 -12
  2. package/dist/index.js +701 -10
  3. package/package.json +18 -19
package/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +17,7 @@ var __copyProps = (to, from, except, desc) => {
16
17
  return to;
17
18
  };
18
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
19
21
 
20
22
  // src/index.ts
21
23
  var index_exports = {};
@@ -28,26 +30,708 @@ __export(index_exports, {
28
30
  });
29
31
  module.exports = __toCommonJS(index_exports);
30
32
 
31
- // node_modules/.pnpm/@hyphen+browser-sdk@1.0.6/node_modules/@hyphen/browser-sdk/dist/index.js
32
- var import_hookified = require("hookified");
33
+ // node_modules/.pnpm/hookified@1.15.1/node_modules/hookified/dist/node/index.js
34
+ var Eventified = class {
35
+ constructor(options) {
36
+ __publicField(this, "_eventListeners");
37
+ __publicField(this, "_maxListeners");
38
+ __publicField(this, "_logger");
39
+ __publicField(this, "_throwOnEmitError", false);
40
+ __publicField(this, "_throwOnEmptyListeners", false);
41
+ __publicField(this, "_errorEvent", "error");
42
+ this._eventListeners = /* @__PURE__ */ new Map();
43
+ this._maxListeners = 100;
44
+ this._logger = options?.logger;
45
+ if (options?.throwOnEmitError !== void 0) {
46
+ this._throwOnEmitError = options.throwOnEmitError;
47
+ }
48
+ if (options?.throwOnEmptyListeners !== void 0) {
49
+ this._throwOnEmptyListeners = options.throwOnEmptyListeners;
50
+ }
51
+ }
52
+ /**
53
+ * Gets the logger
54
+ * @returns {Logger}
55
+ */
56
+ get logger() {
57
+ return this._logger;
58
+ }
59
+ /**
60
+ * Sets the logger
61
+ * @param {Logger} logger
62
+ */
63
+ set logger(logger) {
64
+ this._logger = logger;
65
+ }
66
+ /**
67
+ * Gets whether an error should be thrown when an emit throws an error. Default is false and only emits an error event.
68
+ * @returns {boolean}
69
+ */
70
+ get throwOnEmitError() {
71
+ return this._throwOnEmitError;
72
+ }
73
+ /**
74
+ * Sets whether an error should be thrown when an emit throws an error. Default is false and only emits an error event.
75
+ * @param {boolean} value
76
+ */
77
+ set throwOnEmitError(value) {
78
+ this._throwOnEmitError = value;
79
+ }
80
+ /**
81
+ * Gets whether an error should be thrown when emitting 'error' event with no listeners. Default is false.
82
+ * @returns {boolean}
83
+ */
84
+ get throwOnEmptyListeners() {
85
+ return this._throwOnEmptyListeners;
86
+ }
87
+ /**
88
+ * Sets whether an error should be thrown when emitting 'error' event with no listeners. Default is false.
89
+ * @param {boolean} value
90
+ */
91
+ set throwOnEmptyListeners(value) {
92
+ this._throwOnEmptyListeners = value;
93
+ }
94
+ /**
95
+ * Adds a handler function for a specific event that will run only once
96
+ * @param {string | symbol} eventName
97
+ * @param {EventListener} listener
98
+ * @returns {IEventEmitter} returns the instance of the class for chaining
99
+ */
100
+ once(eventName, listener) {
101
+ const onceListener = (...arguments_) => {
102
+ this.off(eventName, onceListener);
103
+ listener(...arguments_);
104
+ };
105
+ this.on(eventName, onceListener);
106
+ return this;
107
+ }
108
+ /**
109
+ * Gets the number of listeners for a specific event. If no event is provided, it returns the total number of listeners
110
+ * @param {string} eventName The event name. Not required
111
+ * @returns {number} The number of listeners
112
+ */
113
+ listenerCount(eventName) {
114
+ if (eventName === void 0) {
115
+ return this.getAllListeners().length;
116
+ }
117
+ const listeners = this._eventListeners.get(eventName);
118
+ return listeners ? listeners.length : 0;
119
+ }
120
+ /**
121
+ * Gets an array of event names
122
+ * @returns {Array<string | symbol>} An array of event names
123
+ */
124
+ eventNames() {
125
+ return [...this._eventListeners.keys()];
126
+ }
127
+ /**
128
+ * Gets an array of listeners for a specific event. If no event is provided, it returns all listeners
129
+ * @param {string} [event] (Optional) The event name
130
+ * @returns {EventListener[]} An array of listeners
131
+ */
132
+ rawListeners(event) {
133
+ if (event === void 0) {
134
+ return this.getAllListeners();
135
+ }
136
+ return this._eventListeners.get(event) ?? [];
137
+ }
138
+ /**
139
+ * Prepends a listener to the beginning of the listeners array for the specified event
140
+ * @param {string | symbol} eventName
141
+ * @param {EventListener} listener
142
+ * @returns {IEventEmitter} returns the instance of the class for chaining
143
+ */
144
+ prependListener(eventName, listener) {
145
+ const listeners = this._eventListeners.get(eventName) ?? [];
146
+ listeners.unshift(listener);
147
+ this._eventListeners.set(eventName, listeners);
148
+ return this;
149
+ }
150
+ /**
151
+ * Prepends a one-time listener to the beginning of the listeners array for the specified event
152
+ * @param {string | symbol} eventName
153
+ * @param {EventListener} listener
154
+ * @returns {IEventEmitter} returns the instance of the class for chaining
155
+ */
156
+ prependOnceListener(eventName, listener) {
157
+ const onceListener = (...arguments_) => {
158
+ this.off(eventName, onceListener);
159
+ listener(...arguments_);
160
+ };
161
+ this.prependListener(eventName, onceListener);
162
+ return this;
163
+ }
164
+ /**
165
+ * Gets the maximum number of listeners that can be added for a single event
166
+ * @returns {number} The maximum number of listeners
167
+ */
168
+ maxListeners() {
169
+ return this._maxListeners;
170
+ }
171
+ /**
172
+ * Adds a listener for a specific event. It is an alias for the on() method
173
+ * @param {string | symbol} event
174
+ * @param {EventListener} listener
175
+ * @returns {IEventEmitter} returns the instance of the class for chaining
176
+ */
177
+ addListener(event, listener) {
178
+ this.on(event, listener);
179
+ return this;
180
+ }
181
+ /**
182
+ * Adds a listener for a specific event
183
+ * @param {string | symbol} event
184
+ * @param {EventListener} listener
185
+ * @returns {IEventEmitter} returns the instance of the class for chaining
186
+ */
187
+ on(event, listener) {
188
+ if (!this._eventListeners.has(event)) {
189
+ this._eventListeners.set(event, []);
190
+ }
191
+ const listeners = this._eventListeners.get(event);
192
+ if (listeners) {
193
+ if (listeners.length >= this._maxListeners) {
194
+ console.warn(
195
+ `MaxListenersExceededWarning: Possible event memory leak detected. ${listeners.length + 1} ${event} listeners added. Use setMaxListeners() to increase limit.`
196
+ );
197
+ }
198
+ listeners.push(listener);
199
+ }
200
+ return this;
201
+ }
202
+ /**
203
+ * Removes a listener for a specific event. It is an alias for the off() method
204
+ * @param {string | symbol} event
205
+ * @param {EventListener} listener
206
+ * @returns {IEventEmitter} returns the instance of the class for chaining
207
+ */
208
+ removeListener(event, listener) {
209
+ this.off(event, listener);
210
+ return this;
211
+ }
212
+ /**
213
+ * Removes a listener for a specific event
214
+ * @param {string | symbol} event
215
+ * @param {EventListener} listener
216
+ * @returns {IEventEmitter} returns the instance of the class for chaining
217
+ */
218
+ off(event, listener) {
219
+ const listeners = this._eventListeners.get(event) ?? [];
220
+ const index = listeners.indexOf(listener);
221
+ if (index !== -1) {
222
+ listeners.splice(index, 1);
223
+ }
224
+ if (listeners.length === 0) {
225
+ this._eventListeners.delete(event);
226
+ }
227
+ return this;
228
+ }
229
+ /**
230
+ * Calls all listeners for a specific event
231
+ * @param {string | symbol} event
232
+ * @param arguments_ The arguments to pass to the listeners
233
+ * @returns {boolean} Returns true if the event had listeners, false otherwise
234
+ */
235
+ emit(event, ...arguments_) {
236
+ let result = false;
237
+ const listeners = this._eventListeners.get(event);
238
+ if (listeners && listeners.length > 0) {
239
+ for (const listener of listeners) {
240
+ listener(...arguments_);
241
+ result = true;
242
+ }
243
+ }
244
+ if (event === this._errorEvent) {
245
+ const error = arguments_[0] instanceof Error ? arguments_[0] : new Error(`${arguments_[0]}`);
246
+ if (this._throwOnEmitError && !result) {
247
+ throw error;
248
+ } else {
249
+ if (this.listeners(this._errorEvent).length === 0 && this._throwOnEmptyListeners === true) {
250
+ throw error;
251
+ }
252
+ }
253
+ }
254
+ this.sendLog(event, arguments_);
255
+ return result;
256
+ }
257
+ /**
258
+ * Gets all listeners for a specific event. If no event is provided, it returns all listeners
259
+ * @param {string} [event] (Optional) The event name
260
+ * @returns {EventListener[]} An array of listeners
261
+ */
262
+ listeners(event) {
263
+ return this._eventListeners.get(event) ?? [];
264
+ }
265
+ /**
266
+ * Removes all listeners for a specific event. If no event is provided, it removes all listeners
267
+ * @param {string} [event] (Optional) The event name
268
+ * @returns {IEventEmitter} returns the instance of the class for chaining
269
+ */
270
+ removeAllListeners(event) {
271
+ if (event !== void 0) {
272
+ this._eventListeners.delete(event);
273
+ } else {
274
+ this._eventListeners.clear();
275
+ }
276
+ return this;
277
+ }
278
+ /**
279
+ * Sets the maximum number of listeners that can be added for a single event
280
+ * @param {number} n The maximum number of listeners
281
+ * @returns {void}
282
+ */
283
+ setMaxListeners(n) {
284
+ this._maxListeners = n;
285
+ for (const listeners of this._eventListeners.values()) {
286
+ if (listeners.length > n) {
287
+ listeners.splice(n);
288
+ }
289
+ }
290
+ }
291
+ /**
292
+ * Gets all listeners
293
+ * @returns {EventListener[]} An array of listeners
294
+ */
295
+ getAllListeners() {
296
+ let result = [];
297
+ for (const listeners of this._eventListeners.values()) {
298
+ result = [...result, ...listeners];
299
+ }
300
+ return result;
301
+ }
302
+ /**
303
+ * Sends a log message using the configured logger based on the event name
304
+ * @param {string | symbol} eventName - The event name that determines the log level
305
+ * @param {unknown} data - The data to log
306
+ */
307
+ sendLog(eventName, data) {
308
+ if (!this._logger) {
309
+ return;
310
+ }
311
+ let message;
312
+ if (typeof data === "string") {
313
+ message = data;
314
+ } else if (Array.isArray(data) && data.length > 0 && data[0] instanceof Error) {
315
+ message = data[0].message;
316
+ } else if (data instanceof Error) {
317
+ message = data.message;
318
+ } else if (Array.isArray(data) && data.length > 0 && typeof data[0]?.message === "string") {
319
+ message = data[0].message;
320
+ } else {
321
+ message = JSON.stringify(data);
322
+ }
323
+ switch (eventName) {
324
+ case "error": {
325
+ this._logger.error?.(message, { event: eventName, data });
326
+ break;
327
+ }
328
+ case "warn": {
329
+ this._logger.warn?.(message, { event: eventName, data });
330
+ break;
331
+ }
332
+ case "trace": {
333
+ this._logger.trace?.(message, { event: eventName, data });
334
+ break;
335
+ }
336
+ case "debug": {
337
+ this._logger.debug?.(message, { event: eventName, data });
338
+ break;
339
+ }
340
+ case "fatal": {
341
+ this._logger.fatal?.(message, { event: eventName, data });
342
+ break;
343
+ }
344
+ default: {
345
+ this._logger.info?.(message, { event: eventName, data });
346
+ break;
347
+ }
348
+ }
349
+ }
350
+ };
351
+ var Hookified = class extends Eventified {
352
+ constructor(options) {
353
+ super({
354
+ logger: options?.logger,
355
+ throwOnEmitError: options?.throwOnEmitError,
356
+ throwOnEmptyListeners: options?.throwOnEmptyListeners
357
+ });
358
+ __publicField(this, "_hooks");
359
+ __publicField(this, "_throwOnHookError", false);
360
+ __publicField(this, "_enforceBeforeAfter", false);
361
+ __publicField(this, "_deprecatedHooks");
362
+ __publicField(this, "_allowDeprecated", true);
363
+ this._hooks = /* @__PURE__ */ new Map();
364
+ this._deprecatedHooks = options?.deprecatedHooks ? new Map(options.deprecatedHooks) : /* @__PURE__ */ new Map();
365
+ if (options?.throwOnHookError !== void 0) {
366
+ this._throwOnHookError = options.throwOnHookError;
367
+ } else if (options?.throwHookErrors !== void 0) {
368
+ this._throwOnHookError = options.throwHookErrors;
369
+ }
370
+ if (options?.enforceBeforeAfter !== void 0) {
371
+ this._enforceBeforeAfter = options.enforceBeforeAfter;
372
+ }
373
+ if (options?.allowDeprecated !== void 0) {
374
+ this._allowDeprecated = options.allowDeprecated;
375
+ }
376
+ }
377
+ /**
378
+ * Gets all hooks
379
+ * @returns {Map<string, Hook[]>}
380
+ */
381
+ get hooks() {
382
+ return this._hooks;
383
+ }
384
+ /**
385
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
386
+ * @returns {boolean}
387
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
388
+ */
389
+ get throwHookErrors() {
390
+ return this._throwOnHookError;
391
+ }
392
+ /**
393
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
394
+ * @param {boolean} value
395
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
396
+ */
397
+ set throwHookErrors(value) {
398
+ this._throwOnHookError = value;
399
+ }
400
+ /**
401
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
402
+ * @returns {boolean}
403
+ */
404
+ get throwOnHookError() {
405
+ return this._throwOnHookError;
406
+ }
407
+ /**
408
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
409
+ * @param {boolean} value
410
+ */
411
+ set throwOnHookError(value) {
412
+ this._throwOnHookError = value;
413
+ }
414
+ /**
415
+ * Gets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
416
+ * @returns {boolean}
417
+ * @default false
418
+ */
419
+ get enforceBeforeAfter() {
420
+ return this._enforceBeforeAfter;
421
+ }
422
+ /**
423
+ * Sets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
424
+ * @param {boolean} value
425
+ */
426
+ set enforceBeforeAfter(value) {
427
+ this._enforceBeforeAfter = value;
428
+ }
429
+ /**
430
+ * Gets the map of deprecated hook names to deprecation messages.
431
+ * @returns {Map<string, string>}
432
+ */
433
+ get deprecatedHooks() {
434
+ return this._deprecatedHooks;
435
+ }
436
+ /**
437
+ * Sets the map of deprecated hook names to deprecation messages.
438
+ * @param {Map<string, string>} value
439
+ */
440
+ set deprecatedHooks(value) {
441
+ this._deprecatedHooks = value;
442
+ }
443
+ /**
444
+ * Gets whether deprecated hooks are allowed to be registered and executed. Default is true.
445
+ * @returns {boolean}
446
+ */
447
+ get allowDeprecated() {
448
+ return this._allowDeprecated;
449
+ }
450
+ /**
451
+ * Sets whether deprecated hooks are allowed to be registered and executed. Default is true.
452
+ * @param {boolean} value
453
+ */
454
+ set allowDeprecated(value) {
455
+ this._allowDeprecated = value;
456
+ }
457
+ /**
458
+ * Validates hook event name if enforceBeforeAfter is enabled
459
+ * @param {string} event - The event name to validate
460
+ * @throws {Error} If enforceBeforeAfter is true and event doesn't start with 'before' or 'after'
461
+ */
462
+ validateHookName(event) {
463
+ if (this._enforceBeforeAfter) {
464
+ const eventValue = event.trim().toLocaleLowerCase();
465
+ if (!eventValue.startsWith("before") && !eventValue.startsWith("after")) {
466
+ throw new Error(
467
+ `Hook event "${event}" must start with "before" or "after" when enforceBeforeAfter is enabled`
468
+ );
469
+ }
470
+ }
471
+ }
472
+ /**
473
+ * Checks if a hook is deprecated and emits a warning if it is
474
+ * @param {string} event - The event name to check
475
+ * @returns {boolean} - Returns true if the hook should proceed, false if it should be blocked
476
+ */
477
+ checkDeprecatedHook(event) {
478
+ if (this._deprecatedHooks.has(event)) {
479
+ const message = this._deprecatedHooks.get(event);
480
+ const warningMessage = `Hook "${event}" is deprecated${message ? `: ${message}` : ""}`;
481
+ this.emit("warn", { hook: event, message: warningMessage });
482
+ return this._allowDeprecated;
483
+ }
484
+ return true;
485
+ }
486
+ /**
487
+ * Adds a handler function for a specific event
488
+ * @param {string} event
489
+ * @param {Hook} handler - this can be async or sync
490
+ * @returns {void}
491
+ */
492
+ onHook(event, handler) {
493
+ this.onHookEntry({ event, handler });
494
+ }
495
+ /**
496
+ * Adds a handler function for a specific event
497
+ * @param {HookEntry} hookEntry
498
+ * @returns {void}
499
+ */
500
+ onHookEntry(hookEntry) {
501
+ this.validateHookName(hookEntry.event);
502
+ if (!this.checkDeprecatedHook(hookEntry.event)) {
503
+ return;
504
+ }
505
+ const eventHandlers = this._hooks.get(hookEntry.event);
506
+ if (eventHandlers) {
507
+ eventHandlers.push(hookEntry.handler);
508
+ } else {
509
+ this._hooks.set(hookEntry.event, [hookEntry.handler]);
510
+ }
511
+ }
512
+ /**
513
+ * Alias for onHook. This is provided for compatibility with other libraries that use the `addHook` method.
514
+ * @param {string} event
515
+ * @param {Hook} handler - this can be async or sync
516
+ * @returns {void}
517
+ */
518
+ addHook(event, handler) {
519
+ this.onHookEntry({ event, handler });
520
+ }
521
+ /**
522
+ * Adds a handler function for a specific event
523
+ * @param {Array<HookEntry>} hooks
524
+ * @returns {void}
525
+ */
526
+ onHooks(hooks) {
527
+ for (const hook of hooks) {
528
+ this.onHook(hook.event, hook.handler);
529
+ }
530
+ }
531
+ /**
532
+ * Adds a handler function for a specific event that runs before all other handlers
533
+ * @param {string} event
534
+ * @param {Hook} handler - this can be async or sync
535
+ * @returns {void}
536
+ */
537
+ prependHook(event, handler) {
538
+ this.validateHookName(event);
539
+ if (!this.checkDeprecatedHook(event)) {
540
+ return;
541
+ }
542
+ const eventHandlers = this._hooks.get(event);
543
+ if (eventHandlers) {
544
+ eventHandlers.unshift(handler);
545
+ } else {
546
+ this._hooks.set(event, [handler]);
547
+ }
548
+ }
549
+ /**
550
+ * Adds a handler that only executes once for a specific event before all other handlers
551
+ * @param event
552
+ * @param handler
553
+ */
554
+ prependOnceHook(event, handler) {
555
+ this.validateHookName(event);
556
+ if (!this.checkDeprecatedHook(event)) {
557
+ return;
558
+ }
559
+ const hook = async (...arguments_) => {
560
+ this.removeHook(event, hook);
561
+ return handler(...arguments_);
562
+ };
563
+ this.prependHook(event, hook);
564
+ }
565
+ /**
566
+ * Adds a handler that only executes once for a specific event
567
+ * @param event
568
+ * @param handler
569
+ */
570
+ onceHook(event, handler) {
571
+ this.validateHookName(event);
572
+ if (!this.checkDeprecatedHook(event)) {
573
+ return;
574
+ }
575
+ const hook = async (...arguments_) => {
576
+ this.removeHook(event, hook);
577
+ return handler(...arguments_);
578
+ };
579
+ this.onHook(event, hook);
580
+ }
581
+ /**
582
+ * Removes a handler function for a specific event
583
+ * @param {string} event
584
+ * @param {Hook} handler
585
+ * @returns {void}
586
+ */
587
+ removeHook(event, handler) {
588
+ this.validateHookName(event);
589
+ if (!this.checkDeprecatedHook(event)) {
590
+ return;
591
+ }
592
+ const eventHandlers = this._hooks.get(event);
593
+ if (eventHandlers) {
594
+ const index = eventHandlers.indexOf(handler);
595
+ if (index !== -1) {
596
+ eventHandlers.splice(index, 1);
597
+ }
598
+ }
599
+ }
600
+ /**
601
+ * Removes all handlers for a specific event
602
+ * @param {Array<HookEntry>} hooks
603
+ * @returns {void}
604
+ */
605
+ removeHooks(hooks) {
606
+ for (const hook of hooks) {
607
+ this.removeHook(hook.event, hook.handler);
608
+ }
609
+ }
610
+ /**
611
+ * Calls all handlers for a specific event
612
+ * @param {string} event
613
+ * @param {T[]} arguments_
614
+ * @returns {Promise<void>}
615
+ */
616
+ async hook(event, ...arguments_) {
617
+ this.validateHookName(event);
618
+ if (!this.checkDeprecatedHook(event)) {
619
+ return;
620
+ }
621
+ const eventHandlers = this._hooks.get(event);
622
+ if (eventHandlers) {
623
+ for (const handler of eventHandlers) {
624
+ try {
625
+ await handler(...arguments_);
626
+ } catch (error) {
627
+ const message = `${event}: ${error.message}`;
628
+ this.emit("error", new Error(message));
629
+ if (this._throwOnHookError) {
630
+ throw new Error(message);
631
+ }
632
+ }
633
+ }
634
+ }
635
+ }
636
+ /**
637
+ * Calls all synchronous handlers for a specific event.
638
+ * Async handlers (declared with `async` keyword) are silently skipped.
639
+ *
640
+ * Note: The `hook` method is preferred as it executes both sync and async functions.
641
+ * Use `hookSync` only when you specifically need synchronous execution.
642
+ * @param {string} event
643
+ * @param {T[]} arguments_
644
+ * @returns {void}
645
+ */
646
+ hookSync(event, ...arguments_) {
647
+ this.validateHookName(event);
648
+ if (!this.checkDeprecatedHook(event)) {
649
+ return;
650
+ }
651
+ const eventHandlers = this._hooks.get(event);
652
+ if (eventHandlers) {
653
+ for (const handler of eventHandlers) {
654
+ if (handler.constructor.name === "AsyncFunction") {
655
+ continue;
656
+ }
657
+ try {
658
+ handler(...arguments_);
659
+ } catch (error) {
660
+ const message = `${event}: ${error.message}`;
661
+ this.emit("error", new Error(message));
662
+ if (this._throwOnHookError) {
663
+ throw new Error(message);
664
+ }
665
+ }
666
+ }
667
+ }
668
+ }
669
+ /**
670
+ * Prepends the word `before` to your hook. Example is event is `test`, the before hook is `before:test`.
671
+ * @param {string} event - The event name
672
+ * @param {T[]} arguments_ - The arguments to pass to the hook
673
+ */
674
+ async beforeHook(event, ...arguments_) {
675
+ await this.hook(`before:${event}`, ...arguments_);
676
+ }
677
+ /**
678
+ * Prepends the word `after` to your hook. Example is event is `test`, the after hook is `after:test`.
679
+ * @param {string} event - The event name
680
+ * @param {T[]} arguments_ - The arguments to pass to the hook
681
+ */
682
+ async afterHook(event, ...arguments_) {
683
+ await this.hook(`after:${event}`, ...arguments_);
684
+ }
685
+ /**
686
+ * Calls all handlers for a specific event. This is an alias for `hook` and is provided for
687
+ * compatibility with other libraries that use the `callHook` method.
688
+ * @param {string} event
689
+ * @param {T[]} arguments_
690
+ * @returns {Promise<void>}
691
+ */
692
+ async callHook(event, ...arguments_) {
693
+ await this.hook(event, ...arguments_);
694
+ }
695
+ /**
696
+ * Gets all hooks for a specific event
697
+ * @param {string} event
698
+ * @returns {Hook[]}
699
+ */
700
+ getHooks(event) {
701
+ this.validateHookName(event);
702
+ if (!this.checkDeprecatedHook(event)) {
703
+ return void 0;
704
+ }
705
+ return this._hooks.get(event);
706
+ }
707
+ /**
708
+ * Removes all hooks
709
+ * @returns {void}
710
+ */
711
+ clearHooks() {
712
+ this._hooks.clear();
713
+ }
714
+ };
715
+
716
+ // node_modules/.pnpm/@hyphen+browser-sdk@1.1.1/node_modules/@hyphen/browser-sdk/dist/index.js
33
717
  var __defProp2 = Object.defineProperty;
34
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
718
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
35
719
  var __name = (target, value) => __defProp2(target, "name", { value, configurable: true });
36
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
720
+ var __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== "symbol" ? key + "" : key, value);
37
721
  var ToggleEvents = /* @__PURE__ */ (function(ToggleEvents2) {
38
722
  ToggleEvents2["Error"] = "error";
39
723
  return ToggleEvents2;
40
724
  })({});
41
- var _Toggle = class _Toggle2 extends import_hookified.Hookified {
725
+ var _Toggle = class _Toggle2 extends Hookified {
42
726
  constructor(options) {
43
727
  super();
44
- __publicField(this, "_publicApiKey");
45
- __publicField(this, "_organizationId");
46
- __publicField(this, "_applicationId");
47
- __publicField(this, "_environment");
48
- __publicField(this, "_horizonUrls", []);
49
- __publicField(this, "_defaultContext");
50
- __publicField(this, "_defaultTargetingKey", `${Math.random().toString(36).substring(7)}`);
728
+ __publicField2(this, "_publicApiKey");
729
+ __publicField2(this, "_organizationId");
730
+ __publicField2(this, "_applicationId");
731
+ __publicField2(this, "_environment");
732
+ __publicField2(this, "_horizonUrls", []);
733
+ __publicField2(this, "_defaultContext");
734
+ __publicField2(this, "_defaultTargetingKey", `${Math.random().toString(36).substring(7)}`);
51
735
  if (options == null ? void 0 : options.applicationId) {
52
736
  this._applicationId = options.applicationId;
53
737
  }
@@ -595,3 +1279,8 @@ function withToggleProvider(options) {
595
1279
  withToggleProvider
596
1280
  });
597
1281
  /* v8 ignore next -- @preserve */
1282
+ /*! Bundled license information:
1283
+
1284
+ hookified/dist/node/index.js:
1285
+ (* v8 ignore next -- @preserve *)
1286
+ */