@pie-players/pie-players-shared 0.2.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 (233) hide show
  1. package/dist/config/profile.d.ts +15 -0
  2. package/dist/config/profile.d.ts.map +1 -0
  3. package/dist/config/profile.js +27 -0
  4. package/dist/config/profile.js.map +1 -0
  5. package/dist/i18n/index.d.ts +13 -0
  6. package/dist/i18n/index.d.ts.map +1 -0
  7. package/dist/i18n/index.js +12 -0
  8. package/dist/i18n/index.js.map +1 -0
  9. package/dist/i18n/loader.d.ts +36 -0
  10. package/dist/i18n/loader.d.ts.map +1 -0
  11. package/dist/i18n/loader.js +133 -0
  12. package/dist/i18n/loader.js.map +1 -0
  13. package/dist/i18n/scripts/check-coverage.d.ts +16 -0
  14. package/dist/i18n/scripts/check-coverage.d.ts.map +1 -0
  15. package/dist/i18n/scripts/check-coverage.js +262 -0
  16. package/dist/i18n/scripts/check-coverage.js.map +1 -0
  17. package/dist/i18n/scripts/scan-hardcoded.d.ts +16 -0
  18. package/dist/i18n/scripts/scan-hardcoded.d.ts.map +1 -0
  19. package/dist/i18n/scripts/scan-hardcoded.js +266 -0
  20. package/dist/i18n/scripts/scan-hardcoded.js.map +1 -0
  21. package/dist/i18n/simple-i18n.d.ts +69 -0
  22. package/dist/i18n/simple-i18n.d.ts.map +1 -0
  23. package/dist/i18n/simple-i18n.js +199 -0
  24. package/dist/i18n/simple-i18n.js.map +1 -0
  25. package/dist/i18n/translations/ar/common.json +36 -0
  26. package/dist/i18n/translations/ar/toolkit.json +48 -0
  27. package/dist/i18n/translations/ar/tools.json +109 -0
  28. package/dist/i18n/translations/en/common.json +36 -0
  29. package/dist/i18n/translations/en/toolkit.json +48 -0
  30. package/dist/i18n/translations/en/tools.json +109 -0
  31. package/dist/i18n/translations/es/common.json +36 -0
  32. package/dist/i18n/translations/es/toolkit.json +48 -0
  33. package/dist/i18n/translations/es/tools.json +109 -0
  34. package/dist/i18n/translations/zh/common.json +36 -0
  35. package/dist/i18n/translations/zh/toolkit.json +48 -0
  36. package/dist/i18n/translations/zh/tools.json +109 -0
  37. package/dist/i18n/types.d.ts +58 -0
  38. package/dist/i18n/types.d.ts.map +1 -0
  39. package/dist/i18n/types.js +8 -0
  40. package/dist/i18n/types.js.map +1 -0
  41. package/dist/i18n/use-i18n-standalone.svelte.d.ts +87 -0
  42. package/dist/i18n/use-i18n-standalone.svelte.d.ts.map +1 -0
  43. package/dist/i18n/use-i18n-standalone.svelte.js +151 -0
  44. package/dist/i18n/use-i18n-standalone.svelte.js.map +1 -0
  45. package/dist/i18n/use-i18n.svelte.d.ts +67 -0
  46. package/dist/i18n/use-i18n.svelte.d.ts.map +1 -0
  47. package/dist/i18n/use-i18n.svelte.js +144 -0
  48. package/dist/i18n/use-i18n.svelte.js.map +1 -0
  49. package/dist/index.d.ts +11 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +11 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/instrumentation/index.d.ts +53 -0
  54. package/dist/instrumentation/index.d.ts.map +1 -0
  55. package/dist/instrumentation/index.js +53 -0
  56. package/dist/instrumentation/index.js.map +1 -0
  57. package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts +197 -0
  58. package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts.map +1 -0
  59. package/dist/instrumentation/providers/BaseInstrumentationProvider.js +267 -0
  60. package/dist/instrumentation/providers/BaseInstrumentationProvider.js.map +1 -0
  61. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts +106 -0
  62. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts.map +1 -0
  63. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js +182 -0
  64. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js.map +1 -0
  65. package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts +170 -0
  66. package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts.map +1 -0
  67. package/dist/instrumentation/providers/DataDogInstrumentationProvider.js +183 -0
  68. package/dist/instrumentation/providers/DataDogInstrumentationProvider.js.map +1 -0
  69. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts +86 -0
  70. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts.map +1 -0
  71. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js +135 -0
  72. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js.map +1 -0
  73. package/dist/instrumentation/providers/index.d.ts +12 -0
  74. package/dist/instrumentation/providers/index.d.ts.map +1 -0
  75. package/dist/instrumentation/providers/index.js +12 -0
  76. package/dist/instrumentation/providers/index.js.map +1 -0
  77. package/dist/instrumentation/types.d.ts +348 -0
  78. package/dist/instrumentation/types.d.ts.map +1 -0
  79. package/dist/instrumentation/types.js +9 -0
  80. package/dist/instrumentation/types.js.map +1 -0
  81. package/dist/loader-config.d.ts +76 -0
  82. package/dist/loader-config.d.ts.map +1 -0
  83. package/dist/loader-config.js +12 -0
  84. package/dist/loader-config.js.map +1 -0
  85. package/dist/loaders/ElementLoader.d.ts +72 -0
  86. package/dist/loaders/ElementLoader.d.ts.map +1 -0
  87. package/dist/loaders/ElementLoader.js +52 -0
  88. package/dist/loaders/ElementLoader.js.map +1 -0
  89. package/dist/loaders/EsmElementLoader.d.ts +67 -0
  90. package/dist/loaders/EsmElementLoader.d.ts.map +1 -0
  91. package/dist/loaders/EsmElementLoader.js +71 -0
  92. package/dist/loaders/EsmElementLoader.js.map +1 -0
  93. package/dist/loaders/IifeElementLoader.d.ts +61 -0
  94. package/dist/loaders/IifeElementLoader.d.ts.map +1 -0
  95. package/dist/loaders/IifeElementLoader.js +63 -0
  96. package/dist/loaders/IifeElementLoader.js.map +1 -0
  97. package/dist/loaders/index.d.ts +28 -0
  98. package/dist/loaders/index.d.ts.map +1 -0
  99. package/dist/loaders/index.js +25 -0
  100. package/dist/loaders/index.js.map +1 -0
  101. package/dist/object/index.d.ts +12 -0
  102. package/dist/object/index.d.ts.map +1 -0
  103. package/dist/object/index.js +40 -0
  104. package/dist/object/index.js.map +1 -0
  105. package/dist/pie/asset-handler.d.ts +64 -0
  106. package/dist/pie/asset-handler.d.ts.map +1 -0
  107. package/dist/pie/asset-handler.js +238 -0
  108. package/dist/pie/asset-handler.js.map +1 -0
  109. package/dist/pie/component-context.d.ts +22 -0
  110. package/dist/pie/component-context.d.ts.map +1 -0
  111. package/dist/pie/component-context.js +30 -0
  112. package/dist/pie/component-context.js.map +1 -0
  113. package/dist/pie/config.d.ts +39 -0
  114. package/dist/pie/config.d.ts.map +1 -0
  115. package/dist/pie/config.js +174 -0
  116. package/dist/pie/config.js.map +1 -0
  117. package/dist/pie/configure-initialization.d.ts +35 -0
  118. package/dist/pie/configure-initialization.d.ts.map +1 -0
  119. package/dist/pie/configure-initialization.js +141 -0
  120. package/dist/pie/configure-initialization.js.map +1 -0
  121. package/dist/pie/esm-loader.d.ts +93 -0
  122. package/dist/pie/esm-loader.d.ts.map +1 -0
  123. package/dist/pie/esm-loader.js +308 -0
  124. package/dist/pie/esm-loader.js.map +1 -0
  125. package/dist/pie/iife-loader.d.ts +76 -0
  126. package/dist/pie/iife-loader.d.ts.map +1 -0
  127. package/dist/pie/iife-loader.js +303 -0
  128. package/dist/pie/iife-loader.js.map +1 -0
  129. package/dist/pie/index.d.ts +31 -0
  130. package/dist/pie/index.d.ts.map +1 -0
  131. package/dist/pie/index.js +34 -0
  132. package/dist/pie/index.js.map +1 -0
  133. package/dist/pie/initialization.d.ts +40 -0
  134. package/dist/pie/initialization.d.ts.map +1 -0
  135. package/dist/pie/initialization.js +349 -0
  136. package/dist/pie/initialization.js.map +1 -0
  137. package/dist/pie/logger.d.ts +64 -0
  138. package/dist/pie/logger.d.ts.map +1 -0
  139. package/dist/pie/logger.js +45 -0
  140. package/dist/pie/logger.js.map +1 -0
  141. package/dist/pie/math-rendering.d.ts +69 -0
  142. package/dist/pie/math-rendering.d.ts.map +1 -0
  143. package/dist/pie/math-rendering.js +98 -0
  144. package/dist/pie/math-rendering.js.map +1 -0
  145. package/dist/pie/overrides.d.ts +43 -0
  146. package/dist/pie/overrides.d.ts.map +1 -0
  147. package/dist/pie/overrides.js +146 -0
  148. package/dist/pie/overrides.js.map +1 -0
  149. package/dist/pie/player-initializer.d.ts +55 -0
  150. package/dist/pie/player-initializer.d.ts.map +1 -0
  151. package/dist/pie/player-initializer.js +123 -0
  152. package/dist/pie/player-initializer.js.map +1 -0
  153. package/dist/pie/registry.d.ts +11 -0
  154. package/dist/pie/registry.d.ts.map +1 -0
  155. package/dist/pie/registry.js +21 -0
  156. package/dist/pie/registry.js.map +1 -0
  157. package/dist/pie/resource-monitor.d.ts +208 -0
  158. package/dist/pie/resource-monitor.d.ts.map +1 -0
  159. package/dist/pie/resource-monitor.js +969 -0
  160. package/dist/pie/resource-monitor.js.map +1 -0
  161. package/dist/pie/scoring.d.ts +17 -0
  162. package/dist/pie/scoring.d.ts.map +1 -0
  163. package/dist/pie/scoring.js +84 -0
  164. package/dist/pie/scoring.js.map +1 -0
  165. package/dist/pie/types.d.ts +136 -0
  166. package/dist/pie/types.d.ts.map +1 -0
  167. package/dist/pie/types.js +52 -0
  168. package/dist/pie/types.js.map +1 -0
  169. package/dist/pie/updates.d.ts +20 -0
  170. package/dist/pie/updates.d.ts.map +1 -0
  171. package/dist/pie/updates.js +175 -0
  172. package/dist/pie/updates.js.map +1 -0
  173. package/dist/pie/use-resource-monitor.svelte.d.ts +56 -0
  174. package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -0
  175. package/dist/pie/use-resource-monitor.svelte.js +117 -0
  176. package/dist/pie/use-resource-monitor.svelte.js.map +1 -0
  177. package/dist/pie/utils.d.ts +44 -0
  178. package/dist/pie/utils.d.ts.map +1 -0
  179. package/dist/pie/utils.js +74 -0
  180. package/dist/pie/utils.js.map +1 -0
  181. package/dist/types/custom-elements.d.ts +183 -0
  182. package/dist/types/custom-elements.d.ts.map +1 -0
  183. package/dist/types/custom-elements.js +8 -0
  184. package/dist/types/custom-elements.js.map +1 -0
  185. package/dist/types/index.d.ts +761 -0
  186. package/dist/types/index.d.ts.map +1 -0
  187. package/dist/types/index.js +120 -0
  188. package/dist/types/index.js.map +1 -0
  189. package/dist/types/search.d.ts +105 -0
  190. package/dist/types/search.d.ts.map +1 -0
  191. package/dist/types/search.js +12 -0
  192. package/dist/types/search.js.map +1 -0
  193. package/dist/types/transform.d.ts +48 -0
  194. package/dist/types/transform.d.ts.map +1 -0
  195. package/dist/types/transform.js +21 -0
  196. package/dist/types/transform.js.map +1 -0
  197. package/dist/ui/focus-trap.d.ts +10 -0
  198. package/dist/ui/focus-trap.d.ts.map +1 -0
  199. package/dist/ui/focus-trap.js +30 -0
  200. package/dist/ui/focus-trap.js.map +1 -0
  201. package/dist/ui/safe-storage.d.ts +3 -0
  202. package/dist/ui/safe-storage.d.ts.map +1 -0
  203. package/dist/ui/safe-storage.js +21 -0
  204. package/dist/ui/safe-storage.js.map +1 -0
  205. package/package.json +118 -0
  206. package/src/components/PieItemPlayer.svelte +604 -0
  207. package/src/components/PiePreviewLayout.svelte +144 -0
  208. package/src/components/PiePreviewToggle.svelte +110 -0
  209. package/src/components/PieSpinner.svelte +85 -0
  210. package/src/components/ToolSettingsButton.svelte +31 -0
  211. package/src/components/ToolSettingsPanel.svelte +90 -0
  212. package/src/components/index.ts +6 -0
  213. package/src/i18n/README.md +223 -0
  214. package/src/i18n/index.ts +26 -0
  215. package/src/i18n/loader.ts +156 -0
  216. package/src/i18n/scripts/check-coverage.ts +345 -0
  217. package/src/i18n/scripts/scan-hardcoded.ts +342 -0
  218. package/src/i18n/simple-i18n.ts +236 -0
  219. package/src/i18n/translations/ar/common.json +36 -0
  220. package/src/i18n/translations/ar/toolkit.json +48 -0
  221. package/src/i18n/translations/ar/tools.json +109 -0
  222. package/src/i18n/translations/en/common.json +36 -0
  223. package/src/i18n/translations/en/toolkit.json +48 -0
  224. package/src/i18n/translations/en/tools.json +109 -0
  225. package/src/i18n/translations/es/common.json +36 -0
  226. package/src/i18n/translations/es/toolkit.json +48 -0
  227. package/src/i18n/translations/es/tools.json +109 -0
  228. package/src/i18n/translations/zh/common.json +36 -0
  229. package/src/i18n/translations/zh/toolkit.json +48 -0
  230. package/src/i18n/translations/zh/tools.json +109 -0
  231. package/src/i18n/types.ts +66 -0
  232. package/src/i18n/use-i18n-standalone.svelte.ts +184 -0
  233. package/src/i18n/use-i18n.svelte.ts +163 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Console Instrumentation Provider
3
+ *
4
+ * Development provider that logs instrumentation events to the console.
5
+ * Useful for debugging and testing without requiring external instrumentation services.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const provider = new ConsoleInstrumentationProvider();
10
+ * await provider.initialize({ debug: true });
11
+ *
12
+ * provider.trackError(new Error('Test error'), {
13
+ * component: 'test-component',
14
+ * errorType: 'TestError'
15
+ * });
16
+ * // Outputs: [Instrumentation Error] test-component: TestError
17
+ * // Error: Test error
18
+ * // { component: 'test-component', errorType: 'TestError' }
19
+ * ```
20
+ */
21
+ import type { InstrumentationConfig, MetricAttributes } from "../types";
22
+ import { BaseInstrumentationProvider } from "./BaseInstrumentationProvider";
23
+ export interface ConsoleProviderConfig {
24
+ /**
25
+ * Use colored output in console
26
+ *
27
+ * @default true
28
+ */
29
+ useColors?: boolean;
30
+ /**
31
+ * Include stack traces with errors
32
+ *
33
+ * @default true
34
+ */
35
+ includeStackTrace?: boolean;
36
+ /**
37
+ * Group related logs together
38
+ *
39
+ * @default false
40
+ */
41
+ useGroups?: boolean;
42
+ }
43
+ export declare class ConsoleInstrumentationProvider extends BaseInstrumentationProvider {
44
+ readonly providerId = "console";
45
+ readonly providerName = "Console Logger";
46
+ private providerConfig;
47
+ constructor(providerConfig?: ConsoleProviderConfig);
48
+ /**
49
+ * Initialize the console provider
50
+ *
51
+ * @param config Optional configuration
52
+ */
53
+ initialize(config?: InstrumentationConfig): Promise<void>;
54
+ /**
55
+ * Check if provider is ready
56
+ *
57
+ * @returns true if initialized
58
+ */
59
+ isReady(): boolean;
60
+ /**
61
+ * Cleanup provider resources
62
+ */
63
+ destroy(): void;
64
+ /**
65
+ * Track an error to console
66
+ *
67
+ * @param error The error to track
68
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
69
+ */
70
+ protected doTrackError(error: Error, attributes: Record<string, any>): void;
71
+ /**
72
+ * Track an event to console
73
+ *
74
+ * @param eventName Name of the event
75
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
76
+ */
77
+ protected doTrackEvent(eventName: string, attributes: Record<string, any>): void;
78
+ /**
79
+ * Track a metric to console
80
+ *
81
+ * Overrides base class to provide custom formatting.
82
+ *
83
+ * @param metricName Name of the metric
84
+ * @param value Numeric value
85
+ * @param attributes Optional metric attributes
86
+ */
87
+ trackMetric(metricName: string, value: number, attributes?: MetricAttributes): void;
88
+ /**
89
+ * Set user context
90
+ *
91
+ * Logs user context to console.
92
+ *
93
+ * @param userId User identifier
94
+ * @param attributes Optional user attributes
95
+ */
96
+ protected doSetUserContext(userId: string, attributes?: Record<string, any>): void;
97
+ /**
98
+ * Set global attributes
99
+ *
100
+ * Logs global attributes to console.
101
+ *
102
+ * @param attributes Attributes to set globally
103
+ */
104
+ protected doSetGlobalAttributes(attributes: Record<string, any>): void;
105
+ }
106
+ //# sourceMappingURL=ConsoleInstrumentationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleInstrumentationProvider.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/providers/ConsoleInstrumentationProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,8BAA+B,SAAQ,2BAA2B;IAC9E,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,oBAAoB;IAEzC,OAAO,CAAC,cAAc,CAAwB;gBAElC,cAAc,GAAE,qBAA0B;IAStD;;;;OAIG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/D;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;;;;OAKG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAgC3E;;;;;OAKG;IACH,SAAS,CAAC,YAAY,CACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,IAAI;IAgBP;;;;;;;;OAQG;IACH,WAAW,CACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,gBAAgB,GAC3B,IAAI;IA+BP;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,IAAI;IAUP;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAOtE"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Console Instrumentation Provider
3
+ *
4
+ * Development provider that logs instrumentation events to the console.
5
+ * Useful for debugging and testing without requiring external instrumentation services.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const provider = new ConsoleInstrumentationProvider();
10
+ * await provider.initialize({ debug: true });
11
+ *
12
+ * provider.trackError(new Error('Test error'), {
13
+ * component: 'test-component',
14
+ * errorType: 'TestError'
15
+ * });
16
+ * // Outputs: [Instrumentation Error] test-component: TestError
17
+ * // Error: Test error
18
+ * // { component: 'test-component', errorType: 'TestError' }
19
+ * ```
20
+ */
21
+ import { BaseInstrumentationProvider } from "./BaseInstrumentationProvider";
22
+ export class ConsoleInstrumentationProvider extends BaseInstrumentationProvider {
23
+ providerId = "console";
24
+ providerName = "Console Logger";
25
+ providerConfig;
26
+ constructor(providerConfig = {}) {
27
+ super();
28
+ this.providerConfig = {
29
+ useColors: providerConfig.useColors !== false,
30
+ includeStackTrace: providerConfig.includeStackTrace !== false,
31
+ useGroups: providerConfig.useGroups === true,
32
+ };
33
+ }
34
+ /**
35
+ * Initialize the console provider
36
+ *
37
+ * @param config Optional configuration
38
+ */
39
+ async initialize(config) {
40
+ this.config = config;
41
+ this.initialized = true;
42
+ // Merge provider-specific config if provided
43
+ if (config?.providerSettings) {
44
+ this.providerConfig = {
45
+ ...this.providerConfig,
46
+ ...config.providerSettings,
47
+ };
48
+ }
49
+ console.log("%c[ConsoleProvider] Initialized", this.providerConfig.useColors ? "color: green; font-weight: bold" : "");
50
+ }
51
+ /**
52
+ * Check if provider is ready
53
+ *
54
+ * @returns true if initialized
55
+ */
56
+ isReady() {
57
+ return this.initialized;
58
+ }
59
+ /**
60
+ * Cleanup provider resources
61
+ */
62
+ destroy() {
63
+ this.initialized = false;
64
+ console.log("%c[ConsoleProvider] Destroyed", this.providerConfig.useColors ? "color: gray" : "");
65
+ }
66
+ /**
67
+ * Track an error to console
68
+ *
69
+ * @param error The error to track
70
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
71
+ */
72
+ doTrackError(error, attributes) {
73
+ const style = this.providerConfig.useColors
74
+ ? "color: red; font-weight: bold"
75
+ : "";
76
+ const timestamp = new Date().toISOString();
77
+ if (this.providerConfig.useGroups) {
78
+ console.groupCollapsed(`%c[Instrumentation Error] ${attributes.component}: ${attributes.errorType}`, style);
79
+ console.error("Error:", error.message);
80
+ if (this.providerConfig.includeStackTrace && error.stack) {
81
+ console.error("Stack:", error.stack);
82
+ }
83
+ console.log("Attributes:", attributes);
84
+ console.log("Timestamp:", timestamp);
85
+ console.groupEnd();
86
+ }
87
+ else {
88
+ console.error(`%c[Instrumentation Error] ${attributes.component}: ${attributes.errorType}`, style);
89
+ console.error("Error:", error.message);
90
+ if (this.providerConfig.includeStackTrace && error.stack) {
91
+ console.error("Stack:", error.stack);
92
+ }
93
+ console.error("Attributes:", attributes);
94
+ console.error("Timestamp:", timestamp);
95
+ }
96
+ }
97
+ /**
98
+ * Track an event to console
99
+ *
100
+ * @param eventName Name of the event
101
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
102
+ */
103
+ doTrackEvent(eventName, attributes) {
104
+ const style = this.providerConfig.useColors ? "color: blue" : "";
105
+ const timestamp = new Date().toISOString();
106
+ if (this.providerConfig.useGroups) {
107
+ console.groupCollapsed(`%c[Instrumentation Event] ${eventName}`, style);
108
+ console.log("Attributes:", attributes);
109
+ console.log("Timestamp:", timestamp);
110
+ console.groupEnd();
111
+ }
112
+ else {
113
+ console.log(`%c[Instrumentation Event] ${eventName}`, style);
114
+ console.log("Attributes:", attributes);
115
+ console.log("Timestamp:", timestamp);
116
+ }
117
+ }
118
+ /**
119
+ * Track a metric to console
120
+ *
121
+ * Overrides base class to provide custom formatting.
122
+ *
123
+ * @param metricName Name of the metric
124
+ * @param value Numeric value
125
+ * @param attributes Optional metric attributes
126
+ */
127
+ trackMetric(metricName, value, attributes) {
128
+ if (!this.isReady())
129
+ return;
130
+ const style = this.providerConfig.useColors ? "color: green" : "";
131
+ const timestamp = new Date().toISOString();
132
+ const unit = attributes?.unit || "";
133
+ const displayValue = unit ? `${value} ${unit}` : value;
134
+ if (this.providerConfig.useGroups) {
135
+ console.groupCollapsed(`%c[Instrumentation Metric] ${metricName}: ${displayValue}`, style);
136
+ if (attributes) {
137
+ console.log("Attributes:", attributes);
138
+ }
139
+ console.log("Timestamp:", timestamp);
140
+ console.groupEnd();
141
+ }
142
+ else {
143
+ console.log(`%c[Instrumentation Metric] ${metricName}:`, style, displayValue);
144
+ if (attributes) {
145
+ console.log("Attributes:", attributes);
146
+ }
147
+ console.log("Timestamp:", timestamp);
148
+ }
149
+ }
150
+ /**
151
+ * Set user context
152
+ *
153
+ * Logs user context to console.
154
+ *
155
+ * @param userId User identifier
156
+ * @param attributes Optional user attributes
157
+ */
158
+ doSetUserContext(userId, attributes) {
159
+ const style = this.providerConfig.useColors
160
+ ? "color: purple; font-weight: bold"
161
+ : "";
162
+ console.log(`%c[Instrumentation] Set User Context: ${userId}`, style);
163
+ if (attributes) {
164
+ console.log("User Attributes:", attributes);
165
+ }
166
+ }
167
+ /**
168
+ * Set global attributes
169
+ *
170
+ * Logs global attributes to console.
171
+ *
172
+ * @param attributes Attributes to set globally
173
+ */
174
+ doSetGlobalAttributes(attributes) {
175
+ const style = this.providerConfig.useColors
176
+ ? "color: orange; font-weight: bold"
177
+ : "";
178
+ console.log("%c[Instrumentation] Set Global Attributes", style);
179
+ console.log("Attributes:", attributes);
180
+ }
181
+ }
182
+ //# sourceMappingURL=ConsoleInstrumentationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleInstrumentationProvider.js","sourceRoot":"","sources":["../../../src/instrumentation/providers/ConsoleInstrumentationProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * DataDog RUM Instrumentation Provider
3
+ *
4
+ * Example alternative provider for DataDog Real User Monitoring.
5
+ * Demonstrates how to integrate with a third-party instrumentation service.
6
+ *
7
+ * NOTE: This provider requires `@datadog/browser-rum` to be installed:
8
+ * ```bash
9
+ * npm install @datadog/browser-rum
10
+ * ```
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const provider = new DataDogInstrumentationProvider();
15
+ * await provider.initialize({
16
+ * enabled: true,
17
+ * sampleRate: 1.0,
18
+ * providerSettings: {
19
+ * applicationId: 'abc123',
20
+ * clientToken: 'pub_xyz',
21
+ * site: 'datadoghq.com',
22
+ * service: 'pie-players',
23
+ * env: 'production'
24
+ * }
25
+ * });
26
+ *
27
+ * provider.trackError(new Error('Something went wrong'), {
28
+ * component: 'my-component',
29
+ * errorType: 'ValidationError'
30
+ * });
31
+ * ```
32
+ */
33
+ import type { InstrumentationConfig } from "../types";
34
+ import { BaseInstrumentationProvider } from "./BaseInstrumentationProvider";
35
+ /**
36
+ * DataDog-specific configuration
37
+ */
38
+ export interface DataDogConfig {
39
+ /**
40
+ * DataDog application ID
41
+ *
42
+ * Required. Get this from DataDog RUM application settings.
43
+ */
44
+ applicationId: string;
45
+ /**
46
+ * DataDog client token
47
+ *
48
+ * Required. Get this from DataDog RUM application settings.
49
+ */
50
+ clientToken: string;
51
+ /**
52
+ * DataDog site
53
+ *
54
+ * @default 'datadoghq.com'
55
+ * @example 'datadoghq.eu' for EU
56
+ */
57
+ site?: string;
58
+ /**
59
+ * Service name
60
+ *
61
+ * @default 'pie-players'
62
+ */
63
+ service?: string;
64
+ /**
65
+ * Environment name
66
+ *
67
+ * @default 'production'
68
+ * @example 'development', 'staging', 'production'
69
+ */
70
+ env?: string;
71
+ /**
72
+ * Application version
73
+ *
74
+ * @default '1.0.0'
75
+ */
76
+ version?: string;
77
+ /**
78
+ * Session replay sample rate (0-100)
79
+ *
80
+ * @default 0 (disabled)
81
+ * @example 20 to record 20% of sessions
82
+ */
83
+ sessionReplaySampleRate?: number;
84
+ /**
85
+ * Track user interactions
86
+ *
87
+ * @default true
88
+ */
89
+ trackUserInteractions?: boolean;
90
+ /**
91
+ * Track long tasks
92
+ *
93
+ * @default true
94
+ */
95
+ trackLongTasks?: boolean;
96
+ /**
97
+ * Default privacy level for session replay
98
+ *
99
+ * @default 'mask-user-input'
100
+ */
101
+ defaultPrivacyLevel?: "allow" | "mask" | "mask-user-input";
102
+ }
103
+ /**
104
+ * DataDog RUM Instrumentation Provider
105
+ *
106
+ * Integrates PIE players instrumentation with DataDog Real User Monitoring.
107
+ */
108
+ export declare class DataDogInstrumentationProvider extends BaseInstrumentationProvider {
109
+ readonly providerId = "datadog";
110
+ readonly providerName = "DataDog RUM";
111
+ private datadogConfig?;
112
+ /**
113
+ * Initialize the DataDog provider
114
+ *
115
+ * Loads the DataDog RUM SDK and initializes it with the provided configuration.
116
+ *
117
+ * @param config Instrumentation configuration with DataDog-specific settings
118
+ * @throws {Error} If DataDog configuration is invalid or SDK fails to load
119
+ */
120
+ initialize(config?: InstrumentationConfig): Promise<void>;
121
+ /**
122
+ * Check if provider is ready
123
+ *
124
+ * @returns true if DataDog is initialized
125
+ */
126
+ isReady(): boolean;
127
+ /**
128
+ * Cleanup provider resources
129
+ *
130
+ * Marks provider as uninitialized. DataDog RUM SDK is not explicitly
131
+ * destroyed (no cleanup API available).
132
+ */
133
+ destroy(): void;
134
+ /**
135
+ * Track an error with DataDog
136
+ *
137
+ * Calls `datadogRum.addError()`
138
+ *
139
+ * @param error The error to track
140
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
141
+ */
142
+ protected doTrackError(error: Error, attributes: Record<string, any>): void;
143
+ /**
144
+ * Track a custom event/action with DataDog
145
+ *
146
+ * Calls `datadogRum.addAction()`
147
+ *
148
+ * @param eventName Name of the event
149
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
150
+ */
151
+ protected doTrackEvent(eventName: string, attributes: Record<string, any>): void;
152
+ /**
153
+ * Set user context for session tracking
154
+ *
155
+ * Calls `datadogRum.setUser()`
156
+ *
157
+ * @param userId User identifier
158
+ * @param attributes Optional user attributes
159
+ */
160
+ protected doSetUserContext(userId: string, attributes?: Record<string, any>): void;
161
+ /**
162
+ * Set global custom attributes
163
+ *
164
+ * Calls `datadogRum.setGlobalContextProperty()` for each attribute.
165
+ *
166
+ * @param attributes Attributes to set globally
167
+ */
168
+ protected doSetGlobalAttributes(attributes: Record<string, any>): void;
169
+ }
170
+ //# sourceMappingURL=DataDogInstrumentationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDogInstrumentationProvider.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/providers/DataDogInstrumentationProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,iBAAiB,CAAC;CAC3D;AAED;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,2BAA2B;IAC9E,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,iBAAiB;IAEtC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkE/D;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW3E;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,IAAI;IAQP;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,IAAI;IAWP;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAStE"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * DataDog RUM Instrumentation Provider
3
+ *
4
+ * Example alternative provider for DataDog Real User Monitoring.
5
+ * Demonstrates how to integrate with a third-party instrumentation service.
6
+ *
7
+ * NOTE: This provider requires `@datadog/browser-rum` to be installed:
8
+ * ```bash
9
+ * npm install @datadog/browser-rum
10
+ * ```
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const provider = new DataDogInstrumentationProvider();
15
+ * await provider.initialize({
16
+ * enabled: true,
17
+ * sampleRate: 1.0,
18
+ * providerSettings: {
19
+ * applicationId: 'abc123',
20
+ * clientToken: 'pub_xyz',
21
+ * site: 'datadoghq.com',
22
+ * service: 'pie-players',
23
+ * env: 'production'
24
+ * }
25
+ * });
26
+ *
27
+ * provider.trackError(new Error('Something went wrong'), {
28
+ * component: 'my-component',
29
+ * errorType: 'ValidationError'
30
+ * });
31
+ * ```
32
+ */
33
+ import { BaseInstrumentationProvider } from "./BaseInstrumentationProvider";
34
+ /**
35
+ * DataDog RUM Instrumentation Provider
36
+ *
37
+ * Integrates PIE players instrumentation with DataDog Real User Monitoring.
38
+ */
39
+ export class DataDogInstrumentationProvider extends BaseInstrumentationProvider {
40
+ providerId = "datadog";
41
+ providerName = "DataDog RUM";
42
+ datadogConfig;
43
+ /**
44
+ * Initialize the DataDog provider
45
+ *
46
+ * Loads the DataDog RUM SDK and initializes it with the provided configuration.
47
+ *
48
+ * @param config Instrumentation configuration with DataDog-specific settings
49
+ * @throws {Error} If DataDog configuration is invalid or SDK fails to load
50
+ */
51
+ async initialize(config) {
52
+ if (typeof window === "undefined") {
53
+ throw new Error("[DataDogProvider] DataDog RUM requires browser environment");
54
+ }
55
+ this.config = config;
56
+ this.datadogConfig = config?.providerSettings;
57
+ if (!this.datadogConfig?.applicationId ||
58
+ !this.datadogConfig?.clientToken) {
59
+ throw new Error("[DataDogProvider] applicationId and clientToken are required in providerSettings");
60
+ }
61
+ try {
62
+ // Dynamically import DataDog RUM SDK
63
+ // @ts-expect-error - Optional peer dependency
64
+ const { datadogRum } = await import("@datadog/browser-rum");
65
+ // Initialize DataDog RUM
66
+ datadogRum.init({
67
+ applicationId: this.datadogConfig.applicationId,
68
+ clientToken: this.datadogConfig.clientToken,
69
+ site: this.datadogConfig.site || "datadoghq.com",
70
+ service: this.datadogConfig.service || "pie-players",
71
+ env: this.datadogConfig.env || "production",
72
+ version: this.datadogConfig.version || "1.0.0",
73
+ sessionSampleRate: config?.sampleRate !== undefined ? config.sampleRate * 100 : 100,
74
+ sessionReplaySampleRate: this.datadogConfig.sessionReplaySampleRate || 0,
75
+ trackUserInteractions: this.datadogConfig.trackUserInteractions !== false,
76
+ trackResources: true,
77
+ trackLongTasks: this.datadogConfig.trackLongTasks !== false,
78
+ defaultPrivacyLevel: this.datadogConfig.defaultPrivacyLevel || "mask-user-input",
79
+ });
80
+ // Start session replay if configured
81
+ if (this.datadogConfig.sessionReplaySampleRate &&
82
+ this.datadogConfig.sessionReplaySampleRate > 0) {
83
+ datadogRum.startSessionReplayRecording();
84
+ }
85
+ this.initialized = true;
86
+ if (this.config?.debug) {
87
+ console.log("[DataDogProvider] Initialized successfully", this.datadogConfig);
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error("[DataDogProvider] Failed to initialize:", error);
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Check if provider is ready
97
+ *
98
+ * @returns true if DataDog is initialized
99
+ */
100
+ isReady() {
101
+ return this.initialized;
102
+ }
103
+ /**
104
+ * Cleanup provider resources
105
+ *
106
+ * Marks provider as uninitialized. DataDog RUM SDK is not explicitly
107
+ * destroyed (no cleanup API available).
108
+ */
109
+ destroy() {
110
+ this.initialized = false;
111
+ if (this.config?.debug) {
112
+ console.log("[DataDogProvider] Destroyed");
113
+ }
114
+ }
115
+ /**
116
+ * Track an error with DataDog
117
+ *
118
+ * Calls `datadogRum.addError()`
119
+ *
120
+ * @param error The error to track
121
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
122
+ */
123
+ doTrackError(error, attributes) {
124
+ // DataDog requires dynamic import
125
+ // @ts-expect-error - Optional peer dependency
126
+ import("@datadog/browser-rum").then(({ datadogRum }) => {
127
+ datadogRum.addError(error, {
128
+ ...attributes,
129
+ source: "custom",
130
+ });
131
+ });
132
+ }
133
+ /**
134
+ * Track a custom event/action with DataDog
135
+ *
136
+ * Calls `datadogRum.addAction()`
137
+ *
138
+ * @param eventName Name of the event
139
+ * @param attributes Transformed attributes (already filtered and transformed by base class)
140
+ */
141
+ doTrackEvent(eventName, attributes) {
142
+ // DataDog requires dynamic import
143
+ // @ts-expect-error - Optional peer dependency
144
+ import("@datadog/browser-rum").then(({ datadogRum }) => {
145
+ datadogRum.addAction(eventName, attributes);
146
+ });
147
+ }
148
+ /**
149
+ * Set user context for session tracking
150
+ *
151
+ * Calls `datadogRum.setUser()`
152
+ *
153
+ * @param userId User identifier
154
+ * @param attributes Optional user attributes
155
+ */
156
+ doSetUserContext(userId, attributes) {
157
+ // DataDog requires dynamic import
158
+ // @ts-expect-error - Optional peer dependency
159
+ import("@datadog/browser-rum").then(({ datadogRum }) => {
160
+ datadogRum.setUser({
161
+ id: userId,
162
+ ...attributes,
163
+ });
164
+ });
165
+ }
166
+ /**
167
+ * Set global custom attributes
168
+ *
169
+ * Calls `datadogRum.setGlobalContextProperty()` for each attribute.
170
+ *
171
+ * @param attributes Attributes to set globally
172
+ */
173
+ doSetGlobalAttributes(attributes) {
174
+ // DataDog requires dynamic import
175
+ // @ts-expect-error - Optional peer dependency
176
+ import("@datadog/browser-rum").then(({ datadogRum }) => {
177
+ for (const [key, value] of Object.entries(attributes)) {
178
+ datadogRum.setGlobalContextProperty(key, value);
179
+ }
180
+ });
181
+ }
182
+ }
183
+ //# sourceMappingURL=DataDogInstrumentationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDogInstrumentationProvider.js","sourceRoot":"","sources":["../../../src/instrumentation/providers/DataDogInstrumentationProvider.ts"],"names":[],"mappings":"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"}