joopjs 2.0.6 → 2.1.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 (140) hide show
  1. package/.claude/skills/observables.md +28 -0
  2. package/.claude/skills/setup.md +14 -3
  3. package/.cursor/rules/joopjs.mdc +4 -5
  4. package/.github/copilot-instructions.md +3 -1
  5. package/.windsurf/rules/joopjs.md +4 -0
  6. package/CHANGELOG.md +31 -2
  7. package/README.md +19 -7
  8. package/ai-rules/AGENTS.md +21 -0
  9. package/ai-rules/GEMINI.md +17 -3
  10. package/dist/ai/index.js +15 -3
  11. package/dist/ai/index.js.map +1 -1
  12. package/dist/ai/index.mjs +15 -3
  13. package/dist/ai/index.mjs.map +1 -1
  14. package/dist/analytics/index.js +10 -2
  15. package/dist/analytics/index.js.map +1 -1
  16. package/dist/analytics/index.mjs +10 -2
  17. package/dist/analytics/index.mjs.map +1 -1
  18. package/dist/angular/index.d.mts +98 -27
  19. package/dist/angular/index.d.ts +98 -27
  20. package/dist/angular/index.js +44 -0
  21. package/dist/angular/index.js.map +1 -1
  22. package/dist/angular/index.mjs +39 -1
  23. package/dist/angular/index.mjs.map +1 -1
  24. package/dist/api/index.js +15 -3
  25. package/dist/api/index.js.map +1 -1
  26. package/dist/api/index.mjs +15 -3
  27. package/dist/api/index.mjs.map +1 -1
  28. package/dist/auth/index.js +15 -3
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/auth/index.mjs +15 -3
  31. package/dist/auth/index.mjs.map +1 -1
  32. package/dist/banking/index.js +15 -3
  33. package/dist/banking/index.js.map +1 -1
  34. package/dist/banking/index.mjs +15 -3
  35. package/dist/banking/index.mjs.map +1 -1
  36. package/dist/cache/index.js +15 -3
  37. package/dist/cache/index.js.map +1 -1
  38. package/dist/cache/index.mjs +15 -3
  39. package/dist/cache/index.mjs.map +1 -1
  40. package/dist/{index-DFqEoX_l.d.ts → consent.service-CIHNtx9h.d.ts} +1 -2
  41. package/dist/{index-B_ksKpS1.d.mts → consent.service-DQ-JAEJx.d.mts} +1 -2
  42. package/dist/core/index.d.mts +34 -1
  43. package/dist/core/index.d.ts +34 -1
  44. package/dist/core/index.js +56 -5
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/index.mjs +54 -6
  47. package/dist/core/index.mjs.map +1 -1
  48. package/dist/deeplink/index.js +15 -3
  49. package/dist/deeplink/index.js.map +1 -1
  50. package/dist/deeplink/index.mjs +15 -3
  51. package/dist/deeplink/index.mjs.map +1 -1
  52. package/dist/device/index.js +15 -3
  53. package/dist/device/index.js.map +1 -1
  54. package/dist/device/index.mjs +15 -3
  55. package/dist/device/index.mjs.map +1 -1
  56. package/dist/forms/index.js +15 -3
  57. package/dist/forms/index.js.map +1 -1
  58. package/dist/forms/index.mjs +15 -3
  59. package/dist/forms/index.mjs.map +1 -1
  60. package/dist/i18n/index.js +15 -3
  61. package/dist/i18n/index.js.map +1 -1
  62. package/dist/i18n/index.mjs +15 -3
  63. package/dist/i18n/index.mjs.map +1 -1
  64. package/dist/index.d.mts +2 -2
  65. package/dist/index.d.ts +2 -2
  66. package/dist/index.js +50 -8
  67. package/dist/index.js.map +1 -1
  68. package/dist/index.mjs +50 -8
  69. package/dist/index.mjs.map +1 -1
  70. package/dist/{joop-CA3DMeOO.d.ts → joop-Dim2yEKG.d.ts} +1 -1
  71. package/dist/{joop-Bx7Iwj5p.d.mts → joop-GkQw13f9.d.mts} +1 -1
  72. package/dist/native-bridge/index.js +10 -2
  73. package/dist/native-bridge/index.js.map +1 -1
  74. package/dist/native-bridge/index.mjs +10 -2
  75. package/dist/native-bridge/index.mjs.map +1 -1
  76. package/dist/network/index.js +15 -3
  77. package/dist/network/index.js.map +1 -1
  78. package/dist/network/index.mjs +15 -3
  79. package/dist/network/index.mjs.map +1 -1
  80. package/dist/observability/index.js +15 -3
  81. package/dist/observability/index.js.map +1 -1
  82. package/dist/observability/index.mjs +15 -3
  83. package/dist/observability/index.mjs.map +1 -1
  84. package/dist/pwa/index.js +15 -3
  85. package/dist/pwa/index.js.map +1 -1
  86. package/dist/pwa/index.mjs +15 -3
  87. package/dist/pwa/index.mjs.map +1 -1
  88. package/dist/react/index.d.mts +2 -2
  89. package/dist/react/index.d.ts +2 -2
  90. package/dist/react/index.js +15 -3
  91. package/dist/react/index.js.map +1 -1
  92. package/dist/react/index.mjs +15 -3
  93. package/dist/react/index.mjs.map +1 -1
  94. package/dist/router/index.js +15 -3
  95. package/dist/router/index.js.map +1 -1
  96. package/dist/router/index.mjs +15 -3
  97. package/dist/router/index.mjs.map +1 -1
  98. package/dist/security/index.js +15 -3
  99. package/dist/security/index.js.map +1 -1
  100. package/dist/security/index.mjs +15 -3
  101. package/dist/security/index.mjs.map +1 -1
  102. package/dist/session/index.js +15 -3
  103. package/dist/session/index.js.map +1 -1
  104. package/dist/session/index.mjs +15 -3
  105. package/dist/session/index.mjs.map +1 -1
  106. package/dist/state/index.js +15 -3
  107. package/dist/state/index.js.map +1 -1
  108. package/dist/state/index.mjs +15 -3
  109. package/dist/state/index.mjs.map +1 -1
  110. package/dist/storage/index.js +15 -3
  111. package/dist/storage/index.js.map +1 -1
  112. package/dist/storage/index.mjs +15 -3
  113. package/dist/storage/index.mjs.map +1 -1
  114. package/dist/sync/index.js +15 -3
  115. package/dist/sync/index.js.map +1 -1
  116. package/dist/sync/index.mjs +15 -3
  117. package/dist/sync/index.mjs.map +1 -1
  118. package/dist/theme/index.js +15 -3
  119. package/dist/theme/index.js.map +1 -1
  120. package/dist/theme/index.mjs +15 -3
  121. package/dist/theme/index.mjs.map +1 -1
  122. package/dist/ui/index.js +15 -3
  123. package/dist/ui/index.js.map +1 -1
  124. package/dist/ui/index.mjs +15 -3
  125. package/dist/ui/index.mjs.map +1 -1
  126. package/dist/utilities/index.js +46 -4
  127. package/dist/utilities/index.js.map +1 -1
  128. package/dist/utilities/index.mjs +46 -4
  129. package/dist/utilities/index.mjs.map +1 -1
  130. package/dist/vue/index.d.mts +2 -2
  131. package/dist/vue/index.d.ts +2 -2
  132. package/dist/vue/index.js +15 -3
  133. package/dist/vue/index.js.map +1 -1
  134. package/dist/vue/index.mjs +15 -3
  135. package/dist/vue/index.mjs.map +1 -1
  136. package/dist/workflow/index.js +15 -3
  137. package/dist/workflow/index.js.map +1 -1
  138. package/dist/workflow/index.mjs +15 -3
  139. package/dist/workflow/index.mjs.map +1 -1
  140. package/package.json +16 -2
package/dist/index.mjs CHANGED
@@ -53,6 +53,36 @@ function flattenObject(obj, prefix = "") {
53
53
  return result;
54
54
  }
55
55
 
56
+ // src/core/global-singleton.ts
57
+ var MAJOR = "2";
58
+ var REGISTRY_KEY = /* @__PURE__ */ Symbol.for(`joopjs.singletons.v${MAJOR}`);
59
+ function getRegistry() {
60
+ const g = globalThis;
61
+ let reg = g[REGISTRY_KEY];
62
+ if (!reg) {
63
+ reg = { major: MAJOR, instances: /* @__PURE__ */ new Map(), copies: 0, warned: false, warningsSilenced: false };
64
+ g[REGISTRY_KEY] = reg;
65
+ }
66
+ return reg;
67
+ }
68
+ (() => {
69
+ const reg = getRegistry();
70
+ reg.copies += 1;
71
+ if (reg.copies > 1 && !reg.warned && !reg.warningsSilenced) {
72
+ reg.warned = true;
73
+ console.warn(
74
+ `[joopjs] ${reg.copies} copies of joopjs detected in one runtime. Singletons (logger, config, event bus, \u2026) are being de-duplicated via globalThis so state stays shared, but you are shipping duplicate bytes. Share joopjs as a federation singleton: shared: { joopjs: { singleton: true, requiredVersion: '^2.0.0' } }. Call silenceDuplicateCopyWarning() to suppress this.`
75
+ );
76
+ }
77
+ })();
78
+ function globalSingleton(key, factory) {
79
+ const reg = getRegistry();
80
+ if (!reg.instances.has(key)) {
81
+ reg.instances.set(key, factory());
82
+ }
83
+ return reg.instances.get(key);
84
+ }
85
+
56
86
  // src/core/config/config.service.ts
57
87
  var JoopConfigService = class {
58
88
  _config = null;
@@ -122,9 +152,12 @@ var JoopConfigService = class {
122
152
  return this._config;
123
153
  }
124
154
  };
125
- var configService = new JoopConfigService();
155
+ var configService = globalSingleton("config", () => new JoopConfigService());
126
156
 
127
157
  // src/events/index.ts
158
+ var _onListenerError = (error) => {
159
+ console.error("[joopjs] a subject subscriber threw during emission:", error);
160
+ };
128
161
  var JoopSubject = class {
129
162
  _listeners = [];
130
163
  subscribe(listener) {
@@ -134,8 +167,13 @@ var JoopSubject = class {
134
167
  };
135
168
  }
136
169
  next(value) {
137
- for (const listener of this._listeners) {
138
- listener(value);
170
+ const listeners = this._listeners.slice();
171
+ for (const listener of listeners) {
172
+ try {
173
+ listener(value);
174
+ } catch (error) {
175
+ _onListenerError(error);
176
+ }
139
177
  }
140
178
  }
141
179
  asObservable() {
@@ -156,7 +194,11 @@ var JoopBehaviorSubject = class extends JoopSubject {
156
194
  super.next(value);
157
195
  }
158
196
  subscribe(listener) {
159
- listener(this._value);
197
+ try {
198
+ listener(this._value);
199
+ } catch (error) {
200
+ _onListenerError(error);
201
+ }
160
202
  return super.subscribe(listener);
161
203
  }
162
204
  asObservable() {
@@ -243,7 +285,7 @@ var JoopLogger = class {
243
285
  }
244
286
  }
245
287
  };
246
- var logger = new JoopLogger();
288
+ var logger = globalSingleton("logger", () => new JoopLogger());
247
289
 
248
290
  // src/core/plugin.service.ts
249
291
  var JoopPluginService = class {
@@ -878,7 +920,7 @@ var JoopClientProfile = class {
878
920
  this.extra = {};
879
921
  }
880
922
  };
881
- var clientProfile = new JoopClientProfile();
923
+ var clientProfile = globalSingleton("clientProfile", () => new JoopClientProfile());
882
924
 
883
925
  // src/api/http/http-client.ts
884
926
  var JoopHttpClient = class {
@@ -4062,7 +4104,7 @@ var JoopClipboardService = class {
4062
4104
  }
4063
4105
  }
4064
4106
  };
4065
- var clipboard = new JoopClipboardService();
4107
+ var clipboard = globalSingleton("clipboard", () => new JoopClipboardService());
4066
4108
 
4067
4109
  // src/utilities/image.utility.ts
4068
4110
  var JoopImageService = class {
@@ -18469,7 +18511,7 @@ var JoopEventBus = class {
18469
18511
  }
18470
18512
  }
18471
18513
  };
18472
- var joopEventBus = new JoopEventBus();
18514
+ var joopEventBus = globalSingleton("eventBus", () => new JoopEventBus());
18473
18515
 
18474
18516
  // src/kyc/kyc-state-machine.ts
18475
18517
  var TRANSITIONS = {