joopjs 2.0.0

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 (259) hide show
  1. package/CHANGELOG.md +678 -0
  2. package/README.md +583 -0
  3. package/dist/a11y.service-C-DQQfgO.d.mts +143 -0
  4. package/dist/a11y.service-CauEJrJe.d.ts +143 -0
  5. package/dist/adapters-B6slG6hQ.d.mts +84 -0
  6. package/dist/adapters-B6slG6hQ.d.ts +84 -0
  7. package/dist/aes.service-CkoupAww.d.mts +95 -0
  8. package/dist/aes.service-CkoupAww.d.ts +95 -0
  9. package/dist/ai/index.d.mts +99 -0
  10. package/dist/ai/index.d.ts +99 -0
  11. package/dist/ai/index.js +307 -0
  12. package/dist/ai/index.js.map +1 -0
  13. package/dist/ai/index.mjs +304 -0
  14. package/dist/ai/index.mjs.map +1 -0
  15. package/dist/analytics/index.d.mts +42 -0
  16. package/dist/analytics/index.d.ts +42 -0
  17. package/dist/analytics/index.js +139 -0
  18. package/dist/analytics/index.js.map +1 -0
  19. package/dist/analytics/index.mjs +136 -0
  20. package/dist/analytics/index.mjs.map +1 -0
  21. package/dist/angular/index.d.mts +148 -0
  22. package/dist/angular/index.d.ts +148 -0
  23. package/dist/angular/index.js +122 -0
  24. package/dist/angular/index.js.map +1 -0
  25. package/dist/angular/index.mjs +101 -0
  26. package/dist/angular/index.mjs.map +1 -0
  27. package/dist/api/index.d.mts +128 -0
  28. package/dist/api/index.d.ts +128 -0
  29. package/dist/api/index.js +1358 -0
  30. package/dist/api/index.js.map +1 -0
  31. package/dist/api/index.mjs +1332 -0
  32. package/dist/api/index.mjs.map +1 -0
  33. package/dist/auth/index.d.mts +105 -0
  34. package/dist/auth/index.d.ts +105 -0
  35. package/dist/auth/index.js +989 -0
  36. package/dist/auth/index.js.map +1 -0
  37. package/dist/auth/index.mjs +979 -0
  38. package/dist/auth/index.mjs.map +1 -0
  39. package/dist/auth.service-DNVB-L4U.d.mts +16 -0
  40. package/dist/auth.service-PjUUSUIt.d.ts +16 -0
  41. package/dist/banking/index.d.mts +1530 -0
  42. package/dist/banking/index.d.ts +1530 -0
  43. package/dist/banking/index.js +4739 -0
  44. package/dist/banking/index.js.map +1 -0
  45. package/dist/banking/index.mjs +4661 -0
  46. package/dist/banking/index.mjs.map +1 -0
  47. package/dist/cache/index.d.mts +40 -0
  48. package/dist/cache/index.d.ts +40 -0
  49. package/dist/cache/index.js +174 -0
  50. package/dist/cache/index.js.map +1 -0
  51. package/dist/cache/index.mjs +172 -0
  52. package/dist/cache/index.mjs.map +1 -0
  53. package/dist/client-profile.service-BuPeXVp5.d.mts +28 -0
  54. package/dist/client-profile.service-D5bRRYQp.d.ts +28 -0
  55. package/dist/config.models-Cqg04fAQ.d.mts +84 -0
  56. package/dist/config.models-Cqg04fAQ.d.ts +84 -0
  57. package/dist/config.service-CrCvI-JS.d.ts +31 -0
  58. package/dist/config.service-Cz4QQLlf.d.mts +31 -0
  59. package/dist/core/index.d.mts +4 -0
  60. package/dist/core/index.d.ts +4 -0
  61. package/dist/core/index.js +631 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/index.mjs +619 -0
  64. package/dist/core/index.mjs.map +1 -0
  65. package/dist/crypto-utils-DriNhLdx.d.mts +30 -0
  66. package/dist/crypto-utils-DriNhLdx.d.ts +30 -0
  67. package/dist/data-storage.service-DT6xaTxE.d.ts +51 -0
  68. package/dist/data-storage.service-LvhGRCmw.d.mts +51 -0
  69. package/dist/deeplink/index.d.mts +39 -0
  70. package/dist/deeplink/index.d.ts +39 -0
  71. package/dist/deeplink/index.js +268 -0
  72. package/dist/deeplink/index.js.map +1 -0
  73. package/dist/deeplink/index.mjs +265 -0
  74. package/dist/deeplink/index.mjs.map +1 -0
  75. package/dist/deeplink.service-Ctd5u243.d.mts +35 -0
  76. package/dist/deeplink.service-uUuTnY9_.d.ts +35 -0
  77. package/dist/dev/index.d.mts +20 -0
  78. package/dist/dev/index.d.ts +20 -0
  79. package/dist/dev/index.js +51 -0
  80. package/dist/dev/index.js.map +1 -0
  81. package/dist/dev/index.mjs +49 -0
  82. package/dist/dev/index.mjs.map +1 -0
  83. package/dist/device/index.d.mts +108 -0
  84. package/dist/device/index.d.ts +108 -0
  85. package/dist/device/index.js +960 -0
  86. package/dist/device/index.js.map +1 -0
  87. package/dist/device/index.mjs +951 -0
  88. package/dist/device/index.mjs.map +1 -0
  89. package/dist/differential-privacy-BcAv1G80.d.mts +210 -0
  90. package/dist/differential-privacy-C8mAUjZr.d.ts +210 -0
  91. package/dist/encryption/index.d.mts +75 -0
  92. package/dist/encryption/index.d.ts +75 -0
  93. package/dist/encryption/index.js +605 -0
  94. package/dist/encryption/index.js.map +1 -0
  95. package/dist/encryption/index.mjs +598 -0
  96. package/dist/encryption/index.mjs.map +1 -0
  97. package/dist/form-validator-3tkmzr_o.d.mts +72 -0
  98. package/dist/form-validator-3tkmzr_o.d.ts +72 -0
  99. package/dist/forms/index.d.mts +59 -0
  100. package/dist/forms/index.d.ts +59 -0
  101. package/dist/forms/index.js +446 -0
  102. package/dist/forms/index.js.map +1 -0
  103. package/dist/forms/index.mjs +442 -0
  104. package/dist/forms/index.mjs.map +1 -0
  105. package/dist/i18n/index.d.mts +37 -0
  106. package/dist/i18n/index.d.ts +37 -0
  107. package/dist/i18n/index.js +147 -0
  108. package/dist/i18n/index.js.map +1 -0
  109. package/dist/i18n/index.mjs +145 -0
  110. package/dist/i18n/index.mjs.map +1 -0
  111. package/dist/idempotency.service-_6LqhivP.d.mts +372 -0
  112. package/dist/idempotency.service-eOKoISRD.d.ts +372 -0
  113. package/dist/index-B_ksKpS1.d.mts +202 -0
  114. package/dist/index-CqDKWTUP.d.mts +28 -0
  115. package/dist/index-CqDKWTUP.d.ts +28 -0
  116. package/dist/index-DFqEoX_l.d.ts +202 -0
  117. package/dist/index-Dz0gOur2.d.mts +36 -0
  118. package/dist/index-Dz0gOur2.d.ts +36 -0
  119. package/dist/index.d.mts +1336 -0
  120. package/dist/index.d.ts +1336 -0
  121. package/dist/index.js +19464 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/index.mjs +19155 -0
  124. package/dist/index.mjs.map +1 -0
  125. package/dist/india/index.d.mts +75 -0
  126. package/dist/india/index.d.ts +75 -0
  127. package/dist/india/index.js +325 -0
  128. package/dist/india/index.js.map +1 -0
  129. package/dist/india/index.mjs +303 -0
  130. package/dist/india/index.mjs.map +1 -0
  131. package/dist/joop-Bx7Iwj5p.d.mts +155 -0
  132. package/dist/joop-CA3DMeOO.d.ts +155 -0
  133. package/dist/native-bridge/index.d.mts +27 -0
  134. package/dist/native-bridge/index.d.ts +27 -0
  135. package/dist/native-bridge/index.js +98 -0
  136. package/dist/native-bridge/index.js.map +1 -0
  137. package/dist/native-bridge/index.mjs +96 -0
  138. package/dist/native-bridge/index.mjs.map +1 -0
  139. package/dist/network/index.d.mts +85 -0
  140. package/dist/network/index.d.ts +85 -0
  141. package/dist/network/index.js +454 -0
  142. package/dist/network/index.js.map +1 -0
  143. package/dist/network/index.mjs +451 -0
  144. package/dist/network/index.mjs.map +1 -0
  145. package/dist/network-monitor-BIwPSXme.d.mts +179 -0
  146. package/dist/network-monitor-Bqp2hvZr.d.ts +179 -0
  147. package/dist/notification.service-Dm4fvfZf.d.mts +25 -0
  148. package/dist/notification.service-tEMKatWJ.d.ts +25 -0
  149. package/dist/observability/index.d.mts +179 -0
  150. package/dist/observability/index.d.ts +179 -0
  151. package/dist/observability/index.js +559 -0
  152. package/dist/observability/index.js.map +1 -0
  153. package/dist/observability/index.mjs +552 -0
  154. package/dist/observability/index.mjs.map +1 -0
  155. package/dist/oidc-client-DIJcClmB.d.mts +190 -0
  156. package/dist/oidc-client-DxhyE59t.d.ts +190 -0
  157. package/dist/platform/index.d.mts +73 -0
  158. package/dist/platform/index.d.ts +73 -0
  159. package/dist/platform/index.js +127 -0
  160. package/dist/platform/index.js.map +1 -0
  161. package/dist/platform/index.mjs +125 -0
  162. package/dist/platform/index.mjs.map +1 -0
  163. package/dist/pwa/index.d.mts +31 -0
  164. package/dist/pwa/index.d.ts +31 -0
  165. package/dist/pwa/index.js +247 -0
  166. package/dist/pwa/index.js.map +1 -0
  167. package/dist/pwa/index.mjs +244 -0
  168. package/dist/pwa/index.mjs.map +1 -0
  169. package/dist/react/index.d.mts +133 -0
  170. package/dist/react/index.d.ts +133 -0
  171. package/dist/react/index.js +632 -0
  172. package/dist/react/index.js.map +1 -0
  173. package/dist/react/index.mjs +630 -0
  174. package/dist/react/index.mjs.map +1 -0
  175. package/dist/router/index.d.mts +39 -0
  176. package/dist/router/index.d.ts +39 -0
  177. package/dist/router/index.js +168 -0
  178. package/dist/router/index.js.map +1 -0
  179. package/dist/router/index.mjs +166 -0
  180. package/dist/router/index.mjs.map +1 -0
  181. package/dist/security/index.d.mts +206 -0
  182. package/dist/security/index.d.ts +206 -0
  183. package/dist/security/index.js +1297 -0
  184. package/dist/security/index.js.map +1 -0
  185. package/dist/security/index.mjs +1285 -0
  186. package/dist/security/index.mjs.map +1 -0
  187. package/dist/session/index.d.mts +115 -0
  188. package/dist/session/index.d.ts +115 -0
  189. package/dist/session/index.js +297 -0
  190. package/dist/session/index.js.map +1 -0
  191. package/dist/session/index.mjs +292 -0
  192. package/dist/session/index.mjs.map +1 -0
  193. package/dist/state/index.d.mts +43 -0
  194. package/dist/state/index.d.ts +43 -0
  195. package/dist/state/index.js +156 -0
  196. package/dist/state/index.js.map +1 -0
  197. package/dist/state/index.mjs +152 -0
  198. package/dist/state/index.mjs.map +1 -0
  199. package/dist/statement-parser-BHQtXwCM.d.ts +260 -0
  200. package/dist/statement-parser-C2qNmb49.d.mts +260 -0
  201. package/dist/storage/index.d.mts +40 -0
  202. package/dist/storage/index.d.ts +40 -0
  203. package/dist/storage/index.js +256 -0
  204. package/dist/storage/index.js.map +1 -0
  205. package/dist/storage/index.mjs +252 -0
  206. package/dist/storage/index.mjs.map +1 -0
  207. package/dist/sync/index.d.mts +69 -0
  208. package/dist/sync/index.d.ts +69 -0
  209. package/dist/sync/index.js +330 -0
  210. package/dist/sync/index.js.map +1 -0
  211. package/dist/sync/index.mjs +323 -0
  212. package/dist/sync/index.mjs.map +1 -0
  213. package/dist/sync-engine-DCIMRG5s.d.ts +61 -0
  214. package/dist/sync-engine-DZqyKHkK.d.mts +61 -0
  215. package/dist/theme/index.d.mts +53 -0
  216. package/dist/theme/index.d.ts +53 -0
  217. package/dist/theme/index.js +169 -0
  218. package/dist/theme/index.js.map +1 -0
  219. package/dist/theme/index.mjs +167 -0
  220. package/dist/theme/index.mjs.map +1 -0
  221. package/dist/ui/index.d.mts +66 -0
  222. package/dist/ui/index.d.ts +66 -0
  223. package/dist/ui/index.js +811 -0
  224. package/dist/ui/index.js.map +1 -0
  225. package/dist/ui/index.mjs +803 -0
  226. package/dist/ui/index.mjs.map +1 -0
  227. package/dist/utilities/index.d.mts +199 -0
  228. package/dist/utilities/index.d.ts +199 -0
  229. package/dist/utilities/index.js +1991 -0
  230. package/dist/utilities/index.js.map +1 -0
  231. package/dist/utilities/index.mjs +1923 -0
  232. package/dist/utilities/index.mjs.map +1 -0
  233. package/dist/validation/index.d.mts +60 -0
  234. package/dist/validation/index.d.ts +60 -0
  235. package/dist/validation/index.js +460 -0
  236. package/dist/validation/index.js.map +1 -0
  237. package/dist/validation/index.mjs +455 -0
  238. package/dist/validation/index.mjs.map +1 -0
  239. package/dist/vue/index.d.mts +135 -0
  240. package/dist/vue/index.d.ts +135 -0
  241. package/dist/vue/index.js +621 -0
  242. package/dist/vue/index.js.map +1 -0
  243. package/dist/vue/index.mjs +619 -0
  244. package/dist/vue/index.mjs.map +1 -0
  245. package/dist/watermark.service-Detur5tq.d.ts +235 -0
  246. package/dist/watermark.service-QNegMeQZ.d.mts +235 -0
  247. package/dist/workers/index.d.mts +42 -0
  248. package/dist/workers/index.d.ts +42 -0
  249. package/dist/workers/index.js +359 -0
  250. package/dist/workers/index.js.map +1 -0
  251. package/dist/workers/index.mjs +356 -0
  252. package/dist/workers/index.mjs.map +1 -0
  253. package/dist/workflow/index.d.mts +99 -0
  254. package/dist/workflow/index.d.ts +99 -0
  255. package/dist/workflow/index.js +282 -0
  256. package/dist/workflow/index.js.map +1 -0
  257. package/dist/workflow/index.mjs +279 -0
  258. package/dist/workflow/index.mjs.map +1 -0
  259. package/package.json +226 -0
@@ -0,0 +1,202 @@
1
+ import './config.service-CrCvI-JS.js';
2
+ import { e as JoopLoggerConfig } from './config.models-Cqg04fAQ.js';
3
+ import { J as JoopObservable } from './index-Dz0gOur2.js';
4
+
5
+ interface JoopLogEntry {
6
+ level: 'debug' | 'log' | 'info' | 'warn' | 'error' | 'off' | 'all';
7
+ message: any;
8
+ timestamp?: string;
9
+ component?: string;
10
+ }
11
+ interface JoopLoggerOptions {
12
+ color?: string;
13
+ componentName?: string;
14
+ isDateEnabled?: boolean;
15
+ }
16
+
17
+ declare class JoopLogger {
18
+ private readonly _logSubject;
19
+ private _config;
20
+ configure(config: JoopLoggerConfig): void;
21
+ debug(message: any, options?: JoopLoggerOptions): void;
22
+ log(message: any, options?: JoopLoggerOptions): void;
23
+ info(message: any, options?: JoopLoggerOptions): void;
24
+ warn(message: any, options?: JoopLoggerOptions): void;
25
+ error(message: any, options?: JoopLoggerOptions): void;
26
+ /** Subscribe to all log entries (useful for remote logging). */
27
+ onLog(listener: (entry: JoopLogEntry) => void): () => void;
28
+ private _shouldLog;
29
+ private _emit;
30
+ private _serialize;
31
+ }
32
+ /** Singleton logger instance exported for direct use. */
33
+ declare const logger: JoopLogger;
34
+
35
+ interface JoopPlugin {
36
+ name: string;
37
+ version?: string;
38
+ install(context: Record<string, unknown>): void | Promise<void>;
39
+ uninstall?(): void;
40
+ }
41
+ declare class JoopPluginService {
42
+ private _plugins;
43
+ private _context;
44
+ setContext(ctx: Record<string, unknown>): void;
45
+ use(plugin: JoopPlugin): Promise<void>;
46
+ unuse(name: string): void;
47
+ has(name: string): boolean;
48
+ getAll(): JoopPlugin[];
49
+ unuseAll(): void;
50
+ }
51
+
52
+ type JoopEnvironmentName = 'development' | 'staging' | 'production' | string;
53
+ interface JoopEnvironmentProfile {
54
+ name: JoopEnvironmentName;
55
+ apiBaseUrl: string;
56
+ features?: Record<string, boolean>;
57
+ [key: string]: unknown;
58
+ }
59
+ declare class JoopEnvironmentService {
60
+ private _current;
61
+ private _profiles;
62
+ register(profile: JoopEnvironmentProfile): void;
63
+ activate(name: JoopEnvironmentName): void;
64
+ detect(): JoopEnvironmentName;
65
+ get current(): JoopEnvironmentProfile;
66
+ get name(): JoopEnvironmentName;
67
+ get apiBaseUrl(): string;
68
+ isDev(): boolean;
69
+ isStaging(): boolean;
70
+ isProduction(): boolean;
71
+ isFeatureEnabled(feature: string): boolean;
72
+ get<T>(key: string): T | undefined;
73
+ }
74
+
75
+ interface JoopHealthCheckResult {
76
+ name: string;
77
+ healthy: boolean;
78
+ latencyMs: number;
79
+ error?: string;
80
+ timestamp: number;
81
+ }
82
+ interface JoopHealthCheck {
83
+ name: string;
84
+ check: () => Promise<boolean>;
85
+ timeoutMs?: number;
86
+ }
87
+ declare class JoopHealthService {
88
+ private _checks;
89
+ register(check: JoopHealthCheck): void;
90
+ runAll(): Promise<JoopHealthCheckResult[]>;
91
+ run(name: string): Promise<JoopHealthCheckResult | null>;
92
+ pingUrl(url: string, timeoutMs?: number): Promise<JoopHealthCheckResult>;
93
+ private _run;
94
+ }
95
+
96
+ interface JoopFlagDefinition {
97
+ key: string;
98
+ enabled: boolean;
99
+ variant?: string;
100
+ description?: string;
101
+ /** Percentage rollout 0–100 — compared against a stable user hash */
102
+ rolloutPercent?: number;
103
+ /** Only enable for specific user IDs */
104
+ allowedUsers?: string[];
105
+ /** Only enable for specific environments */
106
+ environments?: string[];
107
+ }
108
+ interface JoopFlagContext {
109
+ userId?: string;
110
+ environment?: string;
111
+ attributes?: Record<string, unknown>;
112
+ }
113
+ declare class JoopFeatureFlagService {
114
+ private _flags;
115
+ private _overrides;
116
+ private _context;
117
+ private _flags$;
118
+ /** Register flag definitions */
119
+ define(flags: JoopFlagDefinition[]): void;
120
+ /** Load flags from a remote JSON endpoint */
121
+ loadFromUrl(url: string): Promise<void>;
122
+ /** Set user/environment context for targeting */
123
+ setContext(ctx: JoopFlagContext): void;
124
+ /** Check if a feature flag is enabled for the current context */
125
+ isEnabled(key: string, context?: JoopFlagContext): boolean;
126
+ /** Get the variant string for a flag */
127
+ getVariant(key: string, context?: JoopFlagContext): string | null;
128
+ /** Override a flag locally (for testing) */
129
+ setOverride(key: string, value: boolean): void;
130
+ clearOverrides(): void;
131
+ getAllFlags(): JoopFlagDefinition[];
132
+ getFlag(key: string): JoopFlagDefinition | undefined;
133
+ flags$(): JoopObservable<Map<string, JoopFlagDefinition>>;
134
+ /** Simple deterministic hash for percentage rollouts */
135
+ private _hash;
136
+ }
137
+
138
+ interface JoopTokenBucketConfig {
139
+ capacity: number;
140
+ refillRate: number;
141
+ }
142
+ declare class JoopTokenBucket {
143
+ private _tokens;
144
+ private _lastRefill;
145
+ private readonly _cap;
146
+ private readonly _rate;
147
+ constructor(config: JoopTokenBucketConfig);
148
+ private _refill;
149
+ /** Returns true if tokens were available and consumed */
150
+ consume(tokens?: number): boolean;
151
+ /** Waits until enough tokens are available, then consumes */
152
+ tryConsume(tokens?: number): Promise<void>;
153
+ available(): number;
154
+ reset(): void;
155
+ }
156
+ declare class JoopRateLimiter {
157
+ private _buckets;
158
+ private _timers;
159
+ /** Create or get a token bucket by key */
160
+ bucket(key: string, config?: JoopTokenBucketConfig): JoopTokenBucket;
161
+ deleteBucket(key: string): void;
162
+ /** Returns a throttled version — at most once per delayMs */
163
+ throttle<T extends unknown[]>(fn: (...args: T) => void, delayMs: number): (...args: T) => void;
164
+ /** Returns a debounced version — fires after delayMs of silence */
165
+ debounce<T extends unknown[]>(fn: (...args: T) => void, delayMs: number, immediate?: boolean): (...args: T) => void;
166
+ /** Promise-based debounce — resolves when the debounced call fires */
167
+ debounceAsync<T>(fn: () => Promise<T>, delayMs: number): () => Promise<T>;
168
+ /** Ensure a function is called at most once per key in the given window */
169
+ once(key: string, fn: () => void, windowMs: number): boolean;
170
+ }
171
+
172
+ type JoopConsentCategory = 'necessary' | 'analytics' | 'marketing' | 'functional' | 'personalization';
173
+ interface JoopConsentState {
174
+ decided: boolean;
175
+ categories: Record<JoopConsentCategory, boolean>;
176
+ timestamp: number | null;
177
+ }
178
+ declare class JoopConsentService {
179
+ private _state$;
180
+ constructor(storageKey?: string);
181
+ private _key;
182
+ private _loadFrom;
183
+ /** Grant one or more categories */
184
+ grant(categories: JoopConsentCategory | JoopConsentCategory[]): void;
185
+ /** Revoke one or more categories (cannot revoke 'necessary') */
186
+ revoke(categories: JoopConsentCategory | JoopConsentCategory[]): void;
187
+ /** Grant all categories at once */
188
+ acceptAll(): void;
189
+ /** Reject all non-necessary categories */
190
+ rejectAll(): void;
191
+ isGranted(category: JoopConsentCategory): boolean;
192
+ hasDecided(): boolean;
193
+ getAll(): Record<JoopConsentCategory, boolean>;
194
+ getState(): JoopConsentState;
195
+ state$(): JoopObservable<JoopConsentState>;
196
+ reset(): void;
197
+ onChange(handler: (state: JoopConsentState) => void): () => void;
198
+ onCategoryChange(category: JoopConsentCategory, handler: (granted: boolean) => void): () => void;
199
+ private _persist;
200
+ }
201
+
202
+ export { JoopLogger as J, JoopPluginService as a, JoopEnvironmentService as b, JoopHealthService as c, JoopFeatureFlagService as d, JoopRateLimiter as e, JoopConsentService as f, type JoopConsentCategory as g, type JoopConsentState as h, type JoopEnvironmentName as i, type JoopEnvironmentProfile as j, type JoopFlagContext as k, type JoopFlagDefinition as l, type JoopHealthCheck as m, type JoopHealthCheckResult as n, type JoopLogEntry as o, type JoopLoggerOptions as p, type JoopPlugin as q, JoopTokenBucket as r, type JoopTokenBucketConfig as s, logger as t };
@@ -0,0 +1,36 @@
1
+ type Unsubscribe = () => void;
2
+ type Listener<T> = (value: T) => void;
3
+ /**
4
+ * Lightweight pub/sub subject — emits to all current subscribers.
5
+ * Replaces RxJS Subject without pulling in the full RxJS dependency.
6
+ */
7
+ declare class JoopSubject<T> {
8
+ private _listeners;
9
+ subscribe(listener: Listener<T>): Unsubscribe;
10
+ next(value: T): void;
11
+ asObservable(): JoopObservable<T>;
12
+ }
13
+ /**
14
+ * Stateful subject — replays the current value to any new subscriber immediately.
15
+ * Replaces RxJS BehaviorSubject.
16
+ */
17
+ declare class JoopBehaviorSubject<T> extends JoopSubject<T> {
18
+ private _value;
19
+ constructor(initialValue: T);
20
+ getValue(): T;
21
+ next(value: T): void;
22
+ subscribe(listener: Listener<T>): Unsubscribe;
23
+ asObservable(): JoopObservable<T>;
24
+ }
25
+ /**
26
+ * Read-only observable handle returned from asObservable().
27
+ */
28
+ declare class JoopObservable<T> {
29
+ private _subscribeFn;
30
+ constructor(_subscribeFn: (listener: Listener<T>) => Unsubscribe);
31
+ subscribe(listener: Listener<T>): Unsubscribe;
32
+ /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */
33
+ getOnce(): T | undefined;
34
+ }
35
+
36
+ export { JoopObservable as J, type Listener as L, type Unsubscribe as U, JoopBehaviorSubject as a, JoopSubject as b };
@@ -0,0 +1,36 @@
1
+ type Unsubscribe = () => void;
2
+ type Listener<T> = (value: T) => void;
3
+ /**
4
+ * Lightweight pub/sub subject — emits to all current subscribers.
5
+ * Replaces RxJS Subject without pulling in the full RxJS dependency.
6
+ */
7
+ declare class JoopSubject<T> {
8
+ private _listeners;
9
+ subscribe(listener: Listener<T>): Unsubscribe;
10
+ next(value: T): void;
11
+ asObservable(): JoopObservable<T>;
12
+ }
13
+ /**
14
+ * Stateful subject — replays the current value to any new subscriber immediately.
15
+ * Replaces RxJS BehaviorSubject.
16
+ */
17
+ declare class JoopBehaviorSubject<T> extends JoopSubject<T> {
18
+ private _value;
19
+ constructor(initialValue: T);
20
+ getValue(): T;
21
+ next(value: T): void;
22
+ subscribe(listener: Listener<T>): Unsubscribe;
23
+ asObservable(): JoopObservable<T>;
24
+ }
25
+ /**
26
+ * Read-only observable handle returned from asObservable().
27
+ */
28
+ declare class JoopObservable<T> {
29
+ private _subscribeFn;
30
+ constructor(_subscribeFn: (listener: Listener<T>) => Unsubscribe);
31
+ subscribe(listener: Listener<T>): Unsubscribe;
32
+ /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */
33
+ getOnce(): T | undefined;
34
+ }
35
+
36
+ export { JoopObservable as J, type Listener as L, type Unsubscribe as U, JoopBehaviorSubject as a, JoopSubject as b };