Security update for permissions_by_term
[yaffs-website] / node_modules / rust-result / index.js
1 var Individual = require('individual')
2
3 var VERSION_KEY = '1';
4 var ERROR_CACHE_KEY = '__RUST_RESULT_ERROR_UUID@' + VERSION_KEY
5 var OK_CACHE_KEY = '__RUST_RESULT_OK_UUID@' + VERSION_KEY
6
7 var ERROR_UUID = Individual(ERROR_CACHE_KEY, fakeUUID('Error'))
8 var OK_UUID = Individual(OK_CACHE_KEY, fakeUUID('Ok'))
9
10 function Ok(v) {
11   this.v = v
12
13   this[OK_UUID] = true
14 }
15
16 function Err(err) {
17   this.err = err
18
19   this[ERROR_UUID] = true
20 }
21
22 function createOk(v) {
23   if (isObject(v) && OK_UUID in v) {
24     return v.v
25   } else if (isObject(v) && ERROR_UUID in v) {
26     return undefined
27   } else {
28     if (v === undefined) {
29       throw Error('rust-result: Cannot box `undefined` in Result.Ok')
30     }
31
32     return new Ok(v)
33   }
34 }
35
36 function createErr(err) {
37   if (isObject(err) && ERROR_UUID in err) {
38     return err.err
39   } else if (isObject(err) && OK_UUID in err) {
40     return undefined
41   } else {
42     if (!isError(err)) {
43       throw Error('rust-result: Cannot box a non-error in Result.Err')
44     }
45
46     return new Err(err)
47   }
48 }
49
50 function isOk(v) {
51   return createOk(v) !== undefined
52 }
53
54 function isErr(err) {
55   return createErr(err) !== undefined
56 }
57
58 module.exports = {
59   isOk: isOk,
60   Ok: createOk,
61   isErr: isErr,
62   Err: createErr
63 }
64
65 function fakeUUID(word) {
66   return 'rust-result:' + word + ':' +
67     Math.random().toString(32).slice(2) + ':' +
68     Math.random().toString(32).slice(2) + ':' +
69     Math.random().toString(32).slice(2) + ':' +
70     Math.random().toString(32).slice(2) + ':'
71 }
72
73 function isObject(o) {
74   return typeof o === 'object' && o !== null
75 }
76
77 function isError(e) {
78   return isObject(e) &&
79       (Object.prototype.toString.call(e) === '[object Error]' ||
80         /* istanbul ignore next */ e instanceof Error)
81 }