@pie-players/pie-players-shared 0.3.28 → 0.3.30
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.
- package/{src → dist}/components/PieItemPlayer.svelte +156 -88
- package/dist/i18n/translations/en/tools.json +1 -1
- package/{src → dist}/i18n/use-i18n-standalone.svelte.ts +1 -0
- package/{src → dist}/i18n/use-i18n.svelte.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/loader-config.d.ts +25 -0
- package/dist/loader-config.d.ts.map +1 -1
- package/dist/loader-config.js +5 -0
- package/dist/loader-config.js.map +1 -1
- package/dist/pie/config.d.ts.map +1 -1
- package/dist/pie/config.js +12 -5
- package/dist/pie/config.js.map +1 -1
- package/dist/pie/custom-element-define.d.ts +1 -1
- package/dist/pie/custom-element-define.d.ts.map +1 -1
- package/dist/pie/custom-element-define.js +2 -2
- package/dist/pie/custom-element-define.js.map +1 -1
- package/dist/pie/iife-loader.d.ts +35 -0
- package/dist/pie/iife-loader.d.ts.map +1 -1
- package/dist/pie/iife-loader.js +138 -2
- package/dist/pie/iife-loader.js.map +1 -1
- package/dist/pie/index.d.ts +3 -1
- package/dist/pie/index.d.ts.map +1 -1
- package/dist/pie/index.js +1 -0
- package/dist/pie/index.js.map +1 -1
- package/dist/pie/overrides.d.ts +9 -0
- package/dist/pie/overrides.d.ts.map +1 -1
- package/dist/pie/overrides.js +36 -0
- package/dist/pie/overrides.js.map +1 -1
- package/dist/pie/resource-monitor.d.ts +17 -0
- package/dist/pie/resource-monitor.d.ts.map +1 -1
- package/dist/pie/resource-monitor.js +284 -81
- package/dist/pie/resource-monitor.js.map +1 -1
- package/dist/pie/updates.d.ts.map +1 -1
- package/dist/pie/updates.js +65 -2
- package/dist/pie/updates.js.map +1 -1
- package/dist/security/index.d.ts +5 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +5 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/sanitize-item-markup.d.ts +46 -0
- package/dist/security/sanitize-item-markup.d.ts.map +1 -0
- package/dist/security/sanitize-item-markup.js +174 -0
- package/dist/security/sanitize-item-markup.js.map +1 -0
- package/dist/security/sanitize-svg-icon.d.ts +15 -0
- package/dist/security/sanitize-svg-icon.d.ts.map +1 -0
- package/dist/security/sanitize-svg-icon.js +89 -0
- package/dist/security/sanitize-svg-icon.js.map +1 -0
- package/dist/security/validate-style-url.d.ts +28 -0
- package/dist/security/validate-style-url.d.ts.map +1 -0
- package/dist/security/validate-style-url.js +58 -0
- package/dist/security/validate-style-url.js.map +1 -0
- package/dist/security/wrap-overwide-images.d.ts +31 -0
- package/dist/security/wrap-overwide-images.d.ts.map +1 -0
- package/dist/security/wrap-overwide-images.js +92 -0
- package/dist/security/wrap-overwide-images.js.map +1 -0
- package/dist/server/npm-registry.d.ts +8 -0
- package/dist/server/npm-registry.d.ts.map +1 -0
- package/dist/server/npm-registry.js +60 -0
- package/dist/server/npm-registry.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/ui/first-focusable.d.ts +21 -0
- package/dist/ui/first-focusable.d.ts.map +1 -0
- package/dist/ui/first-focusable.js +73 -0
- package/dist/ui/first-focusable.js.map +1 -0
- package/dist/ui/focus-trap.d.ts.map +1 -1
- package/dist/ui/focus-trap.js +2 -13
- package/dist/ui/focus-trap.js.map +1 -1
- package/package.json +44 -34
- package/dist/i18n/scripts/check-coverage.d.ts +0 -16
- package/dist/i18n/scripts/check-coverage.d.ts.map +0 -1
- package/dist/i18n/scripts/check-coverage.js +0 -262
- package/dist/i18n/scripts/check-coverage.js.map +0 -1
- package/dist/i18n/scripts/scan-hardcoded.d.ts +0 -16
- package/dist/i18n/scripts/scan-hardcoded.d.ts.map +0 -1
- package/dist/i18n/scripts/scan-hardcoded.js +0 -266
- package/dist/i18n/scripts/scan-hardcoded.js.map +0 -1
- package/dist/i18n/use-i18n-standalone.svelte.d.ts +0 -87
- package/dist/i18n/use-i18n-standalone.svelte.d.ts.map +0 -1
- package/dist/i18n/use-i18n-standalone.svelte.js +0 -151
- package/dist/i18n/use-i18n-standalone.svelte.js.map +0 -1
- package/dist/i18n/use-i18n.svelte.d.ts +0 -67
- package/dist/i18n/use-i18n.svelte.d.ts.map +0 -1
- package/dist/i18n/use-i18n.svelte.js +0 -144
- package/dist/i18n/use-i18n.svelte.js.map +0 -1
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts +0 -170
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts.map +0 -1
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.js +0 -183
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.js.map +0 -1
- package/dist/theming/css-variables.d.ts +0 -7
- package/dist/theming/css-variables.d.ts.map +0 -1
- package/dist/theming/css-variables.js +0 -43
- package/dist/theming/css-variables.js.map +0 -1
- package/dist/theming/index.d.ts +0 -4
- package/dist/theming/index.d.ts.map +0 -1
- package/dist/theming/index.js +0 -3
- package/dist/theming/index.js.map +0 -1
- package/dist/theming/presets.d.ts +0 -7
- package/dist/theming/presets.d.ts.map +0 -1
- package/dist/theming/presets.js +0 -146
- package/dist/theming/presets.js.map +0 -1
- package/dist/theming/types.d.ts +0 -5
- package/dist/theming/types.d.ts.map +0 -1
- package/dist/theming/types.js +0 -2
- package/dist/theming/types.js.map +0 -1
- package/dist/types/custom-elements.d.ts +0 -158
- package/dist/types/custom-elements.d.ts.map +0 -1
- package/dist/types/custom-elements.js +0 -8
- package/dist/types/custom-elements.js.map +0 -1
- package/dist/types/search.d.ts +0 -105
- package/dist/types/search.d.ts.map +0 -1
- package/dist/types/search.js +0 -12
- package/dist/types/search.js.map +0 -1
- package/dist/types/transform.d.ts +0 -48
- package/dist/types/transform.d.ts.map +0 -1
- package/dist/types/transform.js +0 -21
- package/dist/types/transform.js.map +0 -1
- package/src/i18n/README.md +0 -223
- package/src/i18n/index.ts +0 -26
- package/src/i18n/loader.ts +0 -156
- package/src/i18n/scripts/check-coverage.ts +0 -345
- package/src/i18n/scripts/scan-hardcoded.ts +0 -342
- package/src/i18n/simple-i18n.ts +0 -236
- package/src/i18n/translations/ar/common.json +0 -36
- package/src/i18n/translations/ar/toolkit.json +0 -48
- package/src/i18n/translations/ar/tools.json +0 -103
- package/src/i18n/translations/en/common.json +0 -36
- package/src/i18n/translations/en/toolkit.json +0 -48
- package/src/i18n/translations/en/tools.json +0 -103
- package/src/i18n/translations/es/common.json +0 -36
- package/src/i18n/translations/es/toolkit.json +0 -48
- package/src/i18n/translations/es/tools.json +0 -103
- package/src/i18n/translations/zh/common.json +0 -36
- package/src/i18n/translations/zh/toolkit.json +0 -48
- package/src/i18n/translations/zh/tools.json +0 -103
- package/src/i18n/types.ts +0 -66
- /package/{src → dist}/components/PiePreviewLayout.svelte +0 -0
- /package/{src → dist}/components/PiePreviewToggle.svelte +0 -0
- /package/{src → dist}/components/PieSpinner.svelte +0 -0
- /package/{src → dist}/components/ToolSettingsButton.svelte +0 -0
- /package/{src → dist}/components/ToolSettingsPanel.svelte +0 -0
- /package/{src → dist}/components/index.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-i18n-standalone.svelte.d.ts","sourceRoot":"","sources":["../../src/i18n/use-i18n-standalone.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,uBAA4B;IAuEpE;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;aAnDY,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM;IAsD5D;;OAEG;cAhDE,MAAM,SACJ,MAAM,WACJ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC1B,MAAM;IAgDR;;OAEG;2BA3CgC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;IA8CzD;;OAEG;;IAKH;;OAEG;wBACiB,MAAM,GAAG,OAAO;IAIpC;;OAEG;gBACS,MAAM,GAAG,OAAO;IAI5B;;OAEG;;EAKJ"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Standalone i18n Composable
|
|
3
|
-
*
|
|
4
|
-
* Lightweight i18n for standalone components that don't use the service architecture.
|
|
5
|
-
* Creates its own internal I18nService instance with hybrid loading.
|
|
6
|
-
*
|
|
7
|
-
* Use this when:
|
|
8
|
-
* - Building standalone components (tools, players) without full toolkit integration
|
|
9
|
-
* - You want simple i18n without dependency injection
|
|
10
|
-
*
|
|
11
|
-
* Use `useI18n()` when:
|
|
12
|
-
* - Working within the full assessment toolkit architecture
|
|
13
|
-
* - You need centralized locale management across the application
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```svelte
|
|
17
|
-
* <script lang="ts">
|
|
18
|
-
* import { useI18nStandalone } from '@pie-players/pie-players-shared/i18n';
|
|
19
|
-
*
|
|
20
|
-
* const i18n = useI18nStandalone({ locale: 'en' });
|
|
21
|
-
* </script>
|
|
22
|
-
*
|
|
23
|
-
* <button>{i18n.t('common.save')}</button>
|
|
24
|
-
* <span dir={i18n.direction}>{i18n.tn('assessment.questions', 10)}</span>
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
import { BUNDLED_TRANSLATIONS, loadTranslations } from "./loader.js";
|
|
28
|
-
import { SimpleI18n } from "./simple-i18n.js";
|
|
29
|
-
/**
|
|
30
|
-
* Create a standalone i18n instance
|
|
31
|
-
*
|
|
32
|
-
* @param config Configuration options
|
|
33
|
-
* @returns Reactive i18n interface
|
|
34
|
-
*/
|
|
35
|
-
export function useI18nStandalone(config = {}) {
|
|
36
|
-
let locale = $state(config.locale || "en");
|
|
37
|
-
let direction = $state("ltr");
|
|
38
|
-
let isLoading = $state(false);
|
|
39
|
-
// Create internal service instance
|
|
40
|
-
const service = new SimpleI18n({
|
|
41
|
-
locale: config.locale,
|
|
42
|
-
fallbackLocale: config.fallbackLocale || "en",
|
|
43
|
-
bundledTranslations: BUNDLED_TRANSLATIONS,
|
|
44
|
-
loadTranslations,
|
|
45
|
-
debug: config.debug,
|
|
46
|
-
});
|
|
47
|
-
// Initialize service
|
|
48
|
-
$effect(() => {
|
|
49
|
-
service
|
|
50
|
-
.initialize({
|
|
51
|
-
locale: config.locale,
|
|
52
|
-
fallbackLocale: config.fallbackLocale || "en",
|
|
53
|
-
bundledTranslations: BUNDLED_TRANSLATIONS,
|
|
54
|
-
loadTranslations,
|
|
55
|
-
debug: config.debug,
|
|
56
|
-
})
|
|
57
|
-
.then(() => {
|
|
58
|
-
locale = service.getLocale();
|
|
59
|
-
direction = service.getDirection();
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
// Subscribe to service changes
|
|
63
|
-
$effect(() => {
|
|
64
|
-
const unsubscribe = service.subscribe(() => {
|
|
65
|
-
locale = service.getLocale();
|
|
66
|
-
direction = service.getDirection();
|
|
67
|
-
});
|
|
68
|
-
return unsubscribe;
|
|
69
|
-
});
|
|
70
|
-
/**
|
|
71
|
-
* Translate a key with optional interpolation
|
|
72
|
-
*/
|
|
73
|
-
function t(key, params) {
|
|
74
|
-
return service.t(key, params);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Translate with pluralization
|
|
78
|
-
*/
|
|
79
|
-
function tn(key, count, params) {
|
|
80
|
-
return service.tn(key, count, params);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Change locale (async)
|
|
84
|
-
*/
|
|
85
|
-
async function setLocale(newLocale) {
|
|
86
|
-
isLoading = true;
|
|
87
|
-
try {
|
|
88
|
-
await service.setLocale(newLocale);
|
|
89
|
-
}
|
|
90
|
-
finally {
|
|
91
|
-
isLoading = false;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
/**
|
|
96
|
-
* Current locale (reactive)
|
|
97
|
-
*/
|
|
98
|
-
get locale() {
|
|
99
|
-
return locale;
|
|
100
|
-
},
|
|
101
|
-
/**
|
|
102
|
-
* Current text direction (reactive)
|
|
103
|
-
*/
|
|
104
|
-
get direction() {
|
|
105
|
-
return direction;
|
|
106
|
-
},
|
|
107
|
-
/**
|
|
108
|
-
* Loading state (reactive)
|
|
109
|
-
*/
|
|
110
|
-
get isLoading() {
|
|
111
|
-
return isLoading;
|
|
112
|
-
},
|
|
113
|
-
/**
|
|
114
|
-
* Translate function
|
|
115
|
-
*/
|
|
116
|
-
t,
|
|
117
|
-
/**
|
|
118
|
-
* Translate with pluralization
|
|
119
|
-
*/
|
|
120
|
-
tn,
|
|
121
|
-
/**
|
|
122
|
-
* Change locale
|
|
123
|
-
*/
|
|
124
|
-
setLocale,
|
|
125
|
-
/**
|
|
126
|
-
* Get available locales
|
|
127
|
-
*/
|
|
128
|
-
get availableLocales() {
|
|
129
|
-
return service.getAvailableLocales();
|
|
130
|
-
},
|
|
131
|
-
/**
|
|
132
|
-
* Check if locale is loaded
|
|
133
|
-
*/
|
|
134
|
-
isLocaleLoaded(loc) {
|
|
135
|
-
return service.isLocaleLoaded(loc);
|
|
136
|
-
},
|
|
137
|
-
/**
|
|
138
|
-
* Check if translation key exists
|
|
139
|
-
*/
|
|
140
|
-
hasKey(key) {
|
|
141
|
-
return service.hasKey(key);
|
|
142
|
-
},
|
|
143
|
-
/**
|
|
144
|
-
* Access underlying service (for advanced use cases)
|
|
145
|
-
*/
|
|
146
|
-
get service() {
|
|
147
|
-
return service;
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=use-i18n-standalone.svelte.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-i18n-standalone.svelte.js","sourceRoot":"","sources":["../../src/i18n/use-i18n-standalone.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Svelte 5 Composable for i18n
|
|
3
|
-
*
|
|
4
|
-
* Provides reactive translation functions and locale state.
|
|
5
|
-
* Uses Svelte 5 runes for reactivity.
|
|
6
|
-
*
|
|
7
|
-
* Usage in a Svelte 5 component:
|
|
8
|
-
* ```svelte
|
|
9
|
-
* <script lang="ts">
|
|
10
|
-
* import { useI18n } from '@pie-players/pie-players-shared/i18n';
|
|
11
|
-
*
|
|
12
|
-
* let { player } = $props();
|
|
13
|
-
* const i18n = useI18n(() => player.getI18nService());
|
|
14
|
-
* </script>
|
|
15
|
-
*
|
|
16
|
-
* <button>{i18n.t('common.save')}</button>
|
|
17
|
-
* <span dir={i18n.direction}>
|
|
18
|
-
* {i18n.tn('assessment.questions', totalQuestions)}
|
|
19
|
-
* </span>
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
import type { I18nServiceApi } from "./types.js";
|
|
23
|
-
/**
|
|
24
|
-
* Svelte 5 composable for internationalization
|
|
25
|
-
*
|
|
26
|
-
* @param getService - Function that returns the I18nService instance (reactive)
|
|
27
|
-
* @returns Object with reactive locale, direction, and translation functions
|
|
28
|
-
*/
|
|
29
|
-
export declare function useI18n(getService: () => I18nServiceApi | undefined): {
|
|
30
|
-
/**
|
|
31
|
-
* Current locale (reactive)
|
|
32
|
-
*/
|
|
33
|
-
readonly locale: string;
|
|
34
|
-
/**
|
|
35
|
-
* Current text direction (reactive)
|
|
36
|
-
*/
|
|
37
|
-
readonly direction: "ltr" | "rtl";
|
|
38
|
-
/**
|
|
39
|
-
* Loading state (reactive)
|
|
40
|
-
*/
|
|
41
|
-
readonly isLoading: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Translate function
|
|
44
|
-
*/
|
|
45
|
-
t: (key: string, params?: Record<string, any>) => string;
|
|
46
|
-
/**
|
|
47
|
-
* Translate with pluralization
|
|
48
|
-
*/
|
|
49
|
-
tn: (key: string, count: number, params?: Record<string, any>) => string;
|
|
50
|
-
/**
|
|
51
|
-
* Change locale
|
|
52
|
-
*/
|
|
53
|
-
setLocale: (newLocale: string) => Promise<void>;
|
|
54
|
-
/**
|
|
55
|
-
* Get available locales
|
|
56
|
-
*/
|
|
57
|
-
readonly availableLocales: string[];
|
|
58
|
-
/**
|
|
59
|
-
* Check if locale is loaded
|
|
60
|
-
*/
|
|
61
|
-
isLocaleLoaded(loc: string): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Check if translation key exists
|
|
64
|
-
*/
|
|
65
|
-
hasKey(key: string): boolean;
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=use-i18n.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-i18n.svelte.d.ts","sourceRoot":"","sources":["../../src/i18n/use-i18n.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS;IA2ElE;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;aA/DY,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM;IAkE5D;;OAEG;cAtDE,MAAM,SACJ,MAAM,WACJ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC1B,MAAM;IAsDR;;OAEG;2BA9CgC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;IAiDzD;;OAEG;;IAKH;;OAEG;wBACiB,MAAM,GAAG,OAAO;IAIpC;;OAEG;gBACS,MAAM,GAAG,OAAO;EAI7B"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Svelte 5 Composable for i18n
|
|
3
|
-
*
|
|
4
|
-
* Provides reactive translation functions and locale state.
|
|
5
|
-
* Uses Svelte 5 runes for reactivity.
|
|
6
|
-
*
|
|
7
|
-
* Usage in a Svelte 5 component:
|
|
8
|
-
* ```svelte
|
|
9
|
-
* <script lang="ts">
|
|
10
|
-
* import { useI18n } from '@pie-players/pie-players-shared/i18n';
|
|
11
|
-
*
|
|
12
|
-
* let { player } = $props();
|
|
13
|
-
* const i18n = useI18n(() => player.getI18nService());
|
|
14
|
-
* </script>
|
|
15
|
-
*
|
|
16
|
-
* <button>{i18n.t('common.save')}</button>
|
|
17
|
-
* <span dir={i18n.direction}>
|
|
18
|
-
* {i18n.tn('assessment.questions', totalQuestions)}
|
|
19
|
-
* </span>
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* Svelte 5 composable for internationalization
|
|
24
|
-
*
|
|
25
|
-
* @param getService - Function that returns the I18nService instance (reactive)
|
|
26
|
-
* @returns Object with reactive locale, direction, and translation functions
|
|
27
|
-
*/
|
|
28
|
-
export function useI18n(getService) {
|
|
29
|
-
let locale = $state("en");
|
|
30
|
-
let direction = $state("ltr");
|
|
31
|
-
let isLoading = $state(false);
|
|
32
|
-
// Get service instance reactively
|
|
33
|
-
const service = $derived(getService());
|
|
34
|
-
// Subscribe to service changes
|
|
35
|
-
$effect(() => {
|
|
36
|
-
if (service) {
|
|
37
|
-
// Initialize state from service
|
|
38
|
-
locale = service.getLocale();
|
|
39
|
-
direction = service.getDirection();
|
|
40
|
-
// Subscribe to changes
|
|
41
|
-
const unsubscribe = service.subscribe(() => {
|
|
42
|
-
locale = service.getLocale();
|
|
43
|
-
direction = service.getDirection();
|
|
44
|
-
});
|
|
45
|
-
// Cleanup subscription
|
|
46
|
-
return unsubscribe;
|
|
47
|
-
}
|
|
48
|
-
// Return no-op cleanup if service is undefined
|
|
49
|
-
return () => { };
|
|
50
|
-
});
|
|
51
|
-
/**
|
|
52
|
-
* Translate a key with optional interpolation
|
|
53
|
-
*
|
|
54
|
-
* @param key Translation key (e.g., 'common.save')
|
|
55
|
-
* @param params Optional parameters for interpolation
|
|
56
|
-
* @returns Translated string
|
|
57
|
-
*/
|
|
58
|
-
function t(key, params) {
|
|
59
|
-
if (!service)
|
|
60
|
-
return key;
|
|
61
|
-
return service.t(key, params);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Translate with pluralization
|
|
65
|
-
*
|
|
66
|
-
* @param key Translation key
|
|
67
|
-
* @param count Count for pluralization
|
|
68
|
-
* @param params Optional parameters for interpolation
|
|
69
|
-
* @returns Translated string with plural form
|
|
70
|
-
*/
|
|
71
|
-
function tn(key, count, params) {
|
|
72
|
-
if (!service)
|
|
73
|
-
return key;
|
|
74
|
-
return service.tn(key, count, params);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Change locale (async)
|
|
78
|
-
*
|
|
79
|
-
* @param newLocale Locale code (e.g., 'en', 'es', 'zh', 'ar')
|
|
80
|
-
*/
|
|
81
|
-
async function setLocale(newLocale) {
|
|
82
|
-
if (!service)
|
|
83
|
-
return;
|
|
84
|
-
isLoading = true;
|
|
85
|
-
try {
|
|
86
|
-
await service.setLocale(newLocale);
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
isLoading = false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
// Return reactive getters and functions
|
|
93
|
-
return {
|
|
94
|
-
/**
|
|
95
|
-
* Current locale (reactive)
|
|
96
|
-
*/
|
|
97
|
-
get locale() {
|
|
98
|
-
return locale;
|
|
99
|
-
},
|
|
100
|
-
/**
|
|
101
|
-
* Current text direction (reactive)
|
|
102
|
-
*/
|
|
103
|
-
get direction() {
|
|
104
|
-
return direction;
|
|
105
|
-
},
|
|
106
|
-
/**
|
|
107
|
-
* Loading state (reactive)
|
|
108
|
-
*/
|
|
109
|
-
get isLoading() {
|
|
110
|
-
return isLoading;
|
|
111
|
-
},
|
|
112
|
-
/**
|
|
113
|
-
* Translate function
|
|
114
|
-
*/
|
|
115
|
-
t,
|
|
116
|
-
/**
|
|
117
|
-
* Translate with pluralization
|
|
118
|
-
*/
|
|
119
|
-
tn,
|
|
120
|
-
/**
|
|
121
|
-
* Change locale
|
|
122
|
-
*/
|
|
123
|
-
setLocale,
|
|
124
|
-
/**
|
|
125
|
-
* Get available locales
|
|
126
|
-
*/
|
|
127
|
-
get availableLocales() {
|
|
128
|
-
return service?.getAvailableLocales() || [];
|
|
129
|
-
},
|
|
130
|
-
/**
|
|
131
|
-
* Check if locale is loaded
|
|
132
|
-
*/
|
|
133
|
-
isLocaleLoaded(loc) {
|
|
134
|
-
return service?.isLocaleLoaded(loc) || false;
|
|
135
|
-
},
|
|
136
|
-
/**
|
|
137
|
-
* Check if translation key exists
|
|
138
|
-
*/
|
|
139
|
-
hasKey(key) {
|
|
140
|
-
return service?.hasKey(key) || false;
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=use-i18n.svelte.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-i18n.svelte.js","sourceRoot":"","sources":["../../src/i18n/use-i18n.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,UAA4C;IACnE,IAAI,MAAM,GAAG,MAAM,CAAS,IAAI,CAAC,CAAC;IAClC,IAAI,SAAS,GAAG,MAAM,CAAgB,KAAK,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,kCAAkC;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvC,+BAA+B;IAC/B,OAAO,CAAC,GAAG,EAAE;QACZ,IAAI,OAAO,EAAE,CAAC;YACb,gCAAgC;YAChC,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAEnC,uBAAuB;YACvB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;gBAC1C,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7B,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,uBAAuB;YACvB,OAAO,WAAW,CAAC;QACpB,CAAC;QACD,+CAA+C;QAC/C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,GAAW,EAAE,MAA4B;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,EAAE,CACV,GAAW,EACX,KAAa,EACb,MAA4B;QAE5B,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC;QACzB,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,SAAS,CAAC,SAAiB;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACV,SAAS,GAAG,KAAK,CAAC;QACnB,CAAC;IACF,CAAC;IAED,wCAAwC;IACxC,OAAO;QACN;;WAEG;QACH,IAAI,MAAM;YACT,OAAO,MAAM,CAAC;QACf,CAAC;QAED;;WAEG;QACH,IAAI,SAAS;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED;;WAEG;QACH,IAAI,SAAS;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED;;WAEG;QACH,CAAC;QAED;;WAEG;QACH,EAAE;QAEF;;WAEG;QACH,SAAS;QAET;;WAEG;QACH,IAAI,gBAAgB;YACnB,OAAO,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED;;WAEG;QACH,cAAc,CAAC,GAAW;YACzB,OAAO,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QAC9C,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,GAAW;YACjB,OAAO,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QACtC,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,170 +0,0 @@
|
|
|
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.js";
|
|
34
|
-
import { BaseInstrumentationProvider } from "./BaseInstrumentationProvider.js";
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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,aAAa,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E;;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"}
|