clarity-js 0.6.23

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 (87) hide show
  1. package/README.md +26 -0
  2. package/build/clarity.js +4479 -0
  3. package/build/clarity.min.js +1 -0
  4. package/build/clarity.module.js +4473 -0
  5. package/package.json +66 -0
  6. package/rollup.config.ts +38 -0
  7. package/src/clarity.ts +54 -0
  8. package/src/core/config.ts +21 -0
  9. package/src/core/copy.ts +3 -0
  10. package/src/core/event.ts +25 -0
  11. package/src/core/hash.ts +19 -0
  12. package/src/core/history.ts +69 -0
  13. package/src/core/index.ts +79 -0
  14. package/src/core/measure.ts +17 -0
  15. package/src/core/report.ts +27 -0
  16. package/src/core/scrub.ts +102 -0
  17. package/src/core/task.ts +180 -0
  18. package/src/core/time.ts +14 -0
  19. package/src/core/timeout.ts +10 -0
  20. package/src/core/version.ts +2 -0
  21. package/src/data/baseline.ts +89 -0
  22. package/src/data/compress.ts +31 -0
  23. package/src/data/custom.ts +18 -0
  24. package/src/data/dimension.ts +42 -0
  25. package/src/data/encode.ts +109 -0
  26. package/src/data/envelope.ts +46 -0
  27. package/src/data/index.ts +43 -0
  28. package/src/data/limit.ts +42 -0
  29. package/src/data/metadata.ts +232 -0
  30. package/src/data/metric.ts +51 -0
  31. package/src/data/ping.ts +36 -0
  32. package/src/data/summary.ts +34 -0
  33. package/src/data/token.ts +39 -0
  34. package/src/data/upgrade.ts +36 -0
  35. package/src/data/upload.ts +250 -0
  36. package/src/data/variable.ts +46 -0
  37. package/src/diagnostic/encode.ts +40 -0
  38. package/src/diagnostic/image.ts +23 -0
  39. package/src/diagnostic/index.ts +14 -0
  40. package/src/diagnostic/internal.ts +41 -0
  41. package/src/diagnostic/script.ts +45 -0
  42. package/src/global.ts +22 -0
  43. package/src/index.ts +8 -0
  44. package/src/interaction/click.ts +140 -0
  45. package/src/interaction/encode.ts +140 -0
  46. package/src/interaction/index.ts +45 -0
  47. package/src/interaction/input.ts +64 -0
  48. package/src/interaction/pointer.ts +108 -0
  49. package/src/interaction/resize.ts +30 -0
  50. package/src/interaction/scroll.ts +73 -0
  51. package/src/interaction/selection.ts +66 -0
  52. package/src/interaction/timeline.ts +65 -0
  53. package/src/interaction/unload.ts +25 -0
  54. package/src/interaction/visibility.ts +24 -0
  55. package/src/layout/box.ts +83 -0
  56. package/src/layout/discover.ts +27 -0
  57. package/src/layout/document.ts +46 -0
  58. package/src/layout/dom.ts +442 -0
  59. package/src/layout/encode.ts +111 -0
  60. package/src/layout/extract.ts +75 -0
  61. package/src/layout/index.ts +25 -0
  62. package/src/layout/mutation.ts +232 -0
  63. package/src/layout/node.ts +211 -0
  64. package/src/layout/offset.ts +19 -0
  65. package/src/layout/region.ts +143 -0
  66. package/src/layout/schema.ts +66 -0
  67. package/src/layout/selector.ts +24 -0
  68. package/src/layout/target.ts +44 -0
  69. package/src/layout/traverse.ts +28 -0
  70. package/src/performance/connection.ts +37 -0
  71. package/src/performance/encode.ts +40 -0
  72. package/src/performance/index.ts +15 -0
  73. package/src/performance/navigation.ts +31 -0
  74. package/src/performance/observer.ts +87 -0
  75. package/test/core.test.ts +82 -0
  76. package/test/helper.ts +104 -0
  77. package/test/html/core.html +17 -0
  78. package/test/tsconfig.test.json +6 -0
  79. package/tsconfig.json +21 -0
  80. package/tslint.json +33 -0
  81. package/types/core.d.ts +127 -0
  82. package/types/data.d.ts +344 -0
  83. package/types/diagnostic.d.ts +24 -0
  84. package/types/index.d.ts +30 -0
  85. package/types/interaction.d.ts +110 -0
  86. package/types/layout.d.ts +200 -0
  87. package/types/performance.d.ts +40 -0
@@ -0,0 +1,200 @@
1
+ import { Privacy } from "@clarity-types/core";
2
+ import { BooleanFlag } from "@clarity-types/data";
3
+
4
+ /* Enum */
5
+
6
+ export const enum Source {
7
+ Discover,
8
+ ChildListAdd,
9
+ ChildListRemove,
10
+ Attributes,
11
+ CharacterData
12
+ }
13
+
14
+ export const enum InteractionState {
15
+ Rendered = 0,
16
+ Visible = 10,
17
+ Clicked = 20,
18
+ Input = 30
19
+ }
20
+
21
+ export const enum Constant {
22
+ Empty = "",
23
+ SvgPrefix = "svg:",
24
+ DataPrefix = "data:",
25
+ IFramePrefix = "iframe:",
26
+ SvgNamespace = "http://www.w3.org/2000/svg",
27
+ DevHook = "__CLARITY_DEVTOOLS_HOOK__",
28
+ Id = "id",
29
+ Class = "class",
30
+ Href = "href",
31
+ Src = "src",
32
+ Srcset = "srcset",
33
+ Box = "#",
34
+ Period = ".",
35
+ MaskData = "data-clarity-mask",
36
+ UnmaskData = "data-clarity-unmask",
37
+ RegionData = "data-clarity-region",
38
+ Type = "type",
39
+ Submit = "submit",
40
+ Name = "name",
41
+ Base = "*B",
42
+ SameOrigin = "*O",
43
+ Object = "object",
44
+ Function = "function",
45
+ StyleTag = "STYLE",
46
+ InputTag = "INPUT",
47
+ IFrameTag = "IFRAME",
48
+ ImageTag = "IMG",
49
+ TitleTag = "TITLE",
50
+ SvgTag = "svg:svg",
51
+ BaseTag = "BASE",
52
+ NativeCode = "[native code]",
53
+ DocumentTag = "*D",
54
+ ShadowDomTag = "*S",
55
+ PolyfillShadowDomTag = "*P",
56
+ TextTag = "*T",
57
+ SuspendMutationTag = "*M",
58
+ ChildList = "childList",
59
+ Attributes = "attributes",
60
+ CharacterData = "characterData",
61
+ Suspend = "suspend",
62
+ LoadEvent = "load",
63
+ Pixel = "px",
64
+ BorderBox = "border-box",
65
+ Value = "value",
66
+ MutationObserver = "MutationObserver",
67
+ Zone = "Zone",
68
+ Symbol = "__symbol__",
69
+ JsonLD = "application/ld+json",
70
+ String = "string",
71
+ Number = "number",
72
+ Disable = "disable",
73
+ HTML = "HTML",
74
+ Property = "property",
75
+ Content = "content",
76
+ Generator = "generator",
77
+ ogType = "og:type",
78
+ ogTitle = "og:title"
79
+ }
80
+
81
+ export const enum JsonLD {
82
+ Type = "@type",
83
+ Recipe = "recipe",
84
+ Product = "product",
85
+ AggregateRating = "aggregaterating",
86
+ Author = "person",
87
+ Offer = "offer",
88
+ Brand = "brand",
89
+ RatingValue = "ratingValue",
90
+ BestRating = "bestRating",
91
+ WorstRating = "worstRating",
92
+ RatingCount = "ratingCount",
93
+ ReviewCount = "reviewCount",
94
+ Availability = "availability",
95
+ Price = "price",
96
+ PriceCurrency = "priceCurrency",
97
+ ItemCondition = "itemCondition",
98
+ Category = "category",
99
+ Sku = "sku",
100
+ Name = "name",
101
+ Article = "article",
102
+ Posting = "posting",
103
+ Headline = "headline",
104
+ Creator = "creator"
105
+ }
106
+
107
+ export const enum Setting {
108
+ LookAhead = 33, // 33ms
109
+ MutationSuspendThreshold = 10, // Stop listening for mutations after hitting a threshold count
110
+ MutationActivePeriod = 3000 // Unit: milliseconds. Let mutations continue as normal during active periods of user interactions
111
+ }
112
+
113
+ /* Helper Interfaces */
114
+ export interface Box {
115
+ x: number; // Left
116
+ y: number; // Top
117
+ w: number; // Width
118
+ h: number; // Height
119
+ }
120
+
121
+ export interface Attributes {
122
+ [key: string]: string;
123
+ }
124
+
125
+ export interface NodeInfo {
126
+ tag: string;
127
+ path?: string;
128
+ attributes?: Attributes;
129
+ value?: string;
130
+ }
131
+
132
+ export interface NodeValue {
133
+ id: number;
134
+ parent: number;
135
+ previous: number;
136
+ position: number;
137
+ children: number[];
138
+ data: NodeInfo;
139
+ selector: string;
140
+ region: number;
141
+ metadata: NodeMeta;
142
+ }
143
+
144
+ export interface NodeMeta {
145
+ active: boolean;
146
+ privacy: Privacy;
147
+ size: number[];
148
+ }
149
+
150
+ export interface NodeChange {
151
+ time: number;
152
+ source: Source;
153
+ value: NodeValue;
154
+ }
155
+
156
+ export interface MutationQueue {
157
+ time: number;
158
+ mutations: MutationRecord[];
159
+ }
160
+
161
+ export interface MutationHistory {
162
+ [key: string]: [/* Count */ number, /* Remove Nodes Buffer */ NodeList?];
163
+ }
164
+
165
+ export interface RegionQueue {
166
+ node: Node;
167
+ data: RegionData;
168
+ }
169
+
170
+ export interface RegionState {
171
+ time: number;
172
+ data: RegionData;
173
+ }
174
+
175
+ /* Event Data */
176
+
177
+ export interface DocumentData {
178
+ width: number;
179
+ height: number;
180
+ }
181
+
182
+ export interface RegionData {
183
+ id: number;
184
+ state: InteractionState;
185
+ name: string;
186
+ }
187
+
188
+ export interface BoxData {
189
+ id: number;
190
+ width: number;
191
+ height: number;
192
+ }
193
+
194
+ export interface TargetMetadata {
195
+ id: number;
196
+ hash: string;
197
+ privacy: Privacy;
198
+ selector: string;
199
+ node: Node;
200
+ }
@@ -0,0 +1,40 @@
1
+ import { BooleanFlag, Target } from "./data";
2
+
3
+ /* Helper Interface */
4
+
5
+
6
+ // Reference: https://wicg.github.io/netinfo/#networkinformation-interface
7
+ export interface NavigatorConnection extends EventTarget {
8
+ effectiveType: string;
9
+ downlinkMax: number;
10
+ downlink: number;
11
+ rtt: number;
12
+ saveData: boolean;
13
+ }
14
+
15
+ /* Event Data */
16
+ export interface NavigationData {
17
+ fetchStart: number;
18
+ connectStart: number;
19
+ connectEnd: number;
20
+ requestStart: number;
21
+ responseStart: number;
22
+ responseEnd: number;
23
+ domInteractive: number;
24
+ domComplete: number;
25
+ loadEventStart: number;
26
+ loadEventEnd: number;
27
+ redirectCount: number;
28
+ size: number;
29
+ type: string;
30
+ protocol: string;
31
+ encodedSize: number;
32
+ decodedSize: number;
33
+ }
34
+
35
+ export interface ConnectionData {
36
+ downlink: number;
37
+ rtt: number;
38
+ saveData: BooleanFlag;
39
+ type: string;
40
+ }