@cloudcare/browser-core 3.2.10 → 3.2.13

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/cjs/dataMap.js CHANGED
@@ -104,12 +104,6 @@ var dataMap = {
104
104
  trace_id: '_gc.trace_id',
105
105
  span_id: '_gc.span_id',
106
106
  resource_id: 'resource.id',
107
- resource_url: 'resource.url',
108
- resource_url_host: 'resource.url_host',
109
- resource_url_path: 'resource.url_path',
110
- resource_url_path_group: 'resource.url_path_group',
111
- resource_url_query: 'resource.url_query',
112
- resource_type: 'resource.type',
113
107
  resource_status: 'resource.status',
114
108
  resource_status_group: 'resource.status_group',
115
109
  resource_method: 'resource.method'
@@ -117,6 +111,14 @@ var dataMap = {
117
111
  fields: {
118
112
  duration: 'resource.duration',
119
113
  resource_size: 'resource.size',
114
+ resource_url: 'resource.url',
115
+ resource_url_host: 'resource.url_host',
116
+ resource_url_path: 'resource.url_path',
117
+ resource_url_path_group: 'resource.url_path_group',
118
+ resource_url_query: 'resource.url_query',
119
+ resource_delivery_type: 'resource.delivery_type',
120
+ resource_type: 'resource.type',
121
+ resource_protocol: 'resource.protocol',
120
122
  resource_encode_size: 'resource.encoded_body_size',
121
123
  resource_decode_size: 'resource.decoded_body_size',
122
124
  resource_transfer_size: 'resource.transfer_size',
@@ -199,7 +201,11 @@ var dataMap = {
199
201
  message: ['string', 'telemetry.message'],
200
202
  type: 'telemetry.type',
201
203
  error_stack: ['string', 'telemetry.error.stack'],
202
- error_kind: ['string', 'telemetry.error.kind']
204
+ error_kind: ['string', 'telemetry.error.kind'],
205
+ connectivity: ['string', 'telemetry.connectivity'],
206
+ runtime_env: ['string', 'telemetry.runtime_env'],
207
+ usage: ['string', 'telemetry.usage'],
208
+ configuration: ['string', 'telemetry.configuration']
203
209
  }
204
210
  },
205
211
  browser_log: {
@@ -1 +1 @@
1
- {"version":3,"file":"dataMap.js","names":["_enums","require","commonTags","sdk_name","sdk_version","app_id","env","service","version","source","userid","user_email","user_name","session_id","session_type","session_sampling","is_signin","os","os_version","os_version_major","browser","browser_version","browser_version_major","screen_size","network_type","device","view_id","view_referrer","view_url","view_host","view_path","view_name","view_path_group","exports","commonFields","view_url_query","action_id","action_ids","view_in_foreground","display","session_has_replay","is_login","page_states","session_sample_rate","session_replay_sample_rate","drift","dataMap","view","type","RumEventType","VIEW","tags","view_loading_type","view_apdex_level","view_privacy_replay_level","fields","sampled_for_replay","is_active","session_replay_stats","session_is_active","view_error_count","view_resource_count","view_long_task_count","view_action_count","first_contentful_paint","largest_contentful_paint","largest_contentful_paint_element_selector","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","first_input_delay","loading_time","dom_interactive","dom_content_loaded","dom_complete","load_event","first_input_time","first_input_target_selector","first_paint_time","interaction_to_next_paint","interaction_to_next_paint_target_selector","resource_load_time","time_to_interactive","dom","dom_ready","time_spent","first_byte","frustration_count","custom_timings","resource","RESOURCE","trace_id","span_id","resource_id","resource_url","resource_url_host","resource_url_path","resource_url_path_group","resource_url_query","resource_type","resource_status","resource_status_group","resource_method","duration","resource_size","resource_encode_size","resource_decode_size","resource_transfer_size","resource_render_blocking_status","resource_dns","resource_tcp","resource_ssl","resource_ttfb","resource_trans","resource_redirect","resource_first_byte","resource_dns_time","resource_download_time","resource_first_byte_time","resource_connect_time","resource_ssl_time","resource_redirect_time","error","ERROR","error_id","error_source","error_type","error_handling","error_message","error_stack","error_causes","error_handling_stack","long_task","LONG_TASK","long_task_id","blocking_duration","first_ui_event_timestamp","render_start","style_and_layout_start","long_task_start_time","scripts","action","ACTION","action_type","action_name","action_error_count","action_resource_count","action_frustration_types","action_long_task_count","action_target","action_position","telemetry","status","message","error_kind","browser_log","LOGGER","error_resource_url","error_resource_url_host","error_resource_url_path","error_resource_url_path_group","error_resource_status","error_resource_status_group","error_resource_method"],"sources":["../src/dataMap.js"],"sourcesContent":["import { RumEventType } from './helper/enums'\nexport var commonTags = {\n sdk_name: '_gc.sdk_name',\n sdk_version: '_gc.sdk_version',\n app_id: 'application.id',\n env: 'env',\n service: 'service',\n version: 'version',\n source: 'source',\n userid: 'user.id',\n user_email: 'user.email',\n user_name: 'user.name',\n session_id: 'session.id',\n session_type: 'session.type',\n session_sampling: 'session.is_sampling',\n is_signin: 'user.is_signin',\n os: 'device.os',\n os_version: 'device.os_version',\n os_version_major: 'device.os_version_major',\n browser: 'device.browser',\n browser_version: 'device.browser_version',\n browser_version_major: 'device.browser_version_major',\n screen_size: 'device.screen_size',\n network_type: 'device.network_type',\n device: 'device.device',\n view_id: 'view.id',\n view_referrer: 'view.referrer',\n view_url: 'view.url',\n view_host: 'view.host',\n view_path: 'view.path',\n view_name: 'view.path', // 冗余一个字段\n view_path_group: 'view.path_group'\n}\nexport var commonFields = {\n view_url_query: 'view.url_query',\n action_id: 'action.id',\n action_ids: 'action.ids',\n view_in_foreground: 'view.in_foreground',\n display: 'display',\n session_has_replay: 'session.has_replay',\n is_login: 'user.is_login',\n page_states: '_gc.page_states',\n session_sample_rate: '_gc.configuration.session_sample_rate',\n session_replay_sample_rate: '_gc.configuration.session_replay_sample_rate',\n drift: '_gc.drift'\n}\n// 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]\nexport var dataMap = {\n view: {\n type: RumEventType.VIEW,\n tags: {\n view_loading_type: 'view.loading_type',\n view_apdex_level: 'view.apdex_level',\n view_privacy_replay_level: 'privacy.replay_level'\n },\n fields: {\n sampled_for_replay: 'session.sampled_for_replay',\n is_active: 'view.is_active',\n session_replay_stats: '_gc.replay_stats',\n session_is_active: 'session.is_active',\n view_error_count: 'view.error.count',\n view_resource_count: 'view.resource.count',\n view_long_task_count: 'view.long_task.count',\n view_action_count: 'view.action.count',\n first_contentful_paint: 'view.first_contentful_paint',\n largest_contentful_paint: 'view.largest_contentful_paint',\n largest_contentful_paint_element_selector:\n 'view.largest_contentful_paint_element_selector',\n cumulative_layout_shift: 'view.cumulative_layout_shift',\n cumulative_layout_shift_time: 'view.cumulative_layout_shift_time',\n cumulative_layout_shift_target_selector:\n 'view.cumulative_layout_shift_target_selector',\n first_input_delay: 'view.first_input_delay',\n loading_time: 'view.loading_time',\n dom_interactive: 'view.dom_interactive',\n dom_content_loaded: 'view.dom_content_loaded',\n dom_complete: 'view.dom_complete',\n load_event: 'view.load_event',\n first_input_time: 'view.first_input_time',\n first_input_target_selector: 'view.first_input_target_selector',\n first_paint_time: 'view.fpt',\n interaction_to_next_paint: 'view.interaction_to_next_paint',\n interaction_to_next_paint_target_selector:\n 'view.interaction_to_next_paint_target_selector',\n resource_load_time: 'view.resource_load_time',\n time_to_interactive: 'view.tti',\n dom: 'view.dom',\n dom_ready: 'view.dom_ready',\n time_spent: 'view.time_spent',\n first_byte: 'view.first_byte',\n frustration_count: 'view.frustration.count',\n custom_timings: 'view.custom_timings'\n }\n },\n resource: {\n type: RumEventType.RESOURCE,\n tags: {\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n resource_id: 'resource.id',\n resource_url: 'resource.url',\n resource_url_host: 'resource.url_host',\n resource_url_path: 'resource.url_path',\n resource_url_path_group: 'resource.url_path_group',\n resource_url_query: 'resource.url_query',\n resource_type: 'resource.type',\n resource_status: 'resource.status',\n resource_status_group: 'resource.status_group',\n resource_method: 'resource.method'\n },\n fields: {\n duration: 'resource.duration',\n resource_size: 'resource.size',\n resource_encode_size: 'resource.encoded_body_size',\n resource_decode_size: 'resource.decoded_body_size',\n resource_transfer_size: 'resource.transfer_size',\n resource_render_blocking_status: 'resource.render_blocking_status',\n resource_dns: 'resource.dns',\n resource_tcp: 'resource.tcp',\n resource_ssl: 'resource.ssl',\n resource_ttfb: 'resource.ttfb',\n resource_trans: 'resource.trans',\n resource_redirect: 'resource.redirect',\n resource_first_byte: 'resource.firstbyte',\n resource_dns_time: 'resource.dns_time',\n resource_download_time: 'resource.download_time',\n resource_first_byte_time: 'resource.first_byte_time',\n resource_connect_time: 'resource.connect_time',\n resource_ssl_time: 'resource.ssl_time',\n resource_redirect_time: 'resource.redirect_time'\n }\n },\n error: {\n type: RumEventType.ERROR,\n tags: {\n error_id: 'error.id',\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n error_source: 'error.source',\n error_type: 'error.type',\n error_handling: 'error.handling'\n // resource_url: 'error.resource.url',\n // resource_url_host: 'error.resource.url_host',\n // resource_url_path: 'error.resource.url_path',\n // resource_url_path_group: 'error.resource.url_path_group',\n // resource_status: 'error.resource.status',\n // resource_status_group: 'error.resource.status_group',\n // resource_method: 'error.resource.method'\n },\n fields: {\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack'],\n error_causes: ['string', 'error.causes'],\n error_handling_stack: ['string', 'error.handling_stack']\n }\n },\n long_task: {\n type: RumEventType.LONG_TASK,\n tags: {\n long_task_id: 'long_task.id'\n },\n fields: {\n duration: 'long_task.duration',\n blocking_duration: 'long_task.blocking_duration',\n first_ui_event_timestamp: 'long_task.first_ui_event_timestamp',\n render_start: 'long_task.render_start',\n style_and_layout_start: 'long_task.style_and_layout_start',\n long_task_start_time: 'long_task.start_time',\n scripts: ['string', 'long_task.scripts']\n }\n },\n action: {\n type: RumEventType.ACTION,\n tags: {\n action_type: 'action.type'\n },\n fields: {\n action_name: 'action.target.name',\n duration: 'action.loading_time',\n action_error_count: 'action.error.count',\n action_resource_count: 'action.resource.count',\n action_frustration_types: 'action.frustration.type',\n action_long_task_count: 'action.long_task.count',\n action_target: '_gc.action.target',\n action_position: '_gc.action.position'\n }\n },\n telemetry: {\n type: 'telemetry',\n fields: {\n status: 'telemetry.status',\n message: ['string', 'telemetry.message'],\n type: 'telemetry.type',\n error_stack: ['string', 'telemetry.error.stack'],\n error_kind: ['string', 'telemetry.error.kind']\n }\n },\n browser_log: {\n type: RumEventType.LOGGER,\n tags: {\n error_source: 'error.source',\n error_type: 'error.type',\n error_resource_url: 'http.url',\n error_resource_url_host: 'http.url_host',\n error_resource_url_path: 'http.url_path',\n error_resource_url_path_group: 'http.url_path_group',\n error_resource_status: 'http.status_code',\n error_resource_status_group: 'http.status_group',\n error_resource_method: 'http.method',\n action_id: 'user_action.id',\n service: 'service',\n status: 'status'\n },\n fields: {\n message: ['string', 'message'],\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack']\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dataMap.js","names":["_enums","require","commonTags","sdk_name","sdk_version","app_id","env","service","version","source","userid","user_email","user_name","session_id","session_type","session_sampling","is_signin","os","os_version","os_version_major","browser","browser_version","browser_version_major","screen_size","network_type","device","view_id","view_referrer","view_url","view_host","view_path","view_name","view_path_group","exports","commonFields","view_url_query","action_id","action_ids","view_in_foreground","display","session_has_replay","is_login","page_states","session_sample_rate","session_replay_sample_rate","drift","dataMap","view","type","RumEventType","VIEW","tags","view_loading_type","view_apdex_level","view_privacy_replay_level","fields","sampled_for_replay","is_active","session_replay_stats","session_is_active","view_error_count","view_resource_count","view_long_task_count","view_action_count","first_contentful_paint","largest_contentful_paint","largest_contentful_paint_element_selector","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","first_input_delay","loading_time","dom_interactive","dom_content_loaded","dom_complete","load_event","first_input_time","first_input_target_selector","first_paint_time","interaction_to_next_paint","interaction_to_next_paint_target_selector","resource_load_time","time_to_interactive","dom","dom_ready","time_spent","first_byte","frustration_count","custom_timings","resource","RESOURCE","trace_id","span_id","resource_id","resource_status","resource_status_group","resource_method","duration","resource_size","resource_url","resource_url_host","resource_url_path","resource_url_path_group","resource_url_query","resource_delivery_type","resource_type","resource_protocol","resource_encode_size","resource_decode_size","resource_transfer_size","resource_render_blocking_status","resource_dns","resource_tcp","resource_ssl","resource_ttfb","resource_trans","resource_redirect","resource_first_byte","resource_dns_time","resource_download_time","resource_first_byte_time","resource_connect_time","resource_ssl_time","resource_redirect_time","error","ERROR","error_id","error_source","error_type","error_handling","error_message","error_stack","error_causes","error_handling_stack","long_task","LONG_TASK","long_task_id","blocking_duration","first_ui_event_timestamp","render_start","style_and_layout_start","long_task_start_time","scripts","action","ACTION","action_type","action_name","action_error_count","action_resource_count","action_frustration_types","action_long_task_count","action_target","action_position","telemetry","status","message","error_kind","connectivity","runtime_env","usage","configuration","browser_log","LOGGER","error_resource_url","error_resource_url_host","error_resource_url_path","error_resource_url_path_group","error_resource_status","error_resource_status_group","error_resource_method"],"sources":["../src/dataMap.js"],"sourcesContent":["import { RumEventType } from './helper/enums'\nexport var commonTags = {\n sdk_name: '_gc.sdk_name',\n sdk_version: '_gc.sdk_version',\n app_id: 'application.id',\n env: 'env',\n service: 'service',\n version: 'version',\n source: 'source',\n userid: 'user.id',\n user_email: 'user.email',\n user_name: 'user.name',\n session_id: 'session.id',\n session_type: 'session.type',\n session_sampling: 'session.is_sampling',\n is_signin: 'user.is_signin',\n os: 'device.os',\n os_version: 'device.os_version',\n os_version_major: 'device.os_version_major',\n browser: 'device.browser',\n browser_version: 'device.browser_version',\n browser_version_major: 'device.browser_version_major',\n screen_size: 'device.screen_size',\n network_type: 'device.network_type',\n device: 'device.device',\n view_id: 'view.id',\n view_referrer: 'view.referrer',\n view_url: 'view.url',\n view_host: 'view.host',\n view_path: 'view.path',\n view_name: 'view.path', // 冗余一个字段\n view_path_group: 'view.path_group'\n}\nexport var commonFields = {\n view_url_query: 'view.url_query',\n action_id: 'action.id',\n action_ids: 'action.ids',\n view_in_foreground: 'view.in_foreground',\n display: 'display',\n session_has_replay: 'session.has_replay',\n is_login: 'user.is_login',\n page_states: '_gc.page_states',\n session_sample_rate: '_gc.configuration.session_sample_rate',\n session_replay_sample_rate: '_gc.configuration.session_replay_sample_rate',\n drift: '_gc.drift'\n}\n// 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]\nexport var dataMap = {\n view: {\n type: RumEventType.VIEW,\n tags: {\n view_loading_type: 'view.loading_type',\n view_apdex_level: 'view.apdex_level',\n view_privacy_replay_level: 'privacy.replay_level'\n },\n fields: {\n sampled_for_replay: 'session.sampled_for_replay',\n is_active: 'view.is_active',\n session_replay_stats: '_gc.replay_stats',\n session_is_active: 'session.is_active',\n view_error_count: 'view.error.count',\n view_resource_count: 'view.resource.count',\n view_long_task_count: 'view.long_task.count',\n view_action_count: 'view.action.count',\n first_contentful_paint: 'view.first_contentful_paint',\n largest_contentful_paint: 'view.largest_contentful_paint',\n largest_contentful_paint_element_selector:\n 'view.largest_contentful_paint_element_selector',\n cumulative_layout_shift: 'view.cumulative_layout_shift',\n cumulative_layout_shift_time: 'view.cumulative_layout_shift_time',\n cumulative_layout_shift_target_selector:\n 'view.cumulative_layout_shift_target_selector',\n first_input_delay: 'view.first_input_delay',\n loading_time: 'view.loading_time',\n dom_interactive: 'view.dom_interactive',\n dom_content_loaded: 'view.dom_content_loaded',\n dom_complete: 'view.dom_complete',\n load_event: 'view.load_event',\n first_input_time: 'view.first_input_time',\n first_input_target_selector: 'view.first_input_target_selector',\n first_paint_time: 'view.fpt',\n interaction_to_next_paint: 'view.interaction_to_next_paint',\n interaction_to_next_paint_target_selector:\n 'view.interaction_to_next_paint_target_selector',\n resource_load_time: 'view.resource_load_time',\n time_to_interactive: 'view.tti',\n dom: 'view.dom',\n dom_ready: 'view.dom_ready',\n time_spent: 'view.time_spent',\n first_byte: 'view.first_byte',\n frustration_count: 'view.frustration.count',\n custom_timings: 'view.custom_timings'\n }\n },\n resource: {\n type: RumEventType.RESOURCE,\n tags: {\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n resource_id: 'resource.id',\n resource_status: 'resource.status',\n resource_status_group: 'resource.status_group',\n resource_method: 'resource.method'\n },\n fields: {\n duration: 'resource.duration',\n resource_size: 'resource.size',\n resource_url: 'resource.url',\n resource_url_host: 'resource.url_host',\n resource_url_path: 'resource.url_path',\n resource_url_path_group: 'resource.url_path_group',\n resource_url_query: 'resource.url_query',\n resource_delivery_type: 'resource.delivery_type',\n resource_type: 'resource.type',\n resource_protocol: 'resource.protocol',\n resource_encode_size: 'resource.encoded_body_size',\n resource_decode_size: 'resource.decoded_body_size',\n resource_transfer_size: 'resource.transfer_size',\n resource_render_blocking_status: 'resource.render_blocking_status',\n resource_dns: 'resource.dns',\n resource_tcp: 'resource.tcp',\n resource_ssl: 'resource.ssl',\n resource_ttfb: 'resource.ttfb',\n resource_trans: 'resource.trans',\n resource_redirect: 'resource.redirect',\n resource_first_byte: 'resource.firstbyte',\n resource_dns_time: 'resource.dns_time',\n resource_download_time: 'resource.download_time',\n resource_first_byte_time: 'resource.first_byte_time',\n resource_connect_time: 'resource.connect_time',\n resource_ssl_time: 'resource.ssl_time',\n resource_redirect_time: 'resource.redirect_time'\n }\n },\n error: {\n type: RumEventType.ERROR,\n tags: {\n error_id: 'error.id',\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n error_source: 'error.source',\n error_type: 'error.type',\n error_handling: 'error.handling'\n // resource_url: 'error.resource.url',\n // resource_url_host: 'error.resource.url_host',\n // resource_url_path: 'error.resource.url_path',\n // resource_url_path_group: 'error.resource.url_path_group',\n // resource_status: 'error.resource.status',\n // resource_status_group: 'error.resource.status_group',\n // resource_method: 'error.resource.method'\n },\n fields: {\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack'],\n error_causes: ['string', 'error.causes'],\n error_handling_stack: ['string', 'error.handling_stack']\n }\n },\n long_task: {\n type: RumEventType.LONG_TASK,\n tags: {\n long_task_id: 'long_task.id'\n },\n fields: {\n duration: 'long_task.duration',\n blocking_duration: 'long_task.blocking_duration',\n first_ui_event_timestamp: 'long_task.first_ui_event_timestamp',\n render_start: 'long_task.render_start',\n style_and_layout_start: 'long_task.style_and_layout_start',\n long_task_start_time: 'long_task.start_time',\n scripts: ['string', 'long_task.scripts']\n }\n },\n action: {\n type: RumEventType.ACTION,\n tags: {\n action_type: 'action.type'\n },\n fields: {\n action_name: 'action.target.name',\n duration: 'action.loading_time',\n action_error_count: 'action.error.count',\n action_resource_count: 'action.resource.count',\n action_frustration_types: 'action.frustration.type',\n action_long_task_count: 'action.long_task.count',\n action_target: '_gc.action.target',\n action_position: '_gc.action.position'\n }\n },\n telemetry: {\n type: 'telemetry',\n fields: {\n status: 'telemetry.status',\n message: ['string', 'telemetry.message'],\n type: 'telemetry.type',\n error_stack: ['string', 'telemetry.error.stack'],\n error_kind: ['string', 'telemetry.error.kind'],\n connectivity: ['string', 'telemetry.connectivity'],\n runtime_env: ['string', 'telemetry.runtime_env'],\n usage: ['string', 'telemetry.usage'],\n configuration: ['string', 'telemetry.configuration']\n }\n },\n browser_log: {\n type: RumEventType.LOGGER,\n tags: {\n error_source: 'error.source',\n error_type: 'error.type',\n error_resource_url: 'http.url',\n error_resource_url_host: 'http.url_host',\n error_resource_url_path: 'http.url_path',\n error_resource_url_path_group: 'http.url_path_group',\n error_resource_status: 'http.status_code',\n error_resource_status_group: 'http.status_group',\n error_resource_method: 'http.method',\n action_id: 'user_action.id',\n service: 'service',\n status: 'status'\n },\n fields: {\n message: ['string', 'message'],\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack']\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -173,11 +173,11 @@ function sanitizeObjects(value) {
173
173
  try {
174
174
  // Handle events - Keep a simple implementation to avoid breaking changes
175
175
  if (value instanceof Event) {
176
- return {
177
- isTrusted: value.isTrusted
178
- };
176
+ return sanitizeEvent(value);
177
+ }
178
+ if (value instanceof RegExp) {
179
+ return "[RegExp] ".concat(value.toString());
179
180
  }
180
-
181
181
  // Handle all remaining object types in a generic way
182
182
  var result = Object.prototype.toString.call(value);
183
183
  var match = result.match(/\[object (.*)\]/);
@@ -190,7 +190,14 @@ function sanitizeObjects(value) {
190
190
  }
191
191
  return '[Unserializable]';
192
192
  }
193
-
193
+ function sanitizeEvent(event) {
194
+ return {
195
+ type: event.type,
196
+ isTrusted: event.isTrusted,
197
+ currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,
198
+ target: event.target ? sanitizeObjects(event.target) : null
199
+ };
200
+ }
194
201
  /**
195
202
  * Checks if a toJSON function exists and tries to execute it
196
203
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","names":["_display","require","_byteUtils","_jsonStringify","_typeof","obj","Symbol","iterator","constructor","prototype","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","ONE_KIBI_BYTE","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","source","maxCharacterCount","undefined","restoreObjectPrototypeToJson","detachToJsonMethod","Object","restoreArrayPrototypeToJson","Array","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","JSON","stringify","length","warnOverCharacterLimit","containerToProcess","shift","separatorLength","isArray","key","targetData","path","target","hasOwnProperty","call","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","has","get","currentPath","set","push","value","toString","name","description","Event","isTrusted","result","match","_unused","object","toJSON","_unused2","changeType","display","warn"],"sources":["../../src/helper/sanitize.js"],"sourcesContent":["import { display } from './display'\nimport { ONE_KIBI_BYTE } from './byteUtils'\nimport { detachToJsonMethod } from './serialisation/jsonStringify'\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\n\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === undefined) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = []\n var visitedObjectsWithPath = new WeakMap()\n var sanitizedData = sanitizeProcessor(\n source,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n var accumulatedCharacterCount =\n (JSON.stringify(sanitizedData) && JSON.stringify(sanitizedData).length) || 0\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (\n containerQueue.length > 0 &&\n accumulatedCharacterCount < maxCharacterCount\n ) {\n var containerToProcess = containerQueue.shift()\n var separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n } else {\n for (var key in containerToProcess.source) {\n if (\n Object.prototype.hasOwnProperty.call(containerToProcess.source, key)\n ) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length +\n separatorLength +\n key.length +\n KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source,\n parentPath,\n key,\n queue,\n visitedObjectsWithPath\n) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n var sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (\n sanitizedSource !== '[Object]' &&\n sanitizedSource !== '[Array]' &&\n sanitizedSource !== '[Error]'\n ) {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return (\n '[Reference seen at ' + visitedObjectsWithPath.get(sourceAsObject) + ']'\n )\n }\n\n // Add processed source to queue\n var currentPath = key !== undefined ? parentPath + '.' + key : parentPath\n var target = Array.isArray(sourceToSanitize) ? [] : {}\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return '[BigInt] ' + value.toString()\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return '[Function] ' + value.name || 'unknown'\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n return '[Symbol] ' + value.description || value.toString()\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted\n }\n }\n\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value)\n var match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return '[' + match[1] + ']'\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\n\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON()\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\n 'The data provided has been ' +\n changeType +\n ' as it is over the limit of ' +\n maxCharacterCount +\n ' characters:',\n source\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sanitize.js","names":["_display","require","_byteUtils","_jsonStringify","_typeof","obj","Symbol","iterator","constructor","prototype","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","ONE_KIBI_BYTE","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","source","maxCharacterCount","undefined","restoreObjectPrototypeToJson","detachToJsonMethod","Object","restoreArrayPrototypeToJson","Array","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","JSON","stringify","length","warnOverCharacterLimit","containerToProcess","shift","separatorLength","isArray","key","targetData","path","target","hasOwnProperty","call","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","has","get","currentPath","set","push","value","toString","name","description","Event","sanitizeEvent","RegExp","concat","result","match","_unused","event","type","isTrusted","currentTarget","object","toJSON","_unused2","changeType","display","warn"],"sources":["../../src/helper/sanitize.js"],"sourcesContent":["import { display } from './display'\nimport { ONE_KIBI_BYTE } from './byteUtils'\nimport { detachToJsonMethod } from './serialisation/jsonStringify'\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\n\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === undefined) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = []\n var visitedObjectsWithPath = new WeakMap()\n var sanitizedData = sanitizeProcessor(\n source,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n var accumulatedCharacterCount =\n (JSON.stringify(sanitizedData) && JSON.stringify(sanitizedData).length) || 0\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (\n containerQueue.length > 0 &&\n accumulatedCharacterCount < maxCharacterCount\n ) {\n var containerToProcess = containerQueue.shift()\n var separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n } else {\n for (var key in containerToProcess.source) {\n if (\n Object.prototype.hasOwnProperty.call(containerToProcess.source, key)\n ) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length +\n separatorLength +\n key.length +\n KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source,\n parentPath,\n key,\n queue,\n visitedObjectsWithPath\n) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n var sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (\n sanitizedSource !== '[Object]' &&\n sanitizedSource !== '[Array]' &&\n sanitizedSource !== '[Error]'\n ) {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return (\n '[Reference seen at ' + visitedObjectsWithPath.get(sourceAsObject) + ']'\n )\n }\n\n // Add processed source to queue\n var currentPath = key !== undefined ? parentPath + '.' + key : parentPath\n var target = Array.isArray(sourceToSanitize) ? [] : {}\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return '[BigInt] ' + value.toString()\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return '[Function] ' + value.name || 'unknown'\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n return '[Symbol] ' + value.description || value.toString()\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return sanitizeEvent(value)\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value)\n var match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return '[' + match[1] + ']'\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget\n ? sanitizeObjects(event.currentTarget)\n : null,\n target: event.target ? sanitizeObjects(event.target) : null\n }\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON()\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\n 'The data provided has been ' +\n changeType +\n ' as it is over the limit of ' +\n maxCharacterCount +\n ' characters:',\n source\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"taskQueue.js","names":["_tools","require","_requestIdleCallback","IDLE_CALLBACK_TIMEOUT","ONE_SECOND","MAX_EXECUTION_TIME_ON_TIMEOUT","exports","createTaskQueue","pendingTasks","run","deadline","executionTimeRemaining","didTimeout","start","performance","now","timeRemaining","bind","length","shift","scheduleNextRun","requestIdleCallback","timeout","push","task"],"sources":["../../src/helper/taskQueue.js"],"sourcesContent":["import { ONE_SECOND } from './tools'\nimport { requestIdleCallback } from './requestIdleCallback'\n\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND\n\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30\n\nexport function createTaskQueue() {\n const pendingTasks = []\n\n function run(deadline) {\n let executionTimeRemaining\n if (deadline.didTimeout) {\n const start = performance.now()\n executionTimeRemaining = function () {\n return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start)\n }\n } else {\n executionTimeRemaining = deadline.timeRemaining.bind(deadline)\n }\n\n while (executionTimeRemaining() > 0 && pendingTasks.length) {\n pendingTasks.shift()()\n }\n\n if (pendingTasks.length) {\n scheduleNextRun()\n }\n }\n\n function scheduleNextRun() {\n requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT })\n }\n\n return {\n push(task) {\n if (pendingTasks.push(task) === 1) {\n scheduleNextRun()\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,qBAAqB,GAAGC,iBAAU;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,6BAA6B,GAAG,EAAE;AAAAC,OAAA,CAAAD,6BAAA,GAAAA,6BAAA;AAExC,SAASE,eAAeA,CAAA,EAAG;EAChC,IAAMC,YAAY,GAAG,EAAE;EAEvB,SAASC,GAAGA,CAACC,QAAQ,EAAE;IACrB,IAAIC,sBAAsB;IAC1B,IAAID,QAAQ,CAACE,UAAU,EAAE;MACvB,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BJ,sBAAsB,GAAG,SAAAA,uBAAA,EAAY;QACnC,OAAON,6BAA6B,IAAIS,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,CAAC;MACpE,CAAC;IACH,CAAC,MAAM;MACLF,sBAAsB,GAAGD,QAAQ,CAACM,aAAa,CAACC,IAAI,CAACP,QAAQ,CAAC;IAChE;IAEA,OAAOC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAIH,YAAY,CAACU,MAAM,EAAE;MAC1DV,YAAY,CAACW,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB;IAEA,IAAIX,YAAY,CAACU,MAAM,EAAE;MACvBE,eAAe,CAAC,CAAC;IACnB;EACF;EAEA,SAASA,eAAeA,CAAA,EAAG;IACzB,IAAAC,wCAAmB,EAACZ,GAAG,EAAE;MAAEa,OAAO,EAAEnB;IAAsB,CAAC,CAAC;EAC9D;EAEA,OAAO;IACLoB,IAAI,WAAAA,KAACC,IAAI,EAAE;MACT,IAAIhB,YAAY,CAACe,IAAI,CAACC,IAAI,CAAC,KAAK,CAAC,EAAE;QACjCJ,eAAe,CAAC,CAAC;MACnB;IACF;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"taskQueue.js","names":["_tools","require","_requestIdleCallback","IDLE_CALLBACK_TIMEOUT","ONE_SECOND","MAX_EXECUTION_TIME_ON_TIMEOUT","exports","createTaskQueue","pendingTasks","run","deadline","executionTimeRemaining","didTimeout","start","performance","now","timeRemaining","bind","length","shift","scheduleNextRun","requestIdleCallback","timeout","push","task"],"sources":["../../src/helper/taskQueue.js"],"sourcesContent":["import { ONE_SECOND } from './tools'\nimport { requestIdleCallback } from './requestIdleCallback'\n\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND\n\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30\n\nexport function createTaskQueue() {\n const pendingTasks = []\n\n function run(deadline) {\n let executionTimeRemaining\n if (deadline.didTimeout) {\n const start = performance.now()\n executionTimeRemaining = function () {\n return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start)\n }\n } else {\n executionTimeRemaining = deadline.timeRemaining.bind(deadline)\n }\n\n while (executionTimeRemaining() > 0 && pendingTasks.length) {\n pendingTasks.shift()()\n }\n\n if (pendingTasks.length) {\n scheduleNextRun()\n }\n }\n\n function scheduleNextRun() {\n requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT })\n }\n\n return {\n push: function (task) {\n if (pendingTasks.push(task) === 1) {\n scheduleNextRun()\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,qBAAqB,GAAGC,iBAAU;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,6BAA6B,GAAG,EAAE;AAAAC,OAAA,CAAAD,6BAAA,GAAAA,6BAAA;AAExC,SAASE,eAAeA,CAAA,EAAG;EAChC,IAAMC,YAAY,GAAG,EAAE;EAEvB,SAASC,GAAGA,CAACC,QAAQ,EAAE;IACrB,IAAIC,sBAAsB;IAC1B,IAAID,QAAQ,CAACE,UAAU,EAAE;MACvB,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BJ,sBAAsB,GAAG,SAAAA,uBAAA,EAAY;QACnC,OAAON,6BAA6B,IAAIS,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,CAAC;MACpE,CAAC;IACH,CAAC,MAAM;MACLF,sBAAsB,GAAGD,QAAQ,CAACM,aAAa,CAACC,IAAI,CAACP,QAAQ,CAAC;IAChE;IAEA,OAAOC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAIH,YAAY,CAACU,MAAM,EAAE;MAC1DV,YAAY,CAACW,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB;IAEA,IAAIX,YAAY,CAACU,MAAM,EAAE;MACvBE,eAAe,CAAC,CAAC;IACnB;EACF;EAEA,SAASA,eAAeA,CAAA,EAAG;IACzB,IAAAC,wCAAmB,EAACZ,GAAG,EAAE;MAAEa,OAAO,EAAEnB;IAAsB,CAAC,CAAC;EAC9D;EAEA,OAAO;IACLoB,IAAI,EAAE,SAAAA,KAAUC,IAAI,EAAE;MACpB,IAAIhB,YAAY,CAACe,IAAI,CAACC,IAAI,CAAC,KAAK,CAAC,EAAE;QACjCJ,eAAe,CAAC,CAAC;MACnB;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -14,6 +14,10 @@ var UNKNOWN_FUNCTION = '?';
14
14
  function computeStackTrace(ex) {
15
15
  var stack = [];
16
16
  var stackProperty = tryToGetString(ex, 'stack');
17
+ var exString = String(ex);
18
+ if (stackProperty && stackProperty.startsWith(exString)) {
19
+ stackProperty = stackProperty.slice(exString.length);
20
+ }
17
21
  if (stackProperty) {
18
22
  (0, _tools.each)(stackProperty.split('\n'), function (line) {
19
23
  var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
@@ -31,7 +35,7 @@ function computeStackTrace(ex) {
31
35
  stack: stack
32
36
  };
33
37
  }
34
- var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)';
38
+ var fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)';
35
39
  var filePosition = '(?::(\\d+))';
36
40
  var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\(' + fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i');
37
41
  var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)');
@@ -1 +1 @@
1
- {"version":3,"file":"computeStackTrace.js","names":["_tools","require","_typeof","obj","Symbol","iterator","constructor","prototype","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","each","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n if (stackProperty) {\n each(stackProperty.split('\\n'), function(line) {\n var stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n }\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp('^\\\\s*at (.*?) ?\\\\('+ fileUrl + filePosition + '?' + filePosition + '?\\\\)?\\\\s*$', 'i')\nvar CHROME_EVAL_RE = new RegExp('\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)')\n\nfunction parseChromeLine(line){\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$', 'i')\n\nfunction parseChromeAnonymousLine(line){\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"computeStackTrace.js","names":["_tools","require","_typeof","obj","Symbol","iterator","constructor","prototype","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","String","startsWith","slice","length","each","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n var exString = String(ex)\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length)\n }\n if (stackProperty) {\n each(stackProperty.split('\\n'), function (line) {\n var stackFrame =\n parseChromeLine(line) ||\n parseChromeAnonymousLine(line) ||\n parseWinLine(line) ||\n parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack\n }\n}\nvar fileUrl =\n '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp(\n '^\\\\s*at (.*?) ?\\\\(' +\n fileUrl +\n filePosition +\n '?' +\n filePosition +\n '?\\\\)?\\\\s*$',\n 'i'\n)\nvar CHROME_EVAL_RE = new RegExp(\n '\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)'\n)\n\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\n '^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$',\n 'i'\n)\n\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1]\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2]\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3]\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/esm/dataMap.js CHANGED
@@ -96,12 +96,6 @@ export var dataMap = {
96
96
  trace_id: '_gc.trace_id',
97
97
  span_id: '_gc.span_id',
98
98
  resource_id: 'resource.id',
99
- resource_url: 'resource.url',
100
- resource_url_host: 'resource.url_host',
101
- resource_url_path: 'resource.url_path',
102
- resource_url_path_group: 'resource.url_path_group',
103
- resource_url_query: 'resource.url_query',
104
- resource_type: 'resource.type',
105
99
  resource_status: 'resource.status',
106
100
  resource_status_group: 'resource.status_group',
107
101
  resource_method: 'resource.method'
@@ -109,6 +103,14 @@ export var dataMap = {
109
103
  fields: {
110
104
  duration: 'resource.duration',
111
105
  resource_size: 'resource.size',
106
+ resource_url: 'resource.url',
107
+ resource_url_host: 'resource.url_host',
108
+ resource_url_path: 'resource.url_path',
109
+ resource_url_path_group: 'resource.url_path_group',
110
+ resource_url_query: 'resource.url_query',
111
+ resource_delivery_type: 'resource.delivery_type',
112
+ resource_type: 'resource.type',
113
+ resource_protocol: 'resource.protocol',
112
114
  resource_encode_size: 'resource.encoded_body_size',
113
115
  resource_decode_size: 'resource.decoded_body_size',
114
116
  resource_transfer_size: 'resource.transfer_size',
@@ -191,7 +193,11 @@ export var dataMap = {
191
193
  message: ['string', 'telemetry.message'],
192
194
  type: 'telemetry.type',
193
195
  error_stack: ['string', 'telemetry.error.stack'],
194
- error_kind: ['string', 'telemetry.error.kind']
196
+ error_kind: ['string', 'telemetry.error.kind'],
197
+ connectivity: ['string', 'telemetry.connectivity'],
198
+ runtime_env: ['string', 'telemetry.runtime_env'],
199
+ usage: ['string', 'telemetry.usage'],
200
+ configuration: ['string', 'telemetry.configuration']
195
201
  }
196
202
  },
197
203
  browser_log: {
@@ -1 +1 @@
1
- {"version":3,"file":"dataMap.js","names":["RumEventType","commonTags","sdk_name","sdk_version","app_id","env","service","version","source","userid","user_email","user_name","session_id","session_type","session_sampling","is_signin","os","os_version","os_version_major","browser","browser_version","browser_version_major","screen_size","network_type","device","view_id","view_referrer","view_url","view_host","view_path","view_name","view_path_group","commonFields","view_url_query","action_id","action_ids","view_in_foreground","display","session_has_replay","is_login","page_states","session_sample_rate","session_replay_sample_rate","drift","dataMap","view","type","VIEW","tags","view_loading_type","view_apdex_level","view_privacy_replay_level","fields","sampled_for_replay","is_active","session_replay_stats","session_is_active","view_error_count","view_resource_count","view_long_task_count","view_action_count","first_contentful_paint","largest_contentful_paint","largest_contentful_paint_element_selector","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","first_input_delay","loading_time","dom_interactive","dom_content_loaded","dom_complete","load_event","first_input_time","first_input_target_selector","first_paint_time","interaction_to_next_paint","interaction_to_next_paint_target_selector","resource_load_time","time_to_interactive","dom","dom_ready","time_spent","first_byte","frustration_count","custom_timings","resource","RESOURCE","trace_id","span_id","resource_id","resource_url","resource_url_host","resource_url_path","resource_url_path_group","resource_url_query","resource_type","resource_status","resource_status_group","resource_method","duration","resource_size","resource_encode_size","resource_decode_size","resource_transfer_size","resource_render_blocking_status","resource_dns","resource_tcp","resource_ssl","resource_ttfb","resource_trans","resource_redirect","resource_first_byte","resource_dns_time","resource_download_time","resource_first_byte_time","resource_connect_time","resource_ssl_time","resource_redirect_time","error","ERROR","error_id","error_source","error_type","error_handling","error_message","error_stack","error_causes","error_handling_stack","long_task","LONG_TASK","long_task_id","blocking_duration","first_ui_event_timestamp","render_start","style_and_layout_start","long_task_start_time","scripts","action","ACTION","action_type","action_name","action_error_count","action_resource_count","action_frustration_types","action_long_task_count","action_target","action_position","telemetry","status","message","error_kind","browser_log","LOGGER","error_resource_url","error_resource_url_host","error_resource_url_path","error_resource_url_path_group","error_resource_status","error_resource_status_group","error_resource_method"],"sources":["../src/dataMap.js"],"sourcesContent":["import { RumEventType } from './helper/enums'\nexport var commonTags = {\n sdk_name: '_gc.sdk_name',\n sdk_version: '_gc.sdk_version',\n app_id: 'application.id',\n env: 'env',\n service: 'service',\n version: 'version',\n source: 'source',\n userid: 'user.id',\n user_email: 'user.email',\n user_name: 'user.name',\n session_id: 'session.id',\n session_type: 'session.type',\n session_sampling: 'session.is_sampling',\n is_signin: 'user.is_signin',\n os: 'device.os',\n os_version: 'device.os_version',\n os_version_major: 'device.os_version_major',\n browser: 'device.browser',\n browser_version: 'device.browser_version',\n browser_version_major: 'device.browser_version_major',\n screen_size: 'device.screen_size',\n network_type: 'device.network_type',\n device: 'device.device',\n view_id: 'view.id',\n view_referrer: 'view.referrer',\n view_url: 'view.url',\n view_host: 'view.host',\n view_path: 'view.path',\n view_name: 'view.path', // 冗余一个字段\n view_path_group: 'view.path_group'\n}\nexport var commonFields = {\n view_url_query: 'view.url_query',\n action_id: 'action.id',\n action_ids: 'action.ids',\n view_in_foreground: 'view.in_foreground',\n display: 'display',\n session_has_replay: 'session.has_replay',\n is_login: 'user.is_login',\n page_states: '_gc.page_states',\n session_sample_rate: '_gc.configuration.session_sample_rate',\n session_replay_sample_rate: '_gc.configuration.session_replay_sample_rate',\n drift: '_gc.drift'\n}\n// 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]\nexport var dataMap = {\n view: {\n type: RumEventType.VIEW,\n tags: {\n view_loading_type: 'view.loading_type',\n view_apdex_level: 'view.apdex_level',\n view_privacy_replay_level: 'privacy.replay_level'\n },\n fields: {\n sampled_for_replay: 'session.sampled_for_replay',\n is_active: 'view.is_active',\n session_replay_stats: '_gc.replay_stats',\n session_is_active: 'session.is_active',\n view_error_count: 'view.error.count',\n view_resource_count: 'view.resource.count',\n view_long_task_count: 'view.long_task.count',\n view_action_count: 'view.action.count',\n first_contentful_paint: 'view.first_contentful_paint',\n largest_contentful_paint: 'view.largest_contentful_paint',\n largest_contentful_paint_element_selector:\n 'view.largest_contentful_paint_element_selector',\n cumulative_layout_shift: 'view.cumulative_layout_shift',\n cumulative_layout_shift_time: 'view.cumulative_layout_shift_time',\n cumulative_layout_shift_target_selector:\n 'view.cumulative_layout_shift_target_selector',\n first_input_delay: 'view.first_input_delay',\n loading_time: 'view.loading_time',\n dom_interactive: 'view.dom_interactive',\n dom_content_loaded: 'view.dom_content_loaded',\n dom_complete: 'view.dom_complete',\n load_event: 'view.load_event',\n first_input_time: 'view.first_input_time',\n first_input_target_selector: 'view.first_input_target_selector',\n first_paint_time: 'view.fpt',\n interaction_to_next_paint: 'view.interaction_to_next_paint',\n interaction_to_next_paint_target_selector:\n 'view.interaction_to_next_paint_target_selector',\n resource_load_time: 'view.resource_load_time',\n time_to_interactive: 'view.tti',\n dom: 'view.dom',\n dom_ready: 'view.dom_ready',\n time_spent: 'view.time_spent',\n first_byte: 'view.first_byte',\n frustration_count: 'view.frustration.count',\n custom_timings: 'view.custom_timings'\n }\n },\n resource: {\n type: RumEventType.RESOURCE,\n tags: {\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n resource_id: 'resource.id',\n resource_url: 'resource.url',\n resource_url_host: 'resource.url_host',\n resource_url_path: 'resource.url_path',\n resource_url_path_group: 'resource.url_path_group',\n resource_url_query: 'resource.url_query',\n resource_type: 'resource.type',\n resource_status: 'resource.status',\n resource_status_group: 'resource.status_group',\n resource_method: 'resource.method'\n },\n fields: {\n duration: 'resource.duration',\n resource_size: 'resource.size',\n resource_encode_size: 'resource.encoded_body_size',\n resource_decode_size: 'resource.decoded_body_size',\n resource_transfer_size: 'resource.transfer_size',\n resource_render_blocking_status: 'resource.render_blocking_status',\n resource_dns: 'resource.dns',\n resource_tcp: 'resource.tcp',\n resource_ssl: 'resource.ssl',\n resource_ttfb: 'resource.ttfb',\n resource_trans: 'resource.trans',\n resource_redirect: 'resource.redirect',\n resource_first_byte: 'resource.firstbyte',\n resource_dns_time: 'resource.dns_time',\n resource_download_time: 'resource.download_time',\n resource_first_byte_time: 'resource.first_byte_time',\n resource_connect_time: 'resource.connect_time',\n resource_ssl_time: 'resource.ssl_time',\n resource_redirect_time: 'resource.redirect_time'\n }\n },\n error: {\n type: RumEventType.ERROR,\n tags: {\n error_id: 'error.id',\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n error_source: 'error.source',\n error_type: 'error.type',\n error_handling: 'error.handling'\n // resource_url: 'error.resource.url',\n // resource_url_host: 'error.resource.url_host',\n // resource_url_path: 'error.resource.url_path',\n // resource_url_path_group: 'error.resource.url_path_group',\n // resource_status: 'error.resource.status',\n // resource_status_group: 'error.resource.status_group',\n // resource_method: 'error.resource.method'\n },\n fields: {\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack'],\n error_causes: ['string', 'error.causes'],\n error_handling_stack: ['string', 'error.handling_stack']\n }\n },\n long_task: {\n type: RumEventType.LONG_TASK,\n tags: {\n long_task_id: 'long_task.id'\n },\n fields: {\n duration: 'long_task.duration',\n blocking_duration: 'long_task.blocking_duration',\n first_ui_event_timestamp: 'long_task.first_ui_event_timestamp',\n render_start: 'long_task.render_start',\n style_and_layout_start: 'long_task.style_and_layout_start',\n long_task_start_time: 'long_task.start_time',\n scripts: ['string', 'long_task.scripts']\n }\n },\n action: {\n type: RumEventType.ACTION,\n tags: {\n action_type: 'action.type'\n },\n fields: {\n action_name: 'action.target.name',\n duration: 'action.loading_time',\n action_error_count: 'action.error.count',\n action_resource_count: 'action.resource.count',\n action_frustration_types: 'action.frustration.type',\n action_long_task_count: 'action.long_task.count',\n action_target: '_gc.action.target',\n action_position: '_gc.action.position'\n }\n },\n telemetry: {\n type: 'telemetry',\n fields: {\n status: 'telemetry.status',\n message: ['string', 'telemetry.message'],\n type: 'telemetry.type',\n error_stack: ['string', 'telemetry.error.stack'],\n error_kind: ['string', 'telemetry.error.kind']\n }\n },\n browser_log: {\n type: RumEventType.LOGGER,\n tags: {\n error_source: 'error.source',\n error_type: 'error.type',\n error_resource_url: 'http.url',\n error_resource_url_host: 'http.url_host',\n error_resource_url_path: 'http.url_path',\n error_resource_url_path_group: 'http.url_path_group',\n error_resource_status: 'http.status_code',\n error_resource_status_group: 'http.status_group',\n error_resource_method: 'http.method',\n action_id: 'user_action.id',\n service: 'service',\n status: 'status'\n },\n fields: {\n message: ['string', 'message'],\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack']\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dataMap.js","names":["RumEventType","commonTags","sdk_name","sdk_version","app_id","env","service","version","source","userid","user_email","user_name","session_id","session_type","session_sampling","is_signin","os","os_version","os_version_major","browser","browser_version","browser_version_major","screen_size","network_type","device","view_id","view_referrer","view_url","view_host","view_path","view_name","view_path_group","commonFields","view_url_query","action_id","action_ids","view_in_foreground","display","session_has_replay","is_login","page_states","session_sample_rate","session_replay_sample_rate","drift","dataMap","view","type","VIEW","tags","view_loading_type","view_apdex_level","view_privacy_replay_level","fields","sampled_for_replay","is_active","session_replay_stats","session_is_active","view_error_count","view_resource_count","view_long_task_count","view_action_count","first_contentful_paint","largest_contentful_paint","largest_contentful_paint_element_selector","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","first_input_delay","loading_time","dom_interactive","dom_content_loaded","dom_complete","load_event","first_input_time","first_input_target_selector","first_paint_time","interaction_to_next_paint","interaction_to_next_paint_target_selector","resource_load_time","time_to_interactive","dom","dom_ready","time_spent","first_byte","frustration_count","custom_timings","resource","RESOURCE","trace_id","span_id","resource_id","resource_status","resource_status_group","resource_method","duration","resource_size","resource_url","resource_url_host","resource_url_path","resource_url_path_group","resource_url_query","resource_delivery_type","resource_type","resource_protocol","resource_encode_size","resource_decode_size","resource_transfer_size","resource_render_blocking_status","resource_dns","resource_tcp","resource_ssl","resource_ttfb","resource_trans","resource_redirect","resource_first_byte","resource_dns_time","resource_download_time","resource_first_byte_time","resource_connect_time","resource_ssl_time","resource_redirect_time","error","ERROR","error_id","error_source","error_type","error_handling","error_message","error_stack","error_causes","error_handling_stack","long_task","LONG_TASK","long_task_id","blocking_duration","first_ui_event_timestamp","render_start","style_and_layout_start","long_task_start_time","scripts","action","ACTION","action_type","action_name","action_error_count","action_resource_count","action_frustration_types","action_long_task_count","action_target","action_position","telemetry","status","message","error_kind","connectivity","runtime_env","usage","configuration","browser_log","LOGGER","error_resource_url","error_resource_url_host","error_resource_url_path","error_resource_url_path_group","error_resource_status","error_resource_status_group","error_resource_method"],"sources":["../src/dataMap.js"],"sourcesContent":["import { RumEventType } from './helper/enums'\nexport var commonTags = {\n sdk_name: '_gc.sdk_name',\n sdk_version: '_gc.sdk_version',\n app_id: 'application.id',\n env: 'env',\n service: 'service',\n version: 'version',\n source: 'source',\n userid: 'user.id',\n user_email: 'user.email',\n user_name: 'user.name',\n session_id: 'session.id',\n session_type: 'session.type',\n session_sampling: 'session.is_sampling',\n is_signin: 'user.is_signin',\n os: 'device.os',\n os_version: 'device.os_version',\n os_version_major: 'device.os_version_major',\n browser: 'device.browser',\n browser_version: 'device.browser_version',\n browser_version_major: 'device.browser_version_major',\n screen_size: 'device.screen_size',\n network_type: 'device.network_type',\n device: 'device.device',\n view_id: 'view.id',\n view_referrer: 'view.referrer',\n view_url: 'view.url',\n view_host: 'view.host',\n view_path: 'view.path',\n view_name: 'view.path', // 冗余一个字段\n view_path_group: 'view.path_group'\n}\nexport var commonFields = {\n view_url_query: 'view.url_query',\n action_id: 'action.id',\n action_ids: 'action.ids',\n view_in_foreground: 'view.in_foreground',\n display: 'display',\n session_has_replay: 'session.has_replay',\n is_login: 'user.is_login',\n page_states: '_gc.page_states',\n session_sample_rate: '_gc.configuration.session_sample_rate',\n session_replay_sample_rate: '_gc.configuration.session_replay_sample_rate',\n drift: '_gc.drift'\n}\n// 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]\nexport var dataMap = {\n view: {\n type: RumEventType.VIEW,\n tags: {\n view_loading_type: 'view.loading_type',\n view_apdex_level: 'view.apdex_level',\n view_privacy_replay_level: 'privacy.replay_level'\n },\n fields: {\n sampled_for_replay: 'session.sampled_for_replay',\n is_active: 'view.is_active',\n session_replay_stats: '_gc.replay_stats',\n session_is_active: 'session.is_active',\n view_error_count: 'view.error.count',\n view_resource_count: 'view.resource.count',\n view_long_task_count: 'view.long_task.count',\n view_action_count: 'view.action.count',\n first_contentful_paint: 'view.first_contentful_paint',\n largest_contentful_paint: 'view.largest_contentful_paint',\n largest_contentful_paint_element_selector:\n 'view.largest_contentful_paint_element_selector',\n cumulative_layout_shift: 'view.cumulative_layout_shift',\n cumulative_layout_shift_time: 'view.cumulative_layout_shift_time',\n cumulative_layout_shift_target_selector:\n 'view.cumulative_layout_shift_target_selector',\n first_input_delay: 'view.first_input_delay',\n loading_time: 'view.loading_time',\n dom_interactive: 'view.dom_interactive',\n dom_content_loaded: 'view.dom_content_loaded',\n dom_complete: 'view.dom_complete',\n load_event: 'view.load_event',\n first_input_time: 'view.first_input_time',\n first_input_target_selector: 'view.first_input_target_selector',\n first_paint_time: 'view.fpt',\n interaction_to_next_paint: 'view.interaction_to_next_paint',\n interaction_to_next_paint_target_selector:\n 'view.interaction_to_next_paint_target_selector',\n resource_load_time: 'view.resource_load_time',\n time_to_interactive: 'view.tti',\n dom: 'view.dom',\n dom_ready: 'view.dom_ready',\n time_spent: 'view.time_spent',\n first_byte: 'view.first_byte',\n frustration_count: 'view.frustration.count',\n custom_timings: 'view.custom_timings'\n }\n },\n resource: {\n type: RumEventType.RESOURCE,\n tags: {\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n resource_id: 'resource.id',\n resource_status: 'resource.status',\n resource_status_group: 'resource.status_group',\n resource_method: 'resource.method'\n },\n fields: {\n duration: 'resource.duration',\n resource_size: 'resource.size',\n resource_url: 'resource.url',\n resource_url_host: 'resource.url_host',\n resource_url_path: 'resource.url_path',\n resource_url_path_group: 'resource.url_path_group',\n resource_url_query: 'resource.url_query',\n resource_delivery_type: 'resource.delivery_type',\n resource_type: 'resource.type',\n resource_protocol: 'resource.protocol',\n resource_encode_size: 'resource.encoded_body_size',\n resource_decode_size: 'resource.decoded_body_size',\n resource_transfer_size: 'resource.transfer_size',\n resource_render_blocking_status: 'resource.render_blocking_status',\n resource_dns: 'resource.dns',\n resource_tcp: 'resource.tcp',\n resource_ssl: 'resource.ssl',\n resource_ttfb: 'resource.ttfb',\n resource_trans: 'resource.trans',\n resource_redirect: 'resource.redirect',\n resource_first_byte: 'resource.firstbyte',\n resource_dns_time: 'resource.dns_time',\n resource_download_time: 'resource.download_time',\n resource_first_byte_time: 'resource.first_byte_time',\n resource_connect_time: 'resource.connect_time',\n resource_ssl_time: 'resource.ssl_time',\n resource_redirect_time: 'resource.redirect_time'\n }\n },\n error: {\n type: RumEventType.ERROR,\n tags: {\n error_id: 'error.id',\n trace_id: '_gc.trace_id',\n span_id: '_gc.span_id',\n error_source: 'error.source',\n error_type: 'error.type',\n error_handling: 'error.handling'\n // resource_url: 'error.resource.url',\n // resource_url_host: 'error.resource.url_host',\n // resource_url_path: 'error.resource.url_path',\n // resource_url_path_group: 'error.resource.url_path_group',\n // resource_status: 'error.resource.status',\n // resource_status_group: 'error.resource.status_group',\n // resource_method: 'error.resource.method'\n },\n fields: {\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack'],\n error_causes: ['string', 'error.causes'],\n error_handling_stack: ['string', 'error.handling_stack']\n }\n },\n long_task: {\n type: RumEventType.LONG_TASK,\n tags: {\n long_task_id: 'long_task.id'\n },\n fields: {\n duration: 'long_task.duration',\n blocking_duration: 'long_task.blocking_duration',\n first_ui_event_timestamp: 'long_task.first_ui_event_timestamp',\n render_start: 'long_task.render_start',\n style_and_layout_start: 'long_task.style_and_layout_start',\n long_task_start_time: 'long_task.start_time',\n scripts: ['string', 'long_task.scripts']\n }\n },\n action: {\n type: RumEventType.ACTION,\n tags: {\n action_type: 'action.type'\n },\n fields: {\n action_name: 'action.target.name',\n duration: 'action.loading_time',\n action_error_count: 'action.error.count',\n action_resource_count: 'action.resource.count',\n action_frustration_types: 'action.frustration.type',\n action_long_task_count: 'action.long_task.count',\n action_target: '_gc.action.target',\n action_position: '_gc.action.position'\n }\n },\n telemetry: {\n type: 'telemetry',\n fields: {\n status: 'telemetry.status',\n message: ['string', 'telemetry.message'],\n type: 'telemetry.type',\n error_stack: ['string', 'telemetry.error.stack'],\n error_kind: ['string', 'telemetry.error.kind'],\n connectivity: ['string', 'telemetry.connectivity'],\n runtime_env: ['string', 'telemetry.runtime_env'],\n usage: ['string', 'telemetry.usage'],\n configuration: ['string', 'telemetry.configuration']\n }\n },\n browser_log: {\n type: RumEventType.LOGGER,\n tags: {\n error_source: 'error.source',\n error_type: 'error.type',\n error_resource_url: 'http.url',\n error_resource_url_host: 'http.url_host',\n error_resource_url_path: 'http.url_path',\n error_resource_url_path_group: 'http.url_path_group',\n error_resource_status: 'http.status_code',\n error_resource_status_group: 'http.status_group',\n error_resource_method: 'http.method',\n action_id: 'user_action.id',\n service: 'service',\n status: 'status'\n },\n fields: {\n message: ['string', 'message'],\n error_message: ['string', 'error.message'],\n error_stack: ['string', 'error.stack']\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -168,11 +168,11 @@ function sanitizeObjects(value) {
168
168
  try {
169
169
  // Handle events - Keep a simple implementation to avoid breaking changes
170
170
  if (value instanceof Event) {
171
- return {
172
- isTrusted: value.isTrusted
173
- };
171
+ return sanitizeEvent(value);
172
+ }
173
+ if (value instanceof RegExp) {
174
+ return "[RegExp] ".concat(value.toString());
174
175
  }
175
-
176
176
  // Handle all remaining object types in a generic way
177
177
  var result = Object.prototype.toString.call(value);
178
178
  var match = result.match(/\[object (.*)\]/);
@@ -185,7 +185,14 @@ function sanitizeObjects(value) {
185
185
  }
186
186
  return '[Unserializable]';
187
187
  }
188
-
188
+ function sanitizeEvent(event) {
189
+ return {
190
+ type: event.type,
191
+ isTrusted: event.isTrusted,
192
+ currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,
193
+ target: event.target ? sanitizeObjects(event.target) : null
194
+ };
195
+ }
189
196
  /**
190
197
  * Checks if a toJSON function exists and tries to execute it
191
198
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","names":["display","ONE_KIBI_BYTE","detachToJsonMethod","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","source","maxCharacterCount","undefined","restoreObjectPrototypeToJson","Object","prototype","restoreArrayPrototypeToJson","Array","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","JSON","stringify","length","warnOverCharacterLimit","containerToProcess","shift","separatorLength","isArray","key","targetData","path","target","hasOwnProperty","call","parentPath","queue","sourceToSanitize","tryToApplyToJSON","_typeof","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","has","get","currentPath","set","push","value","toString","name","description","Event","isTrusted","result","match","_unused","object","toJSON","_unused2","changeType","warn"],"sources":["../../src/helper/sanitize.js"],"sourcesContent":["import { display } from './display'\nimport { ONE_KIBI_BYTE } from './byteUtils'\nimport { detachToJsonMethod } from './serialisation/jsonStringify'\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\n\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === undefined) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = []\n var visitedObjectsWithPath = new WeakMap()\n var sanitizedData = sanitizeProcessor(\n source,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n var accumulatedCharacterCount =\n (JSON.stringify(sanitizedData) && JSON.stringify(sanitizedData).length) || 0\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (\n containerQueue.length > 0 &&\n accumulatedCharacterCount < maxCharacterCount\n ) {\n var containerToProcess = containerQueue.shift()\n var separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n } else {\n for (var key in containerToProcess.source) {\n if (\n Object.prototype.hasOwnProperty.call(containerToProcess.source, key)\n ) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length +\n separatorLength +\n key.length +\n KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source,\n parentPath,\n key,\n queue,\n visitedObjectsWithPath\n) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n var sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (\n sanitizedSource !== '[Object]' &&\n sanitizedSource !== '[Array]' &&\n sanitizedSource !== '[Error]'\n ) {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return (\n '[Reference seen at ' + visitedObjectsWithPath.get(sourceAsObject) + ']'\n )\n }\n\n // Add processed source to queue\n var currentPath = key !== undefined ? parentPath + '.' + key : parentPath\n var target = Array.isArray(sourceToSanitize) ? [] : {}\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return '[BigInt] ' + value.toString()\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return '[Function] ' + value.name || 'unknown'\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n return '[Symbol] ' + value.description || value.toString()\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted\n }\n }\n\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value)\n var match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return '[' + match[1] + ']'\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\n\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON()\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\n 'The data provided has been ' +\n changeType +\n ' as it is over the limit of ' +\n maxCharacterCount +\n ' characters:',\n source\n )\n}\n"],"mappings":";AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,kBAAkB,QAAQ,+BAA+B;;AAElE;AACA;AACA,IAAIC,oCAAoC,GAAG,GAAG,GAAGF,aAAa;;AAE9D;AACA,IAAIG,sBAAsB,GAAG,GAAG;;AAEhC;AACA;AACA,IAAIC,qBAAqB,GAAG,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,QAAQA,CAACC,MAAM,EAAEC,iBAAiB,EAAE;EAClD,IAAIA,iBAAiB,KAAKC,SAAS,EAAE;IACnCD,iBAAiB,GAAGL,oCAAoC;EAC1D;EACA;EACA,IAAIO,4BAA4B,GAAGR,kBAAkB,CAACS,MAAM,CAACC,SAAS,CAAC;EACvE,IAAIC,2BAA2B,GAAGX,kBAAkB,CAACY,KAAK,CAACF,SAAS,CAAC;;EAErE;EACA,IAAIG,cAAc,GAAG,EAAE;EACvB,IAAIC,sBAAsB,GAAG,IAAIC,OAAO,CAAC,CAAC;EAC1C,IAAIC,aAAa,GAAGC,iBAAiB,CACnCZ,MAAM,EACNH,sBAAsB,EACtBK,SAAS,EACTM,cAAc,EACdC,sBACF,CAAC;EACD,IAAII,yBAAyB,GAC1BC,IAAI,CAACC,SAAS,CAACJ,aAAa,CAAC,IAAIG,IAAI,CAACC,SAAS,CAACJ,aAAa,CAAC,CAACK,MAAM,IAAK,CAAC;EAC9E,IAAIH,yBAAyB,GAAGZ,iBAAiB,EAAE;IACjDgB,sBAAsB,CAAChB,iBAAiB,EAAE,WAAW,EAAED,MAAM,CAAC;IAC9D,OAAOE,SAAS;EAClB;EAEA,OACEM,cAAc,CAACQ,MAAM,GAAG,CAAC,IACzBH,yBAAyB,GAAGZ,iBAAiB,EAC7C;IACA,IAAIiB,kBAAkB,GAAGV,cAAc,CAACW,KAAK,CAAC,CAAC;IAC/C,IAAIC,eAAe,GAAG,CAAC,EAAC;;IAExB;IACA;IACA,IAAIb,KAAK,CAACc,OAAO,CAACH,kBAAkB,CAAClB,MAAM,CAAC,EAAE;MAC5C,KAAK,IAAIsB,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGJ,kBAAkB,CAAClB,MAAM,CAACgB,MAAM,EAAEM,GAAG,EAAE,EAAE;QAC/D,IAAIC,UAAU,GAAGX,iBAAiB,CAChCM,kBAAkB,CAAClB,MAAM,CAACsB,GAAG,CAAC,EAC9BJ,kBAAkB,CAACM,IAAI,EACvBF,GAAG,EACHd,cAAc,EACdC,sBACF,CAAC;QAED,IAAIc,UAAU,KAAKrB,SAAS,EAAE;UAC5BW,yBAAyB,IAAIC,IAAI,CAACC,SAAS,CAACQ,UAAU,CAAC,CAACP,MAAM;QAChE,CAAC,MAAM;UACL;UACA;UACAH,yBAAyB,IAAI,CAAC;QAChC;QACAA,yBAAyB,IAAIO,eAAe;QAC5CA,eAAe,GAAG,CAAC;QACnB,IAAIP,yBAAyB,GAAGZ,iBAAiB,EAAE;UACjDgB,sBAAsB,CAAChB,iBAAiB,EAAE,WAAW,EAAED,MAAM,CAAC;UAC9D;QACF;QACAkB,kBAAkB,CAACO,MAAM,CAACH,GAAG,CAAC,GAAGC,UAAU;MAC7C;IACF,CAAC,MAAM;MACL,KAAK,IAAID,GAAG,IAAIJ,kBAAkB,CAAClB,MAAM,EAAE;QACzC,IACEI,MAAM,CAACC,SAAS,CAACqB,cAAc,CAACC,IAAI,CAACT,kBAAkB,CAAClB,MAAM,EAAEsB,GAAG,CAAC,EACpE;UACA,IAAIC,UAAU,GAAGX,iBAAiB,CAChCM,kBAAkB,CAAClB,MAAM,CAACsB,GAAG,CAAC,EAC9BJ,kBAAkB,CAACM,IAAI,EACvBF,GAAG,EACHd,cAAc,EACdC,sBACF,CAAC;UACD;UACA;UACA,IAAIc,UAAU,KAAKrB,SAAS,EAAE;YAC5BW,yBAAyB,IACvBC,IAAI,CAACC,SAAS,CAACQ,UAAU,CAAC,CAACP,MAAM,GACjCI,eAAe,GACfE,GAAG,CAACN,MAAM,GACVlB,qBAAqB;YACvBsB,eAAe,GAAG,CAAC;UACrB;UACA,IAAIP,yBAAyB,GAAGZ,iBAAiB,EAAE;YACjDgB,sBAAsB,CAAChB,iBAAiB,EAAE,WAAW,EAAED,MAAM,CAAC;YAC9D;UACF;UACAkB,kBAAkB,CAACO,MAAM,CAACH,GAAG,CAAC,GAAGC,UAAU;QAC7C;MACF;IACF;EACF;;EAEA;EACApB,4BAA4B,CAAC,CAAC;EAC9BG,2BAA2B,CAAC,CAAC;EAE7B,OAAOK,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CACxBZ,MAAM,EACN4B,UAAU,EACVN,GAAG,EACHO,KAAK,EACLpB,sBAAsB,EACtB;EACA;EACA,IAAIqB,gBAAgB,GAAGC,gBAAgB,CAAC/B,MAAM,CAAC;EAE/C,IAAI,CAAC8B,gBAAgB,IAAIE,OAAA,CAAOF,gBAAgB,MAAK,QAAQ,EAAE;IAC7D,OAAOG,8BAA8B,CAACH,gBAAgB,CAAC;EACzD;EAEA,IAAII,eAAe,GAAGC,eAAe,CAACL,gBAAgB,CAAC;EACvD,IACEI,eAAe,KAAK,UAAU,IAC9BA,eAAe,KAAK,SAAS,IAC7BA,eAAe,KAAK,SAAS,EAC7B;IACA,OAAOA,eAAe;EACxB;;EAEA;EACA;EACA;EACA,IAAIE,cAAc,GAAGpC,MAAM;EAC3B,IAAIS,sBAAsB,CAAC4B,GAAG,CAACD,cAAc,CAAC,EAAE;IAC9C,OACE,qBAAqB,GAAG3B,sBAAsB,CAAC6B,GAAG,CAACF,cAAc,CAAC,GAAG,GAAG;EAE5E;;EAEA;EACA,IAAIG,WAAW,GAAGjB,GAAG,KAAKpB,SAAS,GAAG0B,UAAU,GAAG,GAAG,GAAGN,GAAG,GAAGM,UAAU;EACzE,IAAIH,MAAM,GAAGlB,KAAK,CAACc,OAAO,CAACS,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACtDrB,sBAAsB,CAAC+B,GAAG,CAACJ,cAAc,EAAEG,WAAW,CAAC;EACvDV,KAAK,CAACY,IAAI,CAAC;IAAEzC,MAAM,EAAE8B,gBAAgB;IAAEL,MAAM,EAANA,MAAM;IAAED,IAAI,EAAEe;EAAY,CAAC,CAAC;EAEnE,OAAOd,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA,SAASQ,8BAA8BA,CAACS,KAAK,EAAE;EAC7C;EACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,WAAW,GAAGA,KAAK,CAACC,QAAQ,CAAC,CAAC;EACvC;EACA;EACA;EACA,IAAI,OAAOD,KAAK,KAAK,UAAU,EAAE;IAC/B,OAAO,aAAa,GAAGA,KAAK,CAACE,IAAI,IAAI,SAAS;EAChD;EACA;EACA,IAAIZ,OAAA,CAAOU,KAAK,MAAK,QAAQ,EAAE;IAC7B;IACA,OAAO,WAAW,GAAGA,KAAK,CAACG,WAAW,IAAIH,KAAK,CAACC,QAAQ,CAAC,CAAC;EAC5D;EAEA,OAAOD,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASP,eAAeA,CAACO,KAAK,EAAE;EAC9B,IAAI;IACF;IACA,IAAIA,KAAK,YAAYI,KAAK,EAAE;MAC1B,OAAO;QACLC,SAAS,EAAEL,KAAK,CAACK;MACnB,CAAC;IACH;;IAEA;IACA,IAAIC,MAAM,GAAG5C,MAAM,CAACC,SAAS,CAACsC,QAAQ,CAAChB,IAAI,CAACe,KAAK,CAAC;IAClD,IAAIO,KAAK,GAAGD,MAAM,CAACC,KAAK,CAAC,iBAAiB,CAAC;IAC3C,IAAIA,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,EAAE;MACrB,OAAO,GAAG,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;IAC7B;EACF,CAAC,CAAC,OAAAC,OAAA,EAAM;IACN;IACA;EAAA;EAEF,OAAO,kBAAkB;AAC3B;;AAEA;AACA;AACA;AACA;AACA,SAASnB,gBAAgBA,CAACW,KAAK,EAAE;EAC/B,IAAIS,MAAM,GAAGT,KAAK;EAClB,IAAIS,MAAM,IAAI,OAAOA,MAAM,CAACC,MAAM,KAAK,UAAU,EAAE;IACjD,IAAI;MACF,OAAOD,MAAM,CAACC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,OAAAC,QAAA,EAAM;MACN;IAAA;EAEJ;EAEA,OAAOX,KAAK;AACd;;AAEA;AACA;AACA;AACA,SAASzB,sBAAsBA,CAAChB,iBAAiB,EAAEqD,UAAU,EAAEtD,MAAM,EAAE;EACrEP,OAAO,CAAC8D,IAAI,CACV,6BAA6B,GAC3BD,UAAU,GACV,8BAA8B,GAC9BrD,iBAAiB,GACjB,cAAc,EAChBD,MACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"sanitize.js","names":["display","ONE_KIBI_BYTE","detachToJsonMethod","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","source","maxCharacterCount","undefined","restoreObjectPrototypeToJson","Object","prototype","restoreArrayPrototypeToJson","Array","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","JSON","stringify","length","warnOverCharacterLimit","containerToProcess","shift","separatorLength","isArray","key","targetData","path","target","hasOwnProperty","call","parentPath","queue","sourceToSanitize","tryToApplyToJSON","_typeof","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","has","get","currentPath","set","push","value","toString","name","description","Event","sanitizeEvent","RegExp","concat","result","match","_unused","event","type","isTrusted","currentTarget","object","toJSON","_unused2","changeType","warn"],"sources":["../../src/helper/sanitize.js"],"sourcesContent":["import { display } from './display'\nimport { ONE_KIBI_BYTE } from './byteUtils'\nimport { detachToJsonMethod } from './serialisation/jsonStringify'\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\n\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === undefined) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = []\n var visitedObjectsWithPath = new WeakMap()\n var sanitizedData = sanitizeProcessor(\n source,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n var accumulatedCharacterCount =\n (JSON.stringify(sanitizedData) && JSON.stringify(sanitizedData).length) || 0\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (\n containerQueue.length > 0 &&\n accumulatedCharacterCount < maxCharacterCount\n ) {\n var containerToProcess = containerQueue.shift()\n var separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n } else {\n for (var key in containerToProcess.source) {\n if (\n Object.prototype.hasOwnProperty.call(containerToProcess.source, key)\n ) {\n var targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length +\n separatorLength +\n key.length +\n KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n containerToProcess.target[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source,\n parentPath,\n key,\n queue,\n visitedObjectsWithPath\n) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n var sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (\n sanitizedSource !== '[Object]' &&\n sanitizedSource !== '[Array]' &&\n sanitizedSource !== '[Error]'\n ) {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return (\n '[Reference seen at ' + visitedObjectsWithPath.get(sourceAsObject) + ']'\n )\n }\n\n // Add processed source to queue\n var currentPath = key !== undefined ? parentPath + '.' + key : parentPath\n var target = Array.isArray(sourceToSanitize) ? [] : {}\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return '[BigInt] ' + value.toString()\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return '[Function] ' + value.name || 'unknown'\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n return '[Symbol] ' + value.description || value.toString()\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return sanitizeEvent(value)\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value)\n var match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return '[' + match[1] + ']'\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget\n ? sanitizeObjects(event.currentTarget)\n : null,\n target: event.target ? sanitizeObjects(event.target) : null\n }\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON()\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\n 'The data provided has been ' +\n changeType +\n ' as it is over the limit of ' +\n maxCharacterCount +\n ' characters:',\n source\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"taskQueue.js","names":["ONE_SECOND","requestIdleCallback","IDLE_CALLBACK_TIMEOUT","MAX_EXECUTION_TIME_ON_TIMEOUT","createTaskQueue","pendingTasks","run","deadline","executionTimeRemaining","didTimeout","start","performance","now","timeRemaining","bind","length","shift","scheduleNextRun","timeout","push","task"],"sources":["../../src/helper/taskQueue.js"],"sourcesContent":["import { ONE_SECOND } from './tools'\nimport { requestIdleCallback } from './requestIdleCallback'\n\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND\n\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30\n\nexport function createTaskQueue() {\n const pendingTasks = []\n\n function run(deadline) {\n let executionTimeRemaining\n if (deadline.didTimeout) {\n const start = performance.now()\n executionTimeRemaining = function () {\n return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start)\n }\n } else {\n executionTimeRemaining = deadline.timeRemaining.bind(deadline)\n }\n\n while (executionTimeRemaining() > 0 && pendingTasks.length) {\n pendingTasks.shift()()\n }\n\n if (pendingTasks.length) {\n scheduleNextRun()\n }\n }\n\n function scheduleNextRun() {\n requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT })\n }\n\n return {\n push(task) {\n if (pendingTasks.push(task) === 1) {\n scheduleNextRun()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,SAAS;AACpC,SAASC,mBAAmB,QAAQ,uBAAuB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,qBAAqB,GAAGF,UAAU;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,6BAA6B,GAAG,EAAE;AAE/C,OAAO,SAASC,eAAeA,CAAA,EAAG;EAChC,IAAMC,YAAY,GAAG,EAAE;EAEvB,SAASC,GAAGA,CAACC,QAAQ,EAAE;IACrB,IAAIC,sBAAsB;IAC1B,IAAID,QAAQ,CAACE,UAAU,EAAE;MACvB,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BJ,sBAAsB,GAAG,SAAAA,uBAAA,EAAY;QACnC,OAAOL,6BAA6B,IAAIQ,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,CAAC;MACpE,CAAC;IACH,CAAC,MAAM;MACLF,sBAAsB,GAAGD,QAAQ,CAACM,aAAa,CAACC,IAAI,CAACP,QAAQ,CAAC;IAChE;IAEA,OAAOC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAIH,YAAY,CAACU,MAAM,EAAE;MAC1DV,YAAY,CAACW,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB;IAEA,IAAIX,YAAY,CAACU,MAAM,EAAE;MACvBE,eAAe,CAAC,CAAC;IACnB;EACF;EAEA,SAASA,eAAeA,CAAA,EAAG;IACzBhB,mBAAmB,CAACK,GAAG,EAAE;MAAEY,OAAO,EAAEhB;IAAsB,CAAC,CAAC;EAC9D;EAEA,OAAO;IACLiB,IAAI,WAAAA,KAACC,IAAI,EAAE;MACT,IAAIf,YAAY,CAACc,IAAI,CAACC,IAAI,CAAC,KAAK,CAAC,EAAE;QACjCH,eAAe,CAAC,CAAC;MACnB;IACF;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"taskQueue.js","names":["ONE_SECOND","requestIdleCallback","IDLE_CALLBACK_TIMEOUT","MAX_EXECUTION_TIME_ON_TIMEOUT","createTaskQueue","pendingTasks","run","deadline","executionTimeRemaining","didTimeout","start","performance","now","timeRemaining","bind","length","shift","scheduleNextRun","timeout","push","task"],"sources":["../../src/helper/taskQueue.js"],"sourcesContent":["import { ONE_SECOND } from './tools'\nimport { requestIdleCallback } from './requestIdleCallback'\n\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND\n\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30\n\nexport function createTaskQueue() {\n const pendingTasks = []\n\n function run(deadline) {\n let executionTimeRemaining\n if (deadline.didTimeout) {\n const start = performance.now()\n executionTimeRemaining = function () {\n return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start)\n }\n } else {\n executionTimeRemaining = deadline.timeRemaining.bind(deadline)\n }\n\n while (executionTimeRemaining() > 0 && pendingTasks.length) {\n pendingTasks.shift()()\n }\n\n if (pendingTasks.length) {\n scheduleNextRun()\n }\n }\n\n function scheduleNextRun() {\n requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT })\n }\n\n return {\n push: function (task) {\n if (pendingTasks.push(task) === 1) {\n scheduleNextRun()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,SAAS;AACpC,SAASC,mBAAmB,QAAQ,uBAAuB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,qBAAqB,GAAGF,UAAU;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,6BAA6B,GAAG,EAAE;AAE/C,OAAO,SAASC,eAAeA,CAAA,EAAG;EAChC,IAAMC,YAAY,GAAG,EAAE;EAEvB,SAASC,GAAGA,CAACC,QAAQ,EAAE;IACrB,IAAIC,sBAAsB;IAC1B,IAAID,QAAQ,CAACE,UAAU,EAAE;MACvB,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BJ,sBAAsB,GAAG,SAAAA,uBAAA,EAAY;QACnC,OAAOL,6BAA6B,IAAIQ,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,CAAC;MACpE,CAAC;IACH,CAAC,MAAM;MACLF,sBAAsB,GAAGD,QAAQ,CAACM,aAAa,CAACC,IAAI,CAACP,QAAQ,CAAC;IAChE;IAEA,OAAOC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAIH,YAAY,CAACU,MAAM,EAAE;MAC1DV,YAAY,CAACW,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB;IAEA,IAAIX,YAAY,CAACU,MAAM,EAAE;MACvBE,eAAe,CAAC,CAAC;IACnB;EACF;EAEA,SAASA,eAAeA,CAAA,EAAG;IACzBhB,mBAAmB,CAACK,GAAG,EAAE;MAAEY,OAAO,EAAEhB;IAAsB,CAAC,CAAC;EAC9D;EAEA,OAAO;IACLiB,IAAI,EAAE,SAAAA,KAAUC,IAAI,EAAE;MACpB,IAAIf,YAAY,CAACc,IAAI,CAACC,IAAI,CAAC,KAAK,CAAC,EAAE;QACjCH,eAAe,CAAC,CAAC;MACnB;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -8,6 +8,10 @@ var UNKNOWN_FUNCTION = '?';
8
8
  export function computeStackTrace(ex) {
9
9
  var stack = [];
10
10
  var stackProperty = tryToGetString(ex, 'stack');
11
+ var exString = String(ex);
12
+ if (stackProperty && stackProperty.startsWith(exString)) {
13
+ stackProperty = stackProperty.slice(exString.length);
14
+ }
11
15
  if (stackProperty) {
12
16
  each(stackProperty.split('\n'), function (line) {
13
17
  var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
@@ -25,7 +29,7 @@ export function computeStackTrace(ex) {
25
29
  stack: stack
26
30
  };
27
31
  }
28
- var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)';
32
+ var fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)';
29
33
  var filePosition = '(?::(\\d+))';
30
34
  var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\(' + fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i');
31
35
  var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)');
@@ -1 +1 @@
1
- {"version":3,"file":"computeStackTrace.js","names":["each","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","_typeof","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n if (stackProperty) {\n each(stackProperty.split('\\n'), function(line) {\n var stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n }\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp('^\\\\s*at (.*?) ?\\\\('+ fileUrl + filePosition + '?' + filePosition + '?\\\\)?\\\\s*$', 'i')\nvar CHROME_EVAL_RE = new RegExp('\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)')\n\nfunction parseChromeLine(line){\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$', 'i')\n\nfunction parseChromeAnonymousLine(line){\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"computeStackTrace.js","names":["each","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","String","startsWith","slice","length","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","_typeof","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n var exString = String(ex)\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length)\n }\n if (stackProperty) {\n each(stackProperty.split('\\n'), function (line) {\n var stackFrame =\n parseChromeLine(line) ||\n parseChromeAnonymousLine(line) ||\n parseWinLine(line) ||\n parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack\n }\n}\nvar fileUrl =\n '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp(\n '^\\\\s*at (.*?) ?\\\\(' +\n fileUrl +\n filePosition +\n '?' +\n filePosition +\n '?\\\\)?\\\\s*$',\n 'i'\n)\nvar CHROME_EVAL_RE = new RegExp(\n '\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)'\n)\n\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\n '^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$',\n 'i'\n)\n\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1]\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2]\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3]\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "3.2.10",
3
+ "version": "3.2.13",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -22,5 +22,5 @@
22
22
  "author": "dataflux",
23
23
  "license": "MIT",
24
24
  "description": "DataFlux RUM Web 端数据指标监控",
25
- "gitHead": "bf02e9daec7028306ea44cb52b17426fd7b82e05"
25
+ "gitHead": "495ab0c29f4a869e9ad76d8fa2622dd924f3d90d"
26
26
  }
package/src/dataMap.js CHANGED
@@ -98,12 +98,6 @@ export var dataMap = {
98
98
  trace_id: '_gc.trace_id',
99
99
  span_id: '_gc.span_id',
100
100
  resource_id: 'resource.id',
101
- resource_url: 'resource.url',
102
- resource_url_host: 'resource.url_host',
103
- resource_url_path: 'resource.url_path',
104
- resource_url_path_group: 'resource.url_path_group',
105
- resource_url_query: 'resource.url_query',
106
- resource_type: 'resource.type',
107
101
  resource_status: 'resource.status',
108
102
  resource_status_group: 'resource.status_group',
109
103
  resource_method: 'resource.method'
@@ -111,6 +105,14 @@ export var dataMap = {
111
105
  fields: {
112
106
  duration: 'resource.duration',
113
107
  resource_size: 'resource.size',
108
+ resource_url: 'resource.url',
109
+ resource_url_host: 'resource.url_host',
110
+ resource_url_path: 'resource.url_path',
111
+ resource_url_path_group: 'resource.url_path_group',
112
+ resource_url_query: 'resource.url_query',
113
+ resource_delivery_type: 'resource.delivery_type',
114
+ resource_type: 'resource.type',
115
+ resource_protocol: 'resource.protocol',
114
116
  resource_encode_size: 'resource.encoded_body_size',
115
117
  resource_decode_size: 'resource.decoded_body_size',
116
118
  resource_transfer_size: 'resource.transfer_size',
@@ -192,7 +194,11 @@ export var dataMap = {
192
194
  message: ['string', 'telemetry.message'],
193
195
  type: 'telemetry.type',
194
196
  error_stack: ['string', 'telemetry.error.stack'],
195
- error_kind: ['string', 'telemetry.error.kind']
197
+ error_kind: ['string', 'telemetry.error.kind'],
198
+ connectivity: ['string', 'telemetry.connectivity'],
199
+ runtime_env: ['string', 'telemetry.runtime_env'],
200
+ usage: ['string', 'telemetry.usage'],
201
+ configuration: ['string', 'telemetry.configuration']
196
202
  }
197
203
  },
198
204
  browser_log: {
@@ -210,11 +210,11 @@ function sanitizeObjects(value) {
210
210
  try {
211
211
  // Handle events - Keep a simple implementation to avoid breaking changes
212
212
  if (value instanceof Event) {
213
- return {
214
- isTrusted: value.isTrusted
215
- }
213
+ return sanitizeEvent(value)
214
+ }
215
+ if (value instanceof RegExp) {
216
+ return `[RegExp] ${value.toString()}`
216
217
  }
217
-
218
218
  // Handle all remaining object types in a generic way
219
219
  var result = Object.prototype.toString.call(value)
220
220
  var match = result.match(/\[object (.*)\]/)
@@ -227,7 +227,16 @@ function sanitizeObjects(value) {
227
227
  }
228
228
  return '[Unserializable]'
229
229
  }
230
-
230
+ function sanitizeEvent(event) {
231
+ return {
232
+ type: event.type,
233
+ isTrusted: event.isTrusted,
234
+ currentTarget: event.currentTarget
235
+ ? sanitizeObjects(event.currentTarget)
236
+ : null,
237
+ target: event.target ? sanitizeObjects(event.target) : null
238
+ }
239
+ }
231
240
  /**
232
241
  * Checks if a toJSON function exists and tries to execute it
233
242
  *
@@ -46,7 +46,7 @@ export function createTaskQueue() {
46
46
  }
47
47
 
48
48
  return {
49
- push(task) {
49
+ push: function (task) {
50
50
  if (pendingTasks.push(task) === 1) {
51
51
  scheduleNextRun()
52
52
  }
@@ -8,10 +8,17 @@ export function computeStackTrace(ex) {
8
8
  var stack = []
9
9
 
10
10
  var stackProperty = tryToGetString(ex, 'stack')
11
+ var exString = String(ex)
12
+ if (stackProperty && stackProperty.startsWith(exString)) {
13
+ stackProperty = stackProperty.slice(exString.length)
14
+ }
11
15
  if (stackProperty) {
12
- each(stackProperty.split('\n'), function(line) {
16
+ each(stackProperty.split('\n'), function (line) {
13
17
  var stackFrame =
14
- parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)
18
+ parseChromeLine(line) ||
19
+ parseChromeAnonymousLine(line) ||
20
+ parseWinLine(line) ||
21
+ parseGeckoLine(line)
15
22
  if (stackFrame) {
16
23
  if (!stackFrame.func && stackFrame.line) {
17
24
  stackFrame.func = UNKNOWN_FUNCTION
@@ -24,15 +31,26 @@ export function computeStackTrace(ex) {
24
31
  return {
25
32
  message: tryToGetString(ex, 'message'),
26
33
  name: tryToGetString(ex, 'name'),
27
- stack: stack,
34
+ stack: stack
28
35
  }
29
36
  }
30
- var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)'
37
+ var fileUrl =
38
+ '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)'
31
39
  var filePosition = '(?::(\\d+))'
32
- var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\('+ fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i')
33
- var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)')
34
-
35
- function parseChromeLine(line){
40
+ var CHROME_LINE_RE = new RegExp(
41
+ '^\\s*at (.*?) ?\\(' +
42
+ fileUrl +
43
+ filePosition +
44
+ '?' +
45
+ filePosition +
46
+ '?\\)?\\s*$',
47
+ 'i'
48
+ )
49
+ var CHROME_EVAL_RE = new RegExp(
50
+ '\\((\\S*)' + filePosition + filePosition + '\\)'
51
+ )
52
+
53
+ function parseChromeLine(line) {
36
54
  var parts = CHROME_LINE_RE.exec(line)
37
55
 
38
56
  if (!parts) {
@@ -55,13 +73,16 @@ function parseChromeLine(line){
55
73
  column: parts[4] ? +parts[4] : undefined,
56
74
  func: parts[1] || UNKNOWN_FUNCTION,
57
75
  line: parts[3] ? +parts[3] : undefined,
58
- url: !isNative ? parts[2] : undefined,
76
+ url: !isNative ? parts[2] : undefined
59
77
  }
60
78
  }
61
79
 
62
- var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$', 'i')
80
+ var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(
81
+ '^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$',
82
+ 'i'
83
+ )
63
84
 
64
- function parseChromeAnonymousLine(line){
85
+ function parseChromeAnonymousLine(line) {
65
86
  var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)
66
87
 
67
88
  if (!parts) {
@@ -73,7 +94,7 @@ function parseChromeAnonymousLine(line){
73
94
  column: parts[3] ? +parts[3] : undefined,
74
95
  func: UNKNOWN_FUNCTION,
75
96
  line: parts[2] ? +parts[2] : undefined,
76
- url: parts[1],
97
+ url: parts[1]
77
98
  }
78
99
  }
79
100
 
@@ -91,7 +112,7 @@ function parseWinLine(line) {
91
112
  column: parts[4] ? +parts[4] : undefined,
92
113
  func: parts[1] || UNKNOWN_FUNCTION,
93
114
  line: +parts[3],
94
- url: parts[2],
115
+ url: parts[2]
95
116
  }
96
117
  }
97
118
 
@@ -120,7 +141,7 @@ function parseGeckoLine(line) {
120
141
  column: parts[5] ? +parts[5] : undefined,
121
142
  func: parts[1] || UNKNOWN_FUNCTION,
122
143
  line: parts[4] ? +parts[4] : undefined,
123
- url: parts[3],
144
+ url: parts[3]
124
145
  }
125
146
  }
126
147