@guidelytech/shared 0.8.0 → 0.9.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.
package/dist/index.js CHANGED
@@ -1,11 +1,22 @@
1
1
  import {
2
+ ARTICLE_VISIBILITIES,
2
3
  CAPTURE_PARAM,
3
4
  CAPTURE_SCREENSHOT_MAX_BYTES,
5
+ COMPLAINT_EVENTS,
6
+ COMPLAINT_FIELD_TYPES,
7
+ COMPLAINT_STATUSES,
4
8
  DEFAULT_PLATFORMS,
5
9
  EMBED_IFRAME_ATTRS,
6
10
  FILE_LINK_CLASS,
7
11
  GUIDELY_ID_ATTRIBUTE,
12
+ GUIDE_VISIBILITIES,
13
+ LOGGED_IN_AUDIENCE,
8
14
  MAX_COLLECTION_DEPTH,
15
+ MAX_COMPLAINT_ANSWER_LENGTH,
16
+ MAX_COMPLAINT_ATTACHMENT_BYTES,
17
+ MAX_COMPLAINT_CHOICES,
18
+ MAX_COMPLAINT_FIELDS,
19
+ MAX_COMPLAINT_LENGTH,
9
20
  MAX_PROPERTY_BYTES,
10
21
  MAX_STACK_FRAMES,
11
22
  MEDIA_FILE_MAX_BYTES,
@@ -27,6 +38,8 @@ import {
27
38
  SENSITIVE_PARAM_PATTERN,
28
39
  SENSITIVE_PROPERTY_PATTERN,
29
40
  SERVER_ASSISTED_FIELDS,
41
+ SHOW_ME_CLASS,
42
+ SHOW_ME_HREF_PREFIX,
30
43
  SOURCEMAP_MAX_FILES_PER_UPLOAD,
31
44
  SOURCEMAP_MAX_FILE_BYTES,
32
45
  VIDEO_ATTRS,
@@ -35,6 +48,7 @@ import {
35
48
  clamp,
36
49
  compare,
37
50
  compareVersions,
51
+ complaintReference,
38
52
  describeRule,
39
53
  emptyRuleGroup,
40
54
  evaluateRule,
@@ -46,6 +60,7 @@ import {
46
60
  getPath,
47
61
  guidePlatforms,
48
62
  guidelyIdFromSelector,
63
+ hasVideoMedia,
49
64
  isAllowedEmbedSrc,
50
65
  isArticleListed,
51
66
  isChecklistComplete,
@@ -58,6 +73,7 @@ import {
58
73
  isVideoContentType,
59
74
  matchUrlPattern,
60
75
  matchesAudiences,
76
+ matchesHelpQuery,
61
77
  mediaKind,
62
78
  mediaMaxBytes,
63
79
  normalizeErrorMessage,
@@ -71,12 +87,18 @@ import {
71
87
  safeRegExp,
72
88
  sanitizeProperties,
73
89
  screenPath,
90
+ servedArticleAudiences,
91
+ showMeHref,
92
+ showMeKeyFromHref,
93
+ showMeKeys,
74
94
  slugify,
75
95
  stripOrigin,
76
96
  supportsPlatform,
77
97
  toEmbedUrl,
78
- visibleArticleIds
79
- } from "./chunk-OLWGMDRX.js";
98
+ visibleArticleIds,
99
+ visitorAudiences,
100
+ withVisibility
101
+ } from "./chunk-UW6NRYRY.js";
80
102
 
81
103
  // src/targeting.ts
82
104
  import { z } from "zod";
@@ -222,7 +244,7 @@ var ChecklistTaskSchema = z2.object({
222
244
  required: z2.boolean().default(true)
223
245
  });
224
246
  var ChecklistConfigSchema = z2.object({
225
- tasks: z2.array(ChecklistTaskSchema).min(1).max(30),
247
+ tasks: z2.array(ChecklistTaskSchema).min(1),
226
248
  ordered: z2.boolean().default(false),
227
249
  launcherLabel: z2.string().max(60).default("Getting started"),
228
250
  position: z2.enum(["bottom-right", "bottom-left"]).default("bottom-right"),
@@ -256,6 +278,8 @@ var SurveyConfigSchema = z2.object({
256
278
  });
257
279
  var GuideConfigSchema = z2.object({
258
280
  steps: z2.array(StepSchema).max(50).default([]),
281
+ /** Everyone, only identified (logged-in) users, or only anonymous visitors; applied on top of `targeting`. */
282
+ visibility: z2.enum(GUIDE_VISIBILITIES).default("everyone"),
259
283
  targeting: RuleGroupSchema.default(() => emptyRuleGroup()),
260
284
  trigger: TriggerSchema.default({}),
261
285
  frequency: FrequencySchema.default({}),
@@ -495,19 +519,40 @@ var ConversationRatingSchema = z5.object({
495
519
  comment: z5.string().max(1e3).optional()
496
520
  });
497
521
 
498
- // src/capture.ts
522
+ // src/complaints.ts
499
523
  import { z as z6 } from "zod";
500
- var AutocaptureSettingsSchema = z6.object({ pageviews: z6.boolean(), pageLeave: z6.boolean(), clicks: z6.boolean(), rageClicks: z6.boolean(), heatmaps: z6.boolean(), mouseMovement: z6.boolean() }).partial();
501
- var ErrorTrackingSettingsSchema = z6.object({ enabled: z6.boolean() }).partial();
502
- var ReplaySettingsSchema = z6.object({
503
- enabled: z6.boolean(),
504
- sampleRate: z6.number().int().min(0).max(100),
505
- recordConsole: z6.boolean(),
506
- recordNetwork: z6.boolean(),
507
- recordNetworkPayloads: z6.boolean(),
508
- maskAllText: z6.boolean(),
509
- blockSelectors: z6.array(z6.string().min(1).max(200)).max(50),
510
- retentionDays: z6.number().int().min(1).max(365)
524
+ var FileComplaintSchema = z6.object({
525
+ anonymousId: z6.string().min(1).max(128),
526
+ userId: z6.string().max(256).optional().nullable(),
527
+ categoryId: z6.string().min(1).max(64),
528
+ description: z6.string().trim().min(1).max(MAX_COMPLAINT_LENGTH),
529
+ /** Answers to the category's extra questions, by field id. */
530
+ answers: z6.record(z6.string().max(64), z6.string().trim().max(MAX_COMPLAINT_ANSWER_LENGTH)).default({}),
531
+ /** Required from visitors the app hasn't identified. */
532
+ email: z6.string().trim().toLowerCase().email().max(254).optional().nullable(),
533
+ pageUrl: z6.string().max(2e3).optional(),
534
+ /** File it in this conversation (send its token in `X-Guidely-Conversation`); otherwise a new one is started. */
535
+ conversationId: z6.string().min(1).max(64).optional().nullable(),
536
+ /** One screenshot, base64-encoded (png, jpeg, webp or gif). */
537
+ attachment: z6.object({
538
+ fileName: z6.string().trim().min(1).max(200),
539
+ data: z6.string().max(Math.ceil(MAX_COMPLAINT_ATTACHMENT_BYTES * 4 / 3) + 4)
540
+ }).optional().nullable()
541
+ });
542
+
543
+ // src/capture.ts
544
+ import { z as z7 } from "zod";
545
+ var AutocaptureSettingsSchema = z7.object({ pageviews: z7.boolean(), pageLeave: z7.boolean(), clicks: z7.boolean(), rageClicks: z7.boolean(), heatmaps: z7.boolean(), mouseMovement: z7.boolean() }).partial();
546
+ var ErrorTrackingSettingsSchema = z7.object({ enabled: z7.boolean() }).partial();
547
+ var ReplaySettingsSchema = z7.object({
548
+ enabled: z7.boolean(),
549
+ sampleRate: z7.number().int().min(0).max(100),
550
+ recordConsole: z7.boolean(),
551
+ recordNetwork: z7.boolean(),
552
+ recordNetworkPayloads: z7.boolean(),
553
+ maskAllText: z7.boolean(),
554
+ blockSelectors: z7.array(z7.string().min(1).max(200)).max(50),
555
+ retentionDays: z7.number().int().min(1).max(365)
511
556
  }).partial();
512
557
  var DEFAULT_CAPTURE_SETTINGS = {
513
558
  autocapture: { pageviews: true, pageLeave: true, clicks: true, rageClicks: true, heatmaps: true, mouseMovement: true },
@@ -528,18 +573,18 @@ function resolveCaptureSettings(settings) {
528
573
  };
529
574
  }
530
575
  var HEATMAP_VIEWPORTS = { mobile: [0, 767], tablet: [768, 1279], desktop: [1280, 1e5] };
531
- var ReplayChunkSchema = z6.object({
532
- sessionId: z6.string().min(1).max(128),
533
- windowId: z6.string().min(1).max(64),
534
- seq: z6.number().int().min(0).max(1e6),
535
- anonymousId: z6.string().min(1).max(128),
536
- userId: z6.string().max(256).optional().nullable(),
576
+ var ReplayChunkSchema = z7.object({
577
+ sessionId: z7.string().min(1).max(128),
578
+ windowId: z7.string().min(1).max(64),
579
+ seq: z7.number().int().min(0).max(1e6),
580
+ anonymousId: z7.string().min(1).max(128),
581
+ userId: z7.string().max(256).optional().nullable(),
537
582
  /** rrweb `eventWithTime` objects, in order. */
538
- events: z6.array(z6.object({ type: z6.number().int(), timestamp: z6.number() }).passthrough()).min(1).max(5e4),
539
- url: z6.string().max(2e3).optional(),
540
- device: z6.object({ type: z6.string().max(20), browser: z6.string().max(40).optional(), os: z6.string().max(40).optional() }).optional(),
541
- viewport: z6.object({ width: z6.number().int().min(0).max(1e5), height: z6.number().int().min(0).max(1e5) }).optional(),
542
- sdk: z6.object({ name: z6.string().max(60), version: z6.string().max(30) }).optional()
583
+ events: z7.array(z7.object({ type: z7.number().int(), timestamp: z7.number() }).passthrough()).min(1).max(5e4),
584
+ url: z7.string().max(2e3).optional(),
585
+ device: z7.object({ type: z7.string().max(20), browser: z7.string().max(40).optional(), os: z7.string().max(40).optional() }).optional(),
586
+ viewport: z7.object({ width: z7.number().int().min(0).max(1e5), height: z7.number().int().min(0).max(1e5) }).optional(),
587
+ sdk: z7.object({ name: z7.string().max(60), version: z7.string().max(30) }).optional()
543
588
  });
544
589
  var REPLAY_MAX_COMPRESSED_BYTES = 2 * 1024 * 1024;
545
590
  var REPLAY_MAX_RAW_BYTES = 16 * 1024 * 1024;
@@ -723,39 +768,39 @@ function templateConfig(id) {
723
768
  }
724
769
 
725
770
  // src/howto.ts
726
- import { z as z7 } from "zod";
771
+ import { z as z8 } from "zod";
727
772
  var HOWTO_STEP_KINDS = ["action", "text", "heading", "tip", "alert"];
728
773
  var HOWTO_ACTIONS = ["click", "type", "select", "navigate"];
729
- var NormalizedRectSchema = z7.object({
730
- x: z7.number().min(0).max(1),
731
- y: z7.number().min(0).max(1),
732
- width: z7.number().min(0).max(1),
733
- height: z7.number().min(0).max(1)
774
+ var NormalizedRectSchema = z8.object({
775
+ x: z8.number().min(0).max(1),
776
+ y: z8.number().min(0).max(1),
777
+ width: z8.number().min(0).max(1),
778
+ height: z8.number().min(0).max(1)
734
779
  });
735
- var CapturedElementSchema = z7.object({
780
+ var CapturedElementSchema = z8.object({
736
781
  /** Visible name: aria-label, associated label, text, placeholder, alt or title. */
737
- label: z7.string().max(200).default(""),
782
+ label: z8.string().max(200).default(""),
738
783
  /** button, link, tab, menuitem, checkbox, radio, field, dropdown, option, element… */
739
- role: z7.string().max(40).default("element"),
740
- tag: z7.string().max(40).default("")
784
+ role: z8.string().max(40).default("element"),
785
+ tag: z8.string().max(40).default("")
741
786
  });
742
- var CaptureStepSchema = z7.object({
787
+ var CaptureStepSchema = z8.object({
743
788
  /** Random id from the SDK; a retried upload with the same id is stored once. */
744
- clientId: z7.string().min(1).max(64),
745
- action: z7.enum(HOWTO_ACTIONS),
746
- url: z7.string().max(2e3),
747
- pageTitle: z7.string().max(300).default(""),
789
+ clientId: z8.string().min(1).max(64),
790
+ action: z8.enum(HOWTO_ACTIONS),
791
+ url: z8.string().max(2e3),
792
+ pageTitle: z8.string().max(300).default(""),
748
793
  element: CapturedElementSchema.optional(),
749
794
  /** Typed text or chosen option; absent when it was sensitive (`valueRedacted`). */
750
- value: z7.string().max(200).optional(),
751
- valueRedacted: z7.boolean().default(false),
795
+ value: z8.string().max(200).optional(),
796
+ valueRedacted: z8.boolean().default(false),
752
797
  /** Selectors for the element, so the step can later become an interactive tour step. */
753
- selectors: z7.array(SelectorStrategySchema).max(10).default([]),
798
+ selectors: z8.array(SelectorStrategySchema).max(10).default([]),
754
799
  /** Where the element sits in the screenshot. */
755
800
  highlight: NormalizedRectSchema.optional(),
756
801
  /** Number of regions the SDK blurred in the screenshot before upload. */
757
- redactions: z7.number().int().min(0).max(1e3).default(0),
758
- occurredAt: z7.string().datetime().optional()
802
+ redactions: z8.number().int().min(0).max(1e3).default(0),
803
+ occurredAt: z8.string().datetime().optional()
759
804
  });
760
805
  function quoted(s) {
761
806
  const t = (s ?? "").replace(/\s+/g, " ").trim();
@@ -826,21 +871,22 @@ function hostAndPath(url) {
826
871
  return url.slice(0, 80);
827
872
  }
828
873
  }
829
- var NormalizedPointSchema = z7.object({ x: z7.number().min(0).max(1), y: z7.number().min(0).max(1) });
874
+ var NormalizedPointSchema = z8.object({ x: z8.number().min(0).max(1), y: z8.number().min(0).max(1) });
830
875
  var ANNOTATION_COLORS = ["brand", "red", "amber", "green", "black", "white"];
831
- var HowToAnnotationSchema = z7.discriminatedUnion("type", [
832
- z7.object({ id: z7.string().min(1).max(32), type: z7.literal("arrow"), from: NormalizedPointSchema, to: NormalizedPointSchema, color: z7.enum(ANNOTATION_COLORS).default("brand") }),
833
- z7.object({ id: z7.string().min(1).max(32), type: z7.literal("text"), at: NormalizedPointSchema, text: z7.string().trim().min(1).max(120), color: z7.enum(ANNOTATION_COLORS).default("brand") }),
834
- z7.object({ id: z7.string().min(1).max(32), type: z7.literal("box"), rect: NormalizedRectSchema, color: z7.enum(ANNOTATION_COLORS).default("brand") })
876
+ var HowToAnnotationSchema = z8.discriminatedUnion("type", [
877
+ z8.object({ id: z8.string().min(1).max(32), type: z8.literal("arrow"), from: NormalizedPointSchema, to: NormalizedPointSchema, color: z8.enum(ANNOTATION_COLORS).default("brand") }),
878
+ z8.object({ id: z8.string().min(1).max(32), type: z8.literal("text"), at: NormalizedPointSchema, text: z8.string().trim().min(1).max(120), color: z8.enum(ANNOTATION_COLORS).default("brand") }),
879
+ z8.object({ id: z8.string().min(1).max(32), type: z8.literal("box"), rect: NormalizedRectSchema, color: z8.enum(ANNOTATION_COLORS).default("brand") })
835
880
  ]);
836
881
  var MAX_ANNOTATIONS = 30;
837
882
 
838
883
  // src/index.ts
839
884
  var SDK_API_VERSION = "v1";
840
- var SHARED_VERSION = "0.8.0";
885
+ var SHARED_VERSION = "0.9.0";
841
886
  export {
842
887
  ADVANCE_ON,
843
888
  ANNOTATION_COLORS,
889
+ ARTICLE_VISIBILITIES,
844
890
  AUTOCAPTURE_EVENTS,
845
891
  AppearanceSchema,
846
892
  AuthoringPickSchema,
@@ -849,6 +895,9 @@ export {
849
895
  ButtonSchema,
850
896
  CAPTURE_PARAM,
851
897
  CAPTURE_SCREENSHOT_MAX_BYTES,
898
+ COMPLAINT_EVENTS,
899
+ COMPLAINT_FIELD_TYPES,
900
+ COMPLAINT_STATUSES,
852
901
  CaptureStepSchema,
853
902
  CapturedElementSchema,
854
903
  ChecklistConfigSchema,
@@ -863,12 +912,14 @@ export {
863
912
  ErrorTrackingSettingsSchema,
864
913
  EventBatchSchema,
865
914
  FILE_LINK_CLASS,
915
+ FileComplaintSchema,
866
916
  FrequencySchema,
867
917
  GUIDELY_ID_ATTRIBUTE,
868
918
  GUIDE_KINDS,
869
919
  GUIDE_LIFECYCLE_EVENTS,
870
920
  GUIDE_STATUSES,
871
921
  GUIDE_TEMPLATES,
922
+ GUIDE_VISIBILITIES,
872
923
  GuideConfigSchema,
873
924
  GuideStateUpdateSchema,
874
925
  HEATMAP_VIEWPORTS,
@@ -876,8 +927,14 @@ export {
876
927
  HOWTO_STEP_KINDS,
877
928
  HowToAnnotationSchema,
878
929
  IdentifyRequestSchema,
930
+ LOGGED_IN_AUDIENCE,
879
931
  MAX_ANNOTATIONS,
880
932
  MAX_COLLECTION_DEPTH,
933
+ MAX_COMPLAINT_ANSWER_LENGTH,
934
+ MAX_COMPLAINT_ATTACHMENT_BYTES,
935
+ MAX_COMPLAINT_CHOICES,
936
+ MAX_COMPLAINT_FIELDS,
937
+ MAX_COMPLAINT_LENGTH,
881
938
  MAX_MESSAGE_LENGTH,
882
939
  MAX_PROPERTY_BYTES,
883
940
  MAX_STACK_FRAMES,
@@ -918,6 +975,8 @@ export {
918
975
  SENSITIVE_PROPERTY_PATTERN,
919
976
  SERVER_ASSISTED_FIELDS,
920
977
  SHARED_VERSION,
978
+ SHOW_ME_CLASS,
979
+ SHOW_ME_HREF_PREFIX,
921
980
  SOURCEMAP_MAX_FILES_PER_UPLOAD,
922
981
  SOURCEMAP_MAX_FILE_BYTES,
923
982
  STATUS_LEVELS,
@@ -941,6 +1000,7 @@ export {
941
1000
  cleanLabel,
942
1001
  compare,
943
1002
  compareVersions,
1003
+ complaintReference,
944
1004
  defaultGuideConfig,
945
1005
  defaultStep,
946
1006
  describeCaptureStep,
@@ -955,6 +1015,7 @@ export {
955
1015
  getPath,
956
1016
  guidePlatforms,
957
1017
  guidelyIdFromSelector,
1018
+ hasVideoMedia,
958
1019
  isAllowedEmbedSrc,
959
1020
  isArticleListed,
960
1021
  isChecklistComplete,
@@ -967,6 +1028,7 @@ export {
967
1028
  isVideoContentType,
968
1029
  matchUrlPattern,
969
1030
  matchesAudiences,
1031
+ matchesHelpQuery,
970
1032
  mediaKind,
971
1033
  mediaMaxBytes,
972
1034
  normalizeErrorMessage,
@@ -982,6 +1044,10 @@ export {
982
1044
  safeRegExp,
983
1045
  sanitizeProperties,
984
1046
  screenPath,
1047
+ servedArticleAudiences,
1048
+ showMeHref,
1049
+ showMeKeyFromHref,
1050
+ showMeKeys,
985
1051
  slugify,
986
1052
  stripOrigin,
987
1053
  supportsPlatform,
@@ -989,6 +1055,8 @@ export {
989
1055
  toEmbedUrl,
990
1056
  validateGuideConfig,
991
1057
  visibleArticleIds,
992
- visibleButtons
1058
+ visibleButtons,
1059
+ visitorAudiences,
1060
+ withVisibility
993
1061
  };
994
1062
  //# sourceMappingURL=index.js.map