Skip to content

Commit a28a330

Browse files
committed
STASH
1 parent f2674a9 commit a28a330

File tree

4 files changed

+147
-6
lines changed

4 files changed

+147
-6
lines changed

packages/types/src/span.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,3 +188,27 @@ export type TraceHeadersObj = {
188188
'sentry-trace': string;
189189
tracestate?: string;
190190
};
191+
192+
// type SentryTraceHeader = ['sentry-trace', string];
193+
// type TracestateHeader = ['tracestate', string];
194+
// export type TraceHeadersArr = [SentryTraceHeader, TracestateHeader?];
195+
// const enum TraceHeaderNames {
196+
// 'sentry-trace' = 'sentry_trace',
197+
// tracestate = 'tracestate',
198+
// }
199+
200+
// type TraceHeaderName = 'sentry-trace' | 'tracestate';
201+
202+
// type TraceHeaders = Array<[TraceHeaderName, string]> | Record<TraceHeaderName, string>;
203+
204+
// const x:SentryTraceHeader = ['hi', 'hi']
205+
// const y:TracestateHeader = [5, 'hi']
206+
// export type TraceHeadersArr = [['sentry-trace', string], ['tracestate', string]?];
207+
// export type TraceHeaders = TraceHeadersArr | TraceHeadersObj;
208+
// const x: TraceHeaders = [['sentry-trace', 'string']];
209+
// const y: TraceHeaders = [
210+
// ['sentry-trace', 'string'],
211+
// ['tracestate', 'string'],
212+
// ];
213+
// y['sentry-trace']
214+
// // const x: TraceHeaders = [['sentry-trace', "string"], ...(true && ['tracestate', "string"])]
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
sample_string = "GeeksForGeeks is the best"
2+
sample_string_bytes = sample_string.encode("ascii")
3+
4+
base64_bytes = base64.b64encode(sample_string_bytes)
5+
base64_string = base64_bytes.decode("ascii")
6+
7+
x = (base64.b64encode(sample_string_bytes)).decode("ascii")
8+
base64_string = (base64.b64encode(sample_string.encode("ascii"))).decode("ascii")
9+
10+
print(sample_string_bytes, base64_bytes, base64_string, x, y)
11+
12+
13+
base64_bytes = base64_string.encode("ascii")
14+
15+
sample_string_bytes = base64.b64decode(base64_bytes)
16+
sample_string = sample_string_bytes.decode("ascii")
17+
18+
z = (base64.b64decode(base64_bytes)).decode("ascii")
19+
base64_string = (base64.b64encode(sample_string.encode("ascii"))).decode("ascii")
20+
sample_string = (base64.b64decode(base64_string.encode("ascii"))).decode("ascii")
21+
22+
print(base64_bytes, sample_string_bytes, sample_string, z, a)
23+
24+
def tob64(orig, encoding):
25+
# print orig.decode(encoding)
26+
# # print orig.encode(encoding)
27+
# print base64.b64encode(orig)
28+
# print base64.b64encode(orig).encode("ascii")
29+
# print base64.b64encode(orig.decode(encoding))
30+
return (base64.b64encode(orig.decode(encoding))).encode("ascii")
31+
32+
def fromb64(b64, encoding):
33+
print b64
34+
# print b64.encode("ascii")
35+
print base64.b64decode(b64)
36+
print base64.b64decode(b64).decode(encoding)
37+
return (base64.b64decode(b64.encode("ascii"))).decode(encoding)
38+
39+
def tester():
40+
ascii_string = "this is a test 123"
41+
base64_string = tob64(ascii_string, "ascii")
42+
new_ascii_string = fromb64(base64_string, "ascii")
43+
print("ascii:", ascii_string, base64_string, new_ascii_string)
44+
base64_string = tob64(ascii_string, "UTF-8")
45+
new_ascii_string = fromb64(base64_string, "UTF-8")
46+
print("UTF-8:", ascii_string, base64_string, new_ascii_string)
47+
dog_string = "🐶"
48+
# base64_string = tob64(dog_string, "ascii")
49+
# new_dog_string = fromb64(base64_string, "ascii")
50+
# print("ascii:", dog_string, base64_string, new_dog_string)
51+
# base64_string = tob64(dog_string, "UTF-8")
52+
base64_string = base64.b64encode(dog_string)
53+
new_dog_string = fromb64(base64_string, "UTF-8")
54+
print("UTF-8:", dog_string, base64_string, new_dog_string)
55+
56+
tester()

packages/utils/src/string.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,35 @@ export function unicodeToBase64(unicodeString: string): string {
214214

215215
throw new SentryError(errMsg);
216216
}
217+
218+
// let unicode = 'dogs are great ♥️🐶';
219+
let unicode = JSON.stringify({
220+
environment: 'dogpark🐶🌳',
221+
public_key: 'dogsarebadatkeepingsecrets',
222+
release: 'off.leash.park',
223+
trace_id: '0908201304152013',
224+
});
225+
let binary = unicodeToBinary(unicode);
226+
let base64 = Buffer.from(binary, 'binary').toString('base64');
227+
228+
console.log(unicode);
229+
console.log(binary);
230+
console.log(base64);
231+
232+
binary = Buffer.from(base64, 'base64').toString('binary');
233+
unicode = binaryToUnicode(binary);
234+
235+
console.log(binary);
236+
console.log(unicode);
237+
238+
console.log('------');
239+
240+
console.log(unicode);
241+
242+
base64 = Buffer.from(unicode, 'utf16le').toString('base64');
243+
244+
console.log(base64);
245+
246+
unicode = Buffer.from(base64, 'base64').toString('utf16le');
247+
248+
console.log(unicode);

packages/utils/test/string.test.ts

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
import { isMatchingPattern, truncate } from '../src/string';
1+
import { BASE64_REGEX, base64ToUnicode, isMatchingPattern, truncate, unicodeToBase64 } from '../src/string';
22

33
describe('truncate()', () => {
44
test('it works as expected', () => {
5-
expect(truncate(null, 3)).toEqual(null);
65
expect(truncate('lolol', 3)).toEqual('lol...');
76
expect(truncate('lolol', 10)).toEqual('lolol');
87
expect(truncate('1'.repeat(1000), 300)).toHaveLength(303);
98
expect(truncate(new Array(1000).join('f'), 0)).toEqual(new Array(1000).join('f'));
109
expect(truncate(new Array(1000).join('f'), 0)).toEqual(new Array(1000).join('f'));
1110
});
11+
12+
test('should bail out as an identity function when given non-string value', () => {
13+
expect(truncate(null as any, 3)).toEqual(null);
14+
expect(truncate(undefined as any, 3)).toEqual(undefined);
15+
expect(truncate({} as any, 3)).toEqual({});
16+
expect(truncate([] as any, 3)).toEqual([]);
17+
});
1218
});
1319

1420
describe('isMatchingPattern()', () => {
@@ -33,9 +39,32 @@ describe('isMatchingPattern()', () => {
3339
});
3440

3541
test('should bail out with false when given non-string value', () => {
36-
expect(isMatchingPattern(null, 'foo')).toEqual(false);
37-
expect(isMatchingPattern(undefined, 'foo')).toEqual(false);
38-
expect(isMatchingPattern({}, 'foo')).toEqual(false);
39-
expect(isMatchingPattern([], 'foo')).toEqual(false);
42+
expect(isMatchingPattern(null as any, 'foo')).toEqual(false);
43+
expect(isMatchingPattern(undefined as any, 'foo')).toEqual(false);
44+
expect(isMatchingPattern({} as any, 'foo')).toEqual(false);
45+
expect(isMatchingPattern([] as any, 'foo')).toEqual(false);
46+
});
47+
});
48+
49+
describe('base64ToUnicode/unicodeToBase64', () => {
50+
const unicodeString = 'Dogs are great!';
51+
const base64String = 'RABvAGcAcwAgAGEAcgBlACAAZwByAGUAYQB0ACEA';
52+
53+
test('converts to valid base64', () => {
54+
expect(BASE64_REGEX.test(unicodeToBase64(unicodeString))).toBe(true);
55+
});
56+
57+
test('works as expected', () => {
58+
expect(unicodeToBase64(unicodeString)).toEqual(base64String);
59+
expect(base64ToUnicode(base64String)).toEqual(unicodeString);
60+
});
61+
62+
test('conversion functions are inverses', () => {
63+
expect(base64ToUnicode(unicodeToBase64(unicodeString))).toEqual(unicodeString);
64+
expect(unicodeToBase64(base64ToUnicode(base64String))).toEqual(base64String);
65+
});
66+
67+
it('throws an error when given invalid value', () => {
68+
expect(unicodeToBase64(null as any)).toThrowError("isn't a string");
4069
});
4170
});

0 commit comments

Comments
 (0)