@getuserfeedback/adapters 0.4.2 → 0.4.3

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.
@@ -10,6 +10,21 @@ export type TemplateCondition = {
10
10
  export type TemplateValueValidator = {
11
11
  type: "NON_EMPTY";
12
12
  };
13
+ export type TemplateSimpleTableTextColumn = {
14
+ defaultValue?: string;
15
+ displayName: string;
16
+ name: string;
17
+ type: "TEXT";
18
+ };
19
+ export type TemplateSimpleTableSelectColumn = {
20
+ defaultValue?: string;
21
+ displayName: string;
22
+ name: string;
23
+ type: "SELECT";
24
+ isUnique?: boolean;
25
+ macrosInSelect?: boolean;
26
+ selectItems: TemplateSelectItem[];
27
+ };
13
28
  export type TemplateParameter = {
14
29
  type: "TEXT";
15
30
  name: string;
@@ -46,15 +61,7 @@ export type TemplateParameter = {
46
61
  help?: string;
47
62
  defaultValue?: Array<Record<string, string>>;
48
63
  newRowButtonText: string;
49
- simpleTableColumns: Array<{
50
- defaultValue?: string;
51
- displayName: string;
52
- name: string;
53
- type: "SELECT";
54
- isUnique?: boolean;
55
- macrosInSelect?: boolean;
56
- selectItems: TemplateSelectItem[];
57
- }>;
64
+ simpleTableColumns: Array<TemplateSimpleTableTextColumn | TemplateSimpleTableSelectColumn>;
58
65
  valueValidators?: TemplateValueValidator[];
59
66
  enablingConditions?: TemplateCondition[];
60
67
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"template-generation.d.ts","sourceRoot":"","sources":["../../src/gtm/template-generation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-generation.d.ts","sourceRoot":"","sources":["../../src/gtm/template-generation.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,20 @@ const AUTOMATIC_CONSENT_MODE_CONDITION = [
26
26
  type: "EQUALS",
27
27
  },
28
28
  ];
29
+ const IDENTIFY_SIMPLE_MODE_CONDITION = [
30
+ {
31
+ paramName: "identifyMode",
32
+ paramValue: "simple",
33
+ type: "EQUALS",
34
+ },
35
+ ];
36
+ const IDENTIFY_ADVANCED_MODE_CONDITION = [
37
+ {
38
+ paramName: "identifyMode",
39
+ paramValue: "advanced",
40
+ type: "EQUALS",
41
+ },
42
+ ];
29
43
  const buildAutomaticDefaultScopeMappings = () => DEFAULT_GTM_SCOPE_MAPPINGS.filter((mapping) => isHostConfigurableGtmScope(mapping.scope)).map((mapping) => ({
30
44
  scope: mapping.scope,
31
45
  mapping: mapping.consentType,
@@ -261,6 +275,85 @@ export function buildGtmTemplateParameters(_options) {
261
275
  },
262
276
  ],
263
277
  },
278
+ {
279
+ type: "GROUP",
280
+ name: "identifyGroup",
281
+ displayName: "Identify Settings",
282
+ groupStyle: "ZIPPY_CLOSED",
283
+ subParams: [
284
+ {
285
+ type: "RADIO",
286
+ name: "identifyMode",
287
+ displayName: "Identify Mode",
288
+ simpleValueType: true,
289
+ defaultValue: "disabled",
290
+ radioItems: [
291
+ {
292
+ value: "disabled",
293
+ displayValue: "Disabled",
294
+ help: "Do not send identify data from this GTM tag.",
295
+ },
296
+ {
297
+ value: "simple",
298
+ displayValue: "Simple",
299
+ help: "Send a stable user ID and common traits like email or phone from GTM variables.",
300
+ },
301
+ {
302
+ value: "advanced",
303
+ displayValue: "Advanced",
304
+ help: "Map any traits you want from GTM variables, including email, phone, name, or plan.",
305
+ },
306
+ ],
307
+ },
308
+ {
309
+ type: "TEXT",
310
+ name: "identifyUserId",
311
+ displayName: "User ID",
312
+ simpleValueType: true,
313
+ help: "Use a GTM variable that resolves to the signed-in user's stable ID. If GTM is loaded through Segment, this is often a data layer variable for `userId`.",
314
+ enablingConditions: [
315
+ ...IDENTIFY_SIMPLE_MODE_CONDITION,
316
+ ...IDENTIFY_ADVANCED_MODE_CONDITION,
317
+ ],
318
+ },
319
+ {
320
+ type: "TEXT",
321
+ name: "identifyEmail",
322
+ displayName: "Email",
323
+ simpleValueType: true,
324
+ help: "Optional. Sends `email` as an identify trait when available.",
325
+ enablingConditions: [...IDENTIFY_SIMPLE_MODE_CONDITION],
326
+ },
327
+ {
328
+ type: "TEXT",
329
+ name: "identifyPhone",
330
+ displayName: "Phone",
331
+ simpleValueType: true,
332
+ help: "Optional. Sends `phone` as an identify trait when available.",
333
+ enablingConditions: [...IDENTIFY_SIMPLE_MODE_CONDITION],
334
+ },
335
+ {
336
+ type: "SIMPLE_TABLE",
337
+ name: "identifyTraits",
338
+ displayName: "Traits",
339
+ help: "Add any traits you want to send from GTM variables. Common examples are `email`, `phone`, `name`, and `plan`. Empty rows are ignored.",
340
+ newRowButtonText: "Add Trait",
341
+ simpleTableColumns: [
342
+ {
343
+ displayName: "Trait Name",
344
+ name: "name",
345
+ type: "TEXT",
346
+ },
347
+ {
348
+ displayName: "Trait Value",
349
+ name: "value",
350
+ type: "TEXT",
351
+ },
352
+ ],
353
+ enablingConditions: [...IDENTIFY_ADVANCED_MODE_CONDITION],
354
+ },
355
+ ],
356
+ },
264
357
  ];
265
358
  }
266
359
  export function buildGtmRuntimeSource(input) {
@@ -329,6 +422,100 @@ const normalizeThemeInput = function(inputValue) {
329
422
  return undefined;
330
423
  };
331
424
 
425
+ const isListLike = function(value) {
426
+ return (
427
+ !!value &&
428
+ typeof value.length === "number" &&
429
+ typeof value.map === "function"
430
+ );
431
+ };
432
+
433
+ const normalizeTraitValue = function(value) {
434
+ if (value === undefined || value === null) {
435
+ return undefined;
436
+ }
437
+ if (typeof value === "string") {
438
+ const trimmedValue = value.trim();
439
+ return trimmedValue ? trimmedValue : undefined;
440
+ }
441
+ return value;
442
+ };
443
+
444
+ const addTrait = function(result, name, value) {
445
+ const traitName = trimString(name);
446
+ const traitValue = normalizeTraitValue(value);
447
+ if (!traitName || traitValue === undefined) {
448
+ return;
449
+ }
450
+ result[traitName] = traitValue;
451
+ };
452
+
453
+ const getSimpleIdentifyTraits = function(templateData) {
454
+ const traits = {};
455
+ addTrait(traits, "email", templateData.identifyEmail);
456
+ addTrait(traits, "phone", templateData.identifyPhone);
457
+ return traits;
458
+ };
459
+
460
+ const getAdvancedIdentifyTraits = function(templateData) {
461
+ const traits = {};
462
+ const rows = isListLike(templateData.identifyTraits)
463
+ ? templateData.identifyTraits
464
+ : [];
465
+ for (let index = 0; index < rows.length; index += 1) {
466
+ const row = rows[index];
467
+ if (!row || typeof row !== "object") {
468
+ continue;
469
+ }
470
+ addTrait(traits, row.name, row.value);
471
+ }
472
+ return traits;
473
+ };
474
+
475
+ const hasOwnKeys = function(value) {
476
+ for (const key in value) {
477
+ return !!key;
478
+ }
479
+ return false;
480
+ };
481
+
482
+ const getIdentifyCommand = function(templateData) {
483
+ if (
484
+ templateData.identifyMode !== "simple" &&
485
+ templateData.identifyMode !== "advanced"
486
+ ) {
487
+ return undefined;
488
+ }
489
+
490
+ const userId = trimString(templateData.identifyUserId);
491
+ const traits =
492
+ templateData.identifyMode === "advanced"
493
+ ? getAdvancedIdentifyTraits(templateData)
494
+ : getSimpleIdentifyTraits(templateData);
495
+ const hasTraits = hasOwnKeys(traits);
496
+
497
+ if (userId && hasTraits) {
498
+ return {
499
+ kind: "identify",
500
+ userId: userId,
501
+ traits: traits,
502
+ };
503
+ }
504
+ if (userId) {
505
+ return {
506
+ kind: "identify",
507
+ userId: userId,
508
+ };
509
+ }
510
+ if (hasTraits) {
511
+ return {
512
+ kind: "identify",
513
+ traits: traits,
514
+ };
515
+ }
516
+ return undefined;
517
+ };
518
+
332
519
  const getThemeInput = function(templateData) {
333
520
  if (templateData.themeMode === "variable") {
334
521
  return templateData.themeModeVariable;
@@ -389,14 +576,6 @@ const isHostConfigurableScope = function(scope) {
389
576
  return false;
390
577
  };
391
578
 
392
- const isListLike = function(value) {
393
- return (
394
- !!value &&
395
- typeof value.length === "number" &&
396
- typeof value.map === "function"
397
- );
398
- };
399
-
400
579
  const getManualScopeMappings = function(templateData) {
401
580
  const rawRows = isListLike(templateData.scopeMappings)
402
581
  ? templateData.scopeMappings
@@ -520,6 +699,11 @@ queuePush({
520
699
  opts: initOptions,
521
700
  });
522
701
 
702
+ const identifyCommand = getIdentifyCommand(data);
703
+ if (identifyCommand !== undefined) {
704
+ queuePush(identifyCommand);
705
+ }
706
+
523
707
  log("Loading getuserfeedback loader:", widgetUrl);
524
708
 
525
709
  if (queryPermission("inject_script", widgetUrl)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getuserfeedback/adapters",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "getuserfeedback integration adapters",
5
5
  "keywords": [
6
6
  "getuserfeedback",