@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/chunk-UW6NRYRY.js +809 -0
- package/dist/chunk-UW6NRYRY.js.map +1 -0
- package/dist/index.cjs +189 -60
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +97 -6
- package/dist/index.d.ts +97 -6
- package/dist/index.js +121 -53
- package/dist/index.js.map +1 -1
- package/dist/runtime.cjs +110 -8
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +106 -5
- package/dist/runtime.d.ts +106 -5
- package/dist/runtime.js +47 -3
- package/package.json +4 -4
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
|
-
|
|
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)
|
|
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/
|
|
522
|
+
// src/complaints.ts
|
|
499
523
|
import { z as z6 } from "zod";
|
|
500
|
-
var
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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 =
|
|
532
|
-
sessionId:
|
|
533
|
-
windowId:
|
|
534
|
-
seq:
|
|
535
|
-
anonymousId:
|
|
536
|
-
userId:
|
|
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:
|
|
539
|
-
url:
|
|
540
|
-
device:
|
|
541
|
-
viewport:
|
|
542
|
-
sdk:
|
|
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
|
|
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 =
|
|
730
|
-
x:
|
|
731
|
-
y:
|
|
732
|
-
width:
|
|
733
|
-
height:
|
|
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 =
|
|
780
|
+
var CapturedElementSchema = z8.object({
|
|
736
781
|
/** Visible name: aria-label, associated label, text, placeholder, alt or title. */
|
|
737
|
-
label:
|
|
782
|
+
label: z8.string().max(200).default(""),
|
|
738
783
|
/** button, link, tab, menuitem, checkbox, radio, field, dropdown, option, element… */
|
|
739
|
-
role:
|
|
740
|
-
tag:
|
|
784
|
+
role: z8.string().max(40).default("element"),
|
|
785
|
+
tag: z8.string().max(40).default("")
|
|
741
786
|
});
|
|
742
|
-
var CaptureStepSchema =
|
|
787
|
+
var CaptureStepSchema = z8.object({
|
|
743
788
|
/** Random id from the SDK; a retried upload with the same id is stored once. */
|
|
744
|
-
clientId:
|
|
745
|
-
action:
|
|
746
|
-
url:
|
|
747
|
-
pageTitle:
|
|
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:
|
|
751
|
-
valueRedacted:
|
|
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:
|
|
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:
|
|
758
|
-
occurredAt:
|
|
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 =
|
|
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 =
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
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.
|
|
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
|