Skip to content
This repository was archived by the owner on Feb 13, 2024. It is now read-only.

Update loosely-validate-event to 2.0.0 #154

Merged
merged 2 commits into from
Mar 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const assert = require('assert')
const removeSlash = require('remove-trailing-slash')
const validate = require('@segment/loosely-validate-event')
const looselyValidate = require('@segment/loosely-validate-event')
const axios = require('axios')
const axiosRetry = require('axios-retry')
const ms = require('ms')
Expand Down Expand Up @@ -52,6 +52,18 @@ class Analytics {
})
}

_validate (message, type) {
try {
looselyValidate(message, type)
} catch (e) {
if (e.message === 'Your message must be < 32kb.') {
console.log('Your message must be < 32kb. This is currently surfaced as a warning to allow clients to update. Versions released after August 1, 2018 will throw an error instead. Please update your code before then.', message)
return
}
throw e
}
}

/**
* Send an identify `message`.
*
Expand All @@ -61,7 +73,7 @@ class Analytics {
*/

identify (message, callback) {
validate(message, 'identify')
this._validate(message, 'identify')
this.enqueue('identify', message, callback)
return this
}
Expand All @@ -75,7 +87,7 @@ class Analytics {
*/

group (message, callback) {
validate(message, 'group')
this._validate(message, 'group')
this.enqueue('group', message, callback)
return this
}
Expand All @@ -89,7 +101,7 @@ class Analytics {
*/

track (message, callback) {
validate(message, 'track')
this._validate(message, 'track')
this.enqueue('track', message, callback)
return this
}
Expand All @@ -103,7 +115,7 @@ class Analytics {
*/

page (message, callback) {
validate(message, 'page')
this._validate(message, 'page')
this.enqueue('page', message, callback)
return this
}
Expand All @@ -117,7 +129,7 @@ class Analytics {
*/

screen (message, callback) {
validate(message, 'screen')
this._validate(message, 'screen')
this.enqueue('screen', message, callback)
return this
}
Expand All @@ -131,7 +143,7 @@ class Analytics {
*/

alias (message, callback) {
validate(message, 'alias')
this._validate(message, 'alias')
this.enqueue('alias', message, callback)
return this
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"driver"
],
"dependencies": {
"@segment/loosely-validate-event": "^1.1.2",
"@segment/loosely-validate-event": "^2.0.0",
"axios": "^0.17.1",
"axios-retry": "^3.0.1",
"commander": "^2.9.0",
Expand Down
17 changes: 17 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,23 @@ test('isErrorRetryable', t => {
t.false(client._isErrorRetryable({ response: { status: 200 } }))
})

test.only('allows messages > 32kb', t => {
const client = createClient()

const event = {
userId: 1,
event: 'event',
properties: {}
}
for (var i = 0; i < 10000; i++) {
event.properties[i] = 'a'
}

t.notThrows(() => {
client.track(event, noop)
})
})

const { RUN_E2E_TESTS } = process.env

if (RUN_E2E_TESTS) {
Expand Down