@croct/plug 0.16.5 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/api/evaluate.cjs +45 -0
  2. package/api/evaluate.d.cts +23 -0
  3. package/api/evaluate.d.ts +9 -7
  4. package/api/evaluate.js +20 -22
  5. package/api/fetchContent.cjs +55 -0
  6. package/api/fetchContent.d.cts +45 -0
  7. package/api/fetchContent.d.ts +31 -11
  8. package/api/fetchContent.js +31 -21
  9. package/api/index.cjs +23 -0
  10. package/api/index.d.cts +27 -0
  11. package/api/index.d.ts +27 -2
  12. package/api/index.js +2 -6
  13. package/component.cjs +15 -0
  14. package/component.d.cts +19 -0
  15. package/component.d.ts +12 -9
  16. package/component.js +0 -3
  17. package/constants.cjs +39 -0
  18. package/constants.d.cts +7 -0
  19. package/constants.d.ts +7 -5
  20. package/constants.js +12 -9
  21. package/index.cjs +24 -0
  22. package/index.d.cts +27 -0
  23. package/index.d.ts +26 -3
  24. package/index.js +5 -6
  25. package/package.json +34 -7
  26. package/playground.cjs +166 -0
  27. package/playground.d.cts +64 -0
  28. package/playground.d.ts +18 -8
  29. package/playground.js +130 -138
  30. package/plug.cjs +279 -0
  31. package/plug.d.cts +86 -0
  32. package/plug.d.ts +34 -17
  33. package/plug.js +239 -244
  34. package/plugin.cjs +15 -0
  35. package/plugin.d.cts +41 -0
  36. package/plugin.d.ts +18 -8
  37. package/plugin.js +0 -3
  38. package/preview.cjs +180 -0
  39. package/preview.d.cts +35 -0
  40. package/preview.d.ts +18 -6
  41. package/preview.js +143 -152
  42. package/sdk/apiKey.cjs +21 -0
  43. package/sdk/apiKey.js +1 -5
  44. package/sdk/evaluation.cjs +34 -0
  45. package/sdk/evaluation.d.cts +2 -0
  46. package/sdk/evaluation.d.ts +1 -1
  47. package/sdk/evaluation.js +8 -10
  48. package/sdk/index.cjs +33 -0
  49. package/sdk/index.d.cts +15 -0
  50. package/sdk/index.d.ts +9 -6
  51. package/sdk/index.js +8 -10
  52. package/sdk/json.cjs +15 -0
  53. package/sdk/json.d.cts +6 -0
  54. package/sdk/json.d.ts +4 -1
  55. package/sdk/json.js +0 -5
  56. package/sdk/sdkEvents.cjs +15 -0
  57. package/sdk/sdkEvents.d.cts +1 -0
  58. package/sdk/sdkEvents.js +0 -3
  59. package/sdk/token.cjs +27 -0
  60. package/sdk/token.d.cts +7 -0
  61. package/sdk/token.d.ts +7 -1
  62. package/sdk/token.js +4 -6
  63. package/sdk/tracking.cjs +27 -0
  64. package/sdk/tracking.d.cts +9 -0
  65. package/sdk/tracking.d.ts +8 -5
  66. package/sdk/tracking.js +4 -6
  67. package/sdk/validation.cjs +23 -0
  68. package/sdk/validation.js +2 -6
  69. package/slot.cjs +15 -0
  70. package/slot.d.cts +42 -0
  71. package/slot.d.ts +14 -12
  72. package/slot.js +0 -3
  73. package/versioning.cjs +15 -0
  74. package/versioning.d.cts +26 -0
  75. package/versioning.d.ts +8 -6
  76. package/versioning.js +0 -3
  77. package/api/evaluate.js.map +0 -1
  78. package/api/fetchContent.js.map +0 -1
  79. package/api/index.js.map +0 -1
  80. package/component.js.map +0 -1
  81. package/constants.js.map +0 -1
  82. package/index.js.map +0 -1
  83. package/playground.js.map +0 -1
  84. package/plug.js.map +0 -1
  85. package/plugin.js.map +0 -1
  86. package/preview.js.map +0 -1
  87. package/sdk/apiKey.js.map +0 -1
  88. package/sdk/evaluation.js.map +0 -1
  89. package/sdk/index.js.map +0 -1
  90. package/sdk/json.js.map +0 -1
  91. package/sdk/sdkEvents.js.map +0 -1
  92. package/sdk/token.js.map +0 -1
  93. package/sdk/tracking.js.map +0 -1
  94. package/sdk/validation.js.map +0 -1
  95. package/slot.js.map +0 -1
  96. package/src/api/evaluate.ts +0 -50
  97. package/src/api/fetchContent.ts +0 -70
  98. package/src/api/index.ts +0 -2
  99. package/src/component.ts +0 -19
  100. package/src/constants.ts +0 -5
  101. package/src/index.ts +0 -6
  102. package/src/playground.ts +0 -247
  103. package/src/plug.ts +0 -429
  104. package/src/plugin.ts +0 -39
  105. package/src/preview.ts +0 -226
  106. package/src/sdk/evaluation.ts +0 -2
  107. package/src/sdk/index.ts +0 -14
  108. package/src/sdk/json.ts +0 -4
  109. package/src/sdk/sdkEvents.ts +0 -1
  110. package/src/sdk/token.ts +0 -1
  111. package/src/sdk/tracking.ts +0 -14
  112. package/src/slot.ts +0 -48
  113. package/src/versioning.ts +0 -38
  114. package/versioning.js.map +0 -1
  115. /package/{src/sdk/apiKey.ts → sdk/apiKey.d.cts} +0 -0
  116. /package/{src/sdk/validation.ts → sdk/validation.d.cts} +0 -0
package/preview.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["src/preview.ts"],"names":[],"mappings":"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"}
package/sdk/apiKey.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../src/sdk/apiKey.ts"],"names":[],"mappings":";;;AAAA,4DAAkC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../src/sdk/evaluation.ts"],"names":[],"mappings":";;;AAAA,qEAAqF;AAA7E,kHAAA,eAAe,OAAA;AACvB,kDAAsF;AAA9E,4GAAA,eAAe,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAAE,uGAAA,UAAU,OAAA"}
package/sdk/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/sdk/index.ts"],"names":[],"mappings":";;;AAIA,iEAA8D;AAAtD,8GAAA,aAAa,OAAA;AACrB,2DAAwD;AAAhD,wGAAA,UAAU,OAAA;AAClB,sCAAmC;AAA3B,0FAAA,GAAG,OAAA"}
package/sdk/json.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/sdk/json.ts"],"names":[],"mappings":";;;AAEA,8DAAoC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdkEvents.js","sourceRoot":"","sources":["../src/sdk/sdkEvents.ts"],"names":[],"mappings":""}
package/sdk/token.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/sdk/token.ts"],"names":[],"mappings":";;;AAAA,0CAA8F;AAAtF,8FAAA,KAAK,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracking.js","sourceRoot":"","sources":["../src/sdk/tracking.ts"],"names":[],"mappings":";;;AAGA,iEAA8D;AAAtD,8GAAA,aAAa,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/sdk/validation.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,2DAAiC"}
package/slot.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"slot.js","sourceRoot":"","sources":["src/slot.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import {Evaluator, EvaluationOptions as BaseOptions} from '@croct/sdk/evaluator';
2
- import type {ApiKey} from '@croct/sdk/apiKey';
3
- import type {Logger} from '@croct/sdk/logging';
4
- import {formatCause} from '@croct/sdk/error';
5
- import {JsonValue} from '../sdk/json';
6
-
7
- export type EvaluationOptions<T extends JsonValue = JsonValue> = BaseOptions & AuthOptions & FetchingOptions<T>;
8
-
9
- type FetchingOptions<T extends JsonValue> = {
10
- baseEndpointUrl?: string,
11
- fallback?: T,
12
- logger?: Logger,
13
- };
14
-
15
- type AuthOptions = ServerSideAuthOptions | ClientSideAuthOptions;
16
-
17
- type ServerSideAuthOptions = {
18
- apiKey: string|ApiKey,
19
- appId?: never,
20
- };
21
-
22
- type ClientSideAuthOptions = {
23
- appId: string,
24
- apiKey?: never,
25
- };
26
-
27
- export function evaluate<T extends JsonValue>(query: string, options: EvaluationOptions<T>): Promise<T> {
28
- const {baseEndpointUrl, fallback, apiKey, appId, logger, ...evaluation} = options;
29
- const auth: AuthOptions = apiKey !== undefined ? {apiKey: apiKey} : {appId: appId};
30
- const promise = (new Evaluator({...auth, baseEndpointUrl: baseEndpointUrl}))
31
- .evaluate(query, evaluation) as Promise<T>;
32
-
33
- if (fallback !== undefined) {
34
- return promise.catch(
35
- error => {
36
- if (logger !== undefined) {
37
- const reference = query.length > 20
38
- ? `${query.slice(0, 20)}...`
39
- : query;
40
-
41
- logger.error(`Failed to evaluate query "${reference}": ${formatCause(error)}`);
42
- }
43
-
44
- return fallback;
45
- },
46
- );
47
- }
48
-
49
- return promise;
50
- }
@@ -1,70 +0,0 @@
1
- import {
2
- ContentFetcher,
3
- DynamicContentOptions as BaseDynamicOptions,
4
- StaticContentOptions as BaseStaticOptions,
5
- } from '@croct/sdk/contentFetcher';
6
- import type {ApiKey} from '@croct/sdk/apiKey';
7
- import type {Logger} from '@croct/sdk/logging';
8
- import {formatCause} from '@croct/sdk/error';
9
- import {JsonObject, JsonValue} from '../sdk/json';
10
- import {FetchResponse} from '../plug';
11
- import {SlotContent, VersionedSlotId} from '../slot';
12
-
13
- export {FetchResponse} from '../plug';
14
-
15
- type FetchingOptions<T extends JsonValue> = {
16
- baseEndpointUrl?: string,
17
- fallback?: T,
18
- logger?: Logger,
19
- };
20
-
21
- type AuthOptions = ServerSideAuthOptions | ClientSideAuthOptions;
22
-
23
- type ServerSideAuthOptions = {
24
- apiKey: string|ApiKey,
25
- appId?: never,
26
- };
27
-
28
- type ClientSideAuthOptions = {
29
- appId: string,
30
- apiKey?: never,
31
- };
32
-
33
- export type DynamicContentOptions<T extends JsonObject = JsonObject> =
34
- Omit<BaseDynamicOptions, 'version'> & FetchingOptions<T> & AuthOptions;
35
-
36
- export type StaticContentOptions<T extends JsonObject = JsonObject> =
37
- Omit<BaseStaticOptions, 'version'> & FetchingOptions<T> & ServerSideAuthOptions;
38
-
39
- export type FetchOptions<T extends JsonObject = SlotContent> = DynamicContentOptions<T> | StaticContentOptions<T>;
40
-
41
- export function fetchContent<I extends VersionedSlotId, C extends JsonObject>(
42
- slotId: I,
43
- options?: FetchOptions<SlotContent<I, C>>,
44
- ): Promise<Omit<FetchResponse<I, C>, 'payload'>> {
45
- const {apiKey, appId, fallback, baseEndpointUrl, logger, ...fetchOptions} = options ?? {};
46
- const auth = {appId: appId, apiKey: apiKey};
47
- const [id, version = 'latest'] = slotId.split('@') as [I, `${number}` | 'latest' | undefined];
48
-
49
- const promise = (new ContentFetcher({...auth, baseEndpointUrl: baseEndpointUrl}))
50
- .fetch<SlotContent<I, C>>(
51
- id,
52
- version === 'latest'
53
- ? fetchOptions
54
- : {...fetchOptions, version: version},
55
- );
56
-
57
- if (fallback !== undefined) {
58
- return promise.catch(
59
- error => {
60
- if (logger !== undefined) {
61
- logger.error(`Failed to fetch content for slot "${id}@${version}": ${formatCause(error)}`);
62
- }
63
-
64
- return {content: fallback};
65
- },
66
- );
67
- }
68
-
69
- return promise;
70
- }
package/src/api/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './evaluate';
2
- export * from './fetchContent';
package/src/component.ts DELETED
@@ -1,19 +0,0 @@
1
- import {CanonicalVersionId, Version, Versioned, VersionedId} from './versioning';
2
-
3
- export interface ComponentMap {
4
- }
5
-
6
- type LatestComponentVersionMap = {[K in keyof ComponentMap]: {latest: ComponentMap[K]}};
7
-
8
- export interface VersionedComponentMap extends LatestComponentVersionMap {
9
- }
10
-
11
- export type ComponentId = keyof VersionedComponentMap extends never ? string : keyof VersionedComponentMap;
12
-
13
- export type ComponentVersion<I extends ComponentId> = Version<VersionedComponentMap, I>;
14
-
15
- export type ComponentVersionId<I extends ComponentId = ComponentId> = CanonicalVersionId<I, VersionedComponentMap>;
16
-
17
- export type VersionedComponentId<I extends ComponentId = ComponentId> = VersionedId<I, VersionedComponentMap>;
18
-
19
- export type ComponentContent<I extends VersionedComponentId> = Versioned<I, VersionedComponentMap>;
package/src/constants.ts DELETED
@@ -1,5 +0,0 @@
1
- export const CDN_URL = '<@cdnUrl@>';
2
- export const PLAYGROUND_ORIGIN = '<@playgroundOrigin@>';
3
- export const PLAYGROUND_CONNECT_URL = '<@playgroundConnectUrl@>';
4
- export const PREVIEW_WIDGET_ORIGIN = '<@previewWidgetOrigin@>';
5
- export const PREVIEW_WIDGET_URL = '<@previewWidgetUrl@>';
package/src/index.ts DELETED
@@ -1,6 +0,0 @@
1
- import {Configuration, Plug, GlobalPlug} from './plug';
2
-
3
- export {Configuration, Plug};
4
-
5
- /* eslint-disable-next-line import/no-default-export -- Should be default export */
6
- export default new GlobalPlug();
package/src/playground.ts DELETED
@@ -1,247 +0,0 @@
1
- import {formatCause} from '@croct/sdk/error';
2
- import {CidAssigner} from '@croct/sdk/cid';
3
- import {ContextFactory, TabContextFactory} from '@croct/sdk/facade/evaluatorFacade';
4
- import {Campaign, EvaluationContext, Page} from '@croct/sdk/evaluator';
5
- import {Plugin, PluginFactory} from './plugin';
6
- import {PLAYGROUND_CONNECT_URL, PLAYGROUND_ORIGIN} from './constants';
7
- import {Logger, SdkEventSubscriber, Tab} from './sdk';
8
- import {TokenProvider} from './sdk/token';
9
-
10
- const CONNECTION_PARAMETER = '__cplay';
11
-
12
- export type Configuration = {
13
- appId: string,
14
- connectionId?: string,
15
- sdkVersion: string,
16
- tab: Tab,
17
- contextFactory: ContextFactory,
18
- storage: Storage,
19
- eventSubscriber: SdkEventSubscriber,
20
- cidAssigner: CidAssigner,
21
- tokenProvider: TokenProvider,
22
- logger: Logger,
23
- };
24
-
25
- export type SyncPayload = {
26
- appId: string,
27
- connectionId: string,
28
- sdkVersion: string,
29
- cid: string,
30
- tabId: string,
31
- token: string|null,
32
- context: {
33
- campaign?: Campaign,
34
- page?: Page,
35
- timezone?: string,
36
- },
37
- };
38
-
39
- export class PlaygroundPlugin implements Plugin {
40
- private readonly sdkVersion: string;
41
-
42
- private readonly appId: string;
43
-
44
- private readonly connectionId?: string;
45
-
46
- private readonly tab: Tab;
47
-
48
- private readonly contextFactory: ContextFactory;
49
-
50
- private readonly storage: Storage;
51
-
52
- private readonly eventSubscriber: SdkEventSubscriber;
53
-
54
- private readonly cidAssigner: CidAssigner;
55
-
56
- private readonly tokenProvider: TokenProvider;
57
-
58
- private readonly logger: Logger;
59
-
60
- private syncListener?: {(): void};
61
-
62
- public constructor(configuration: Configuration) {
63
- this.sdkVersion = configuration.sdkVersion;
64
- this.appId = configuration.appId;
65
- this.connectionId = configuration.connectionId;
66
- this.tab = configuration.tab;
67
- this.contextFactory = configuration.contextFactory;
68
- this.storage = configuration.storage;
69
- this.eventSubscriber = configuration.eventSubscriber;
70
- this.cidAssigner = configuration.cidAssigner;
71
- this.tokenProvider = configuration.tokenProvider;
72
- this.logger = configuration.logger;
73
- }
74
-
75
- public enable(): Promise<void> | void {
76
- const connectionId = this.resolveConnectionId();
77
-
78
- if (connectionId === null) {
79
- return;
80
- }
81
-
82
- this.syncListener = (): Promise<void> => this.cidAssigner
83
- .assignCid()
84
- .then(cid => {
85
- this.syncToken(connectionId, cid);
86
- })
87
- .catch(error => {
88
- this.logger.warn(`Sync failed: ${formatCause(error)}`);
89
- });
90
-
91
- this.eventSubscriber.addListener('tokenChanged', this.syncListener);
92
- this.tab.addListener('urlChange', this.syncListener);
93
-
94
- return this.syncListener();
95
- }
96
-
97
- private resolveConnectionId(): string | null {
98
- if (this.connectionId !== undefined) {
99
- this.logger.debug('Connection ID passed in configuration');
100
-
101
- return this.connectionId;
102
- }
103
-
104
- const url = new URL(this.tab.url);
105
-
106
- let connectionId = url.searchParams.get(CONNECTION_PARAMETER);
107
-
108
- if (connectionId === null || connectionId === '') {
109
- this.logger.debug('No connection ID found in URL');
110
-
111
- connectionId = this.storage.getItem('connectionId');
112
-
113
- this.logger.debug(
114
- connectionId !== null
115
- ? 'Previous connection ID found'
116
- : 'No previous connection ID found',
117
- );
118
-
119
- return connectionId;
120
- }
121
-
122
- this.logger.debug('Connection ID found in URL');
123
-
124
- this.storage.setItem('connectionId', connectionId);
125
-
126
- return connectionId;
127
- }
128
-
129
- public disable(): Promise<void> | void {
130
- if (this.syncListener !== undefined) {
131
- this.eventSubscriber.removeListener('tokenChanged', this.syncListener);
132
- this.tab.removeListener('urlChange', this.syncListener);
133
-
134
- delete this.syncListener;
135
- }
136
- }
137
-
138
- private syncToken(connectionId: string, cid: string): void {
139
- const iframe = document.createElement('iframe');
140
-
141
- iframe.setAttribute('src', PLAYGROUND_CONNECT_URL);
142
- iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
143
- iframe.style.visibility = 'hidden';
144
- iframe.style.opacity = '0';
145
- iframe.style.border = '0';
146
- iframe.style.width = '0';
147
- iframe.style.height = '0';
148
-
149
- const context = this.createContext();
150
-
151
- iframe.onload = (): void => {
152
- if (iframe.contentWindow === null) {
153
- if (document.body.contains(iframe)) {
154
- document.body.removeChild(iframe);
155
- }
156
-
157
- this.logger.warn('Sync handshake failed');
158
-
159
- return;
160
- }
161
-
162
- const listener = (event: MessageEvent): void => {
163
- if (event.origin !== PLAYGROUND_ORIGIN || event.data !== connectionId) {
164
- return;
165
- }
166
-
167
- window.removeEventListener('message', listener);
168
-
169
- if (document.body.contains(iframe)) {
170
- document.body.removeChild(iframe);
171
- }
172
-
173
- this.logger.debug('Sync completed');
174
- };
175
-
176
- window.addEventListener('message', listener);
177
-
178
- const payload: SyncPayload = {
179
- appId: this.appId,
180
- connectionId: connectionId,
181
- sdkVersion: this.sdkVersion,
182
- tabId: this.tab.id,
183
- cid: cid,
184
- token: this.tokenProvider
185
- .getToken()
186
- ?.toString() ?? null,
187
- context: context,
188
- };
189
-
190
- iframe.contentWindow.postMessage(payload, PLAYGROUND_ORIGIN);
191
-
192
- this.logger.debug('Waiting for sync acknowledgment...');
193
- };
194
-
195
- this.logger.debug('Sync started');
196
-
197
- const connect = (): void => {
198
- document.body.appendChild(iframe);
199
- };
200
-
201
- if (document.body === null) {
202
- document.addEventListener('DOMContentLoaded', connect);
203
- } else {
204
- connect();
205
- }
206
- }
207
-
208
- private createContext(): EvaluationContext {
209
- const {page, campaign, timeZone} = this.contextFactory.createContext();
210
- const context: EvaluationContext = {};
211
-
212
- if (page !== undefined) {
213
- context.page = page;
214
- }
215
-
216
- if (campaign !== undefined) {
217
- context.campaign = campaign;
218
- }
219
-
220
- if (timeZone !== undefined) {
221
- context.timeZone = timeZone;
222
- }
223
-
224
- return context;
225
- }
226
- }
227
-
228
- export type Options = {
229
- connectionId?: string,
230
- };
231
-
232
- export const factory: PluginFactory<Options> = (props): PlaygroundPlugin => {
233
- const {sdk, options} = props;
234
-
235
- return new PlaygroundPlugin({
236
- sdkVersion: sdk.version,
237
- appId: sdk.appId,
238
- connectionId: options.connectionId,
239
- tab: sdk.tab,
240
- storage: sdk.getTabStorage(),
241
- tokenProvider: sdk.userTokenStore,
242
- cidAssigner: sdk.cidAssigner,
243
- contextFactory: new TabContextFactory(sdk.tab),
244
- eventSubscriber: sdk.eventManager,
245
- logger: sdk.getLogger(),
246
- });
247
- };