@atproto/lex-schema 0.0.8 → 0.0.10
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/CHANGELOG.md +41 -0
- package/LICENSE.txt +1 -1
- package/dist/core/$type.d.ts +11 -0
- package/dist/core/$type.d.ts.map +1 -1
- package/dist/core/$type.js +4 -0
- package/dist/core/$type.js.map +1 -1
- package/dist/core/schema.d.ts +31 -24
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +38 -8
- package/dist/core/schema.js.map +1 -1
- package/dist/core/string-format.d.ts +35 -35
- package/dist/core/string-format.d.ts.map +1 -1
- package/dist/core/string-format.js +49 -91
- package/dist/core/string-format.js.map +1 -1
- package/dist/core/validation-issue.js +1 -1
- package/dist/core/validation-issue.js.map +1 -1
- package/dist/core/validator.d.ts +53 -32
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +18 -22
- package/dist/core/validator.js.map +1 -1
- package/dist/external.d.ts +0 -85
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +0 -164
- package/dist/external.js.map +1 -1
- package/dist/helpers.d.ts +10 -5
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +3 -3
- package/dist/helpers.js.map +1 -1
- package/dist/schema/array.d.ts +9 -5
- package/dist/schema/array.d.ts.map +1 -1
- package/dist/schema/array.js +14 -5
- package/dist/schema/array.js.map +1 -1
- package/dist/schema/blob.d.ts +9 -7
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +9 -5
- package/dist/schema/blob.js.map +1 -1
- package/dist/schema/boolean.d.ts +3 -7
- package/dist/schema/boolean.d.ts.map +1 -1
- package/dist/schema/boolean.js +6 -7
- package/dist/schema/boolean.js.map +1 -1
- package/dist/schema/bytes.d.ts +3 -2
- package/dist/schema/bytes.d.ts.map +1 -1
- package/dist/schema/bytes.js +7 -3
- package/dist/schema/bytes.js.map +1 -1
- package/dist/schema/cid.d.ts +10 -8
- package/dist/schema/cid.d.ts.map +1 -1
- package/dist/schema/cid.js +5 -1
- package/dist/schema/cid.js.map +1 -1
- package/dist/schema/custom.d.ts +6 -5
- package/dist/schema/custom.d.ts.map +1 -1
- package/dist/schema/custom.js +10 -4
- package/dist/schema/custom.js.map +1 -1
- package/dist/schema/dict.d.ts +8 -8
- package/dist/schema/dict.d.ts.map +1 -1
- package/dist/schema/dict.js +11 -2
- package/dist/schema/dict.js.map +1 -1
- package/dist/schema/discriminated-union.d.ts +21 -14
- package/dist/schema/discriminated-union.d.ts.map +1 -1
- package/dist/schema/discriminated-union.js +7 -0
- package/dist/schema/discriminated-union.js.map +1 -1
- package/dist/schema/enum.d.ts +7 -9
- package/dist/schema/enum.d.ts.map +1 -1
- package/dist/schema/enum.js +8 -4
- package/dist/schema/enum.js.map +1 -1
- package/dist/schema/integer.d.ts +5 -5
- package/dist/schema/integer.d.ts.map +1 -1
- package/dist/schema/integer.js +9 -5
- package/dist/schema/integer.js.map +1 -1
- package/dist/schema/intersection.d.ts +4 -4
- package/dist/schema/intersection.d.ts.map +1 -1
- package/dist/schema/intersection.js +5 -0
- package/dist/schema/intersection.js.map +1 -1
- package/dist/schema/literal.d.ts +6 -9
- package/dist/schema/literal.d.ts.map +1 -1
- package/dist/schema/literal.js +7 -4
- package/dist/schema/literal.js.map +1 -1
- package/dist/schema/never.d.ts +3 -2
- package/dist/schema/never.d.ts.map +1 -1
- package/dist/schema/never.js +5 -1
- package/dist/schema/never.js.map +1 -1
- package/dist/schema/null.d.ts +4 -3
- package/dist/schema/null.d.ts.map +1 -1
- package/dist/schema/null.js +6 -4
- package/dist/schema/null.js.map +1 -1
- package/dist/schema/nullable.d.ts +6 -5
- package/dist/schema/nullable.d.ts.map +1 -1
- package/dist/schema/nullable.js +9 -5
- package/dist/schema/nullable.js.map +1 -1
- package/dist/schema/object.d.ts +10 -8
- package/dist/schema/object.d.ts.map +1 -1
- package/dist/schema/object.js +11 -3
- package/dist/schema/object.js.map +1 -1
- package/dist/schema/optional.d.ts +7 -5
- package/dist/schema/optional.d.ts.map +1 -1
- package/dist/schema/optional.js +14 -6
- package/dist/schema/optional.js.map +1 -1
- package/dist/schema/params.d.ts +24 -13
- package/dist/schema/params.d.ts.map +1 -1
- package/dist/schema/params.js +47 -25
- package/dist/schema/params.js.map +1 -1
- package/dist/schema/payload.d.ts +12 -9
- package/dist/schema/payload.d.ts.map +1 -1
- package/dist/schema/payload.js +11 -0
- package/dist/schema/payload.js.map +1 -1
- package/dist/schema/permission-set.d.ts +1 -0
- package/dist/schema/permission-set.d.ts.map +1 -1
- package/dist/schema/permission-set.js +5 -0
- package/dist/schema/permission-set.js.map +1 -1
- package/dist/schema/permission.d.ts +6 -5
- package/dist/schema/permission.d.ts.map +1 -1
- package/dist/schema/permission.js +5 -0
- package/dist/schema/permission.js.map +1 -1
- package/dist/schema/procedure.d.ts +2 -1
- package/dist/schema/procedure.d.ts.map +1 -1
- package/dist/schema/procedure.js +5 -0
- package/dist/schema/procedure.js.map +1 -1
- package/dist/schema/query.d.ts +2 -1
- package/dist/schema/query.d.ts.map +1 -1
- package/dist/schema/query.js +5 -0
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/record.d.ts +48 -30
- package/dist/schema/record.d.ts.map +1 -1
- package/dist/schema/record.js +12 -9
- package/dist/schema/record.js.map +1 -1
- package/dist/schema/ref.d.ts +9 -6
- package/dist/schema/ref.d.ts.map +1 -1
- package/dist/schema/ref.js +9 -16
- package/dist/schema/ref.js.map +1 -1
- package/dist/schema/refine.d.ts +4 -4
- package/dist/schema/refine.d.ts.map +1 -1
- package/dist/schema/refine.js.map +1 -1
- package/dist/schema/regexp.d.ts +4 -3
- package/dist/schema/regexp.d.ts.map +1 -1
- package/dist/schema/regexp.js +5 -0
- package/dist/schema/regexp.js.map +1 -1
- package/dist/schema/string.d.ts +7 -8
- package/dist/schema/string.d.ts.map +1 -1
- package/dist/schema/string.js +13 -19
- package/dist/schema/string.js.map +1 -1
- package/dist/schema/subscription.d.ts +2 -1
- package/dist/schema/subscription.d.ts.map +1 -1
- package/dist/schema/subscription.js +5 -0
- package/dist/schema/subscription.js.map +1 -1
- package/dist/schema/token.d.ts +6 -5
- package/dist/schema/token.d.ts.map +1 -1
- package/dist/schema/token.js +5 -0
- package/dist/schema/token.js.map +1 -1
- package/dist/schema/typed-object.d.ts +43 -26
- package/dist/schema/typed-object.d.ts.map +1 -1
- package/dist/schema/typed-object.js +6 -3
- package/dist/schema/typed-object.js.map +1 -1
- package/dist/schema/typed-ref.d.ts +16 -25
- package/dist/schema/typed-ref.d.ts.map +1 -1
- package/dist/schema/typed-ref.js +7 -17
- package/dist/schema/typed-ref.js.map +1 -1
- package/dist/schema/typed-union.d.ts +9 -21
- package/dist/schema/typed-union.d.ts.map +1 -1
- package/dist/schema/typed-union.js +15 -11
- package/dist/schema/typed-union.js.map +1 -1
- package/dist/schema/union.d.ts +6 -6
- package/dist/schema/union.d.ts.map +1 -1
- package/dist/schema/union.js +7 -5
- package/dist/schema/union.js.map +1 -1
- package/dist/schema/unknown-object.d.ts +5 -4
- package/dist/schema/unknown-object.d.ts.map +1 -1
- package/dist/schema/unknown-object.js +5 -1
- package/dist/schema/unknown-object.js.map +1 -1
- package/dist/schema/unknown.d.ts +3 -2
- package/dist/schema/unknown.d.ts.map +1 -1
- package/dist/schema/unknown.js +5 -1
- package/dist/schema/unknown.js.map +1 -1
- package/dist/schema/with-default.d.ts +9 -0
- package/dist/schema/with-default.d.ts.map +1 -0
- package/dist/schema/with-default.js +27 -0
- package/dist/schema/with-default.js.map +1 -0
- package/dist/schema.d.ts +2 -2
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -4
- package/dist/schema.js.map +1 -1
- package/dist/util/assertion-util.d.ts +0 -6
- package/dist/util/assertion-util.d.ts.map +1 -1
- package/dist/util/assertion-util.js +0 -28
- package/dist/util/assertion-util.js.map +1 -1
- package/dist/util/memoize.d.ts +2 -2
- package/dist/util/memoize.d.ts.map +1 -1
- package/dist/util/memoize.js +23 -39
- package/dist/util/memoize.js.map +1 -1
- package/package.json +3 -3
- package/src/core/$type.test.ts +20 -0
- package/src/core/$type.ts +30 -0
- package/src/core/schema.ts +86 -38
- package/src/core/string-format.ts +119 -158
- package/src/core/validation-issue.ts +1 -1
- package/src/core/validator.ts +93 -53
- package/src/external.ts +0 -404
- package/src/helpers.test.ts +22 -21
- package/src/helpers.ts +14 -14
- package/src/schema/array.test.ts +38 -40
- package/src/schema/array.ts +35 -13
- package/src/schema/blob.test.ts +21 -21
- package/src/schema/blob.ts +19 -17
- package/src/schema/boolean.test.ts +9 -8
- package/src/schema/boolean.ts +7 -13
- package/src/schema/bytes.test.ts +13 -13
- package/src/schema/bytes.ts +13 -8
- package/src/schema/cid.test.ts +3 -3
- package/src/schema/cid.ts +15 -13
- package/src/schema/custom.test.ts +26 -26
- package/src/schema/custom.ts +20 -13
- package/src/schema/dict.test.ts +21 -39
- package/src/schema/dict.ts +28 -19
- package/src/schema/discriminated-union.test.ts +128 -128
- package/src/schema/discriminated-union.ts +45 -26
- package/src/schema/enum.test.ts +17 -16
- package/src/schema/enum.ts +16 -16
- package/src/schema/integer.test.ts +22 -21
- package/src/schema/integer.ts +12 -9
- package/src/schema/intersection.test.ts +10 -10
- package/src/schema/intersection.ts +17 -14
- package/src/schema/literal.test.ts +35 -34
- package/src/schema/literal.ts +12 -15
- package/src/schema/never.test.ts +5 -5
- package/src/schema/never.ts +7 -2
- package/src/schema/null.test.ts +3 -3
- package/src/schema/null.ts +9 -9
- package/src/schema/nullable.test.ts +31 -42
- package/src/schema/nullable.ts +17 -9
- package/src/schema/object.test.ts +10 -12
- package/src/schema/object.ts +27 -18
- package/src/schema/optional.test.ts +21 -28
- package/src/schema/optional.ts +27 -10
- package/src/schema/params.test.ts +471 -47
- package/src/schema/params.ts +72 -38
- package/src/schema/payload.test.ts +150 -156
- package/src/schema/payload.ts +35 -19
- package/src/schema/permission-set.test.ts +206 -273
- package/src/schema/permission-set.ts +8 -0
- package/src/schema/permission.test.ts +177 -177
- package/src/schema/permission.ts +13 -5
- package/src/schema/procedure.test.ts +183 -242
- package/src/schema/procedure.ts +18 -5
- package/src/schema/query.test.ts +186 -200
- package/src/schema/query.ts +16 -4
- package/src/schema/record.test.ts +121 -101
- package/src/schema/record.ts +74 -40
- package/src/schema/ref.test.ts +101 -118
- package/src/schema/ref.ts +33 -28
- package/src/schema/refine.test.ts +28 -28
- package/src/schema/refine.ts +23 -20
- package/src/schema/regexp.test.ts +29 -33
- package/src/schema/regexp.ts +11 -7
- package/src/schema/string.test.ts +35 -35
- package/src/schema/string.ts +24 -33
- package/src/schema/subscription.test.ts +259 -387
- package/src/schema/subscription.ts +16 -4
- package/src/schema/token.test.ts +47 -324
- package/src/schema/token.ts +14 -7
- package/src/schema/typed-object.test.ts +98 -81
- package/src/schema/typed-object.ts +68 -33
- package/src/schema/typed-ref.test.ts +206 -234
- package/src/schema/typed-ref.ts +40 -42
- package/src/schema/typed-union.test.ts +40 -64
- package/src/schema/typed-union.ts +36 -58
- package/src/schema/union.test.ts +17 -27
- package/src/schema/union.ts +20 -16
- package/src/schema/unknown-object.test.ts +8 -8
- package/src/schema/unknown-object.ts +9 -7
- package/src/schema/unknown.test.ts +4 -4
- package/src/schema/unknown.ts +7 -5
- package/src/schema/with-default.ts +35 -0
- package/src/schema.ts +2 -6
- package/src/util/assertion-util.ts +0 -39
- package/src/util/memoize.ts +26 -46
- package/dist/schema/_parameters.d.ts +0 -17
- package/dist/schema/_parameters.d.ts.map +0 -1
- package/dist/schema/_parameters.js +0 -20
- package/dist/schema/_parameters.js.map +0 -1
- package/src/schema/_parameters.test.ts +0 -417
- package/src/schema/_parameters.ts +0 -26
|
@@ -1,274 +1,230 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { StringSchema } from './string.js'
|
|
1
|
+
import { describe, expect, expectTypeOf, it } from 'vitest'
|
|
2
|
+
import { integer } from './integer.js'
|
|
3
|
+
import { ObjectSchema, object } from './object.js'
|
|
4
|
+
import { optional } from './optional.js'
|
|
5
|
+
import { ParamsSchema, params } from './params.js'
|
|
6
|
+
import { RefSchema, ref } from './ref.js'
|
|
7
|
+
import { string } from './string.js'
|
|
9
8
|
import {
|
|
10
9
|
InferSubscriptionMessage,
|
|
11
10
|
InferSubscriptionParameters,
|
|
12
11
|
Subscription,
|
|
12
|
+
subscription,
|
|
13
13
|
} from './subscription.js'
|
|
14
14
|
|
|
15
15
|
describe('Subscription', () => {
|
|
16
16
|
describe('constructor', () => {
|
|
17
17
|
it('creates a Subscription instance with all parameters', () => {
|
|
18
|
-
const nsid =
|
|
19
|
-
const parameters =
|
|
20
|
-
cursor:
|
|
18
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
19
|
+
const parameters = params({
|
|
20
|
+
cursor: optional(integer()),
|
|
21
21
|
})
|
|
22
|
-
const message =
|
|
23
|
-
seq:
|
|
24
|
-
data:
|
|
22
|
+
const message = object({
|
|
23
|
+
seq: integer(),
|
|
24
|
+
data: string(),
|
|
25
25
|
})
|
|
26
26
|
const errors = ['ConsumerTooSlow', 'FutureCursor'] as const
|
|
27
27
|
|
|
28
|
-
const
|
|
28
|
+
const mySub = subscription(nsid, parameters, message, errors)
|
|
29
29
|
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
32
|
-
expect(
|
|
33
|
-
expect(
|
|
34
|
-
expect(
|
|
30
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
31
|
+
expect(mySub.nsid).toBe(nsid)
|
|
32
|
+
expect(mySub.parameters).toBe(parameters)
|
|
33
|
+
expect(mySub.message).toBe(message)
|
|
34
|
+
expect(mySub.errors).toBe(errors)
|
|
35
35
|
})
|
|
36
36
|
|
|
37
37
|
it('creates a Subscription instance without errors', () => {
|
|
38
|
-
const nsid =
|
|
39
|
-
const parameters =
|
|
40
|
-
cursor:
|
|
38
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
39
|
+
const parameters = params({
|
|
40
|
+
cursor: optional(integer()),
|
|
41
41
|
})
|
|
42
|
-
const message =
|
|
43
|
-
seq:
|
|
42
|
+
const message = object({
|
|
43
|
+
seq: integer(),
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
const
|
|
47
|
-
nsid,
|
|
48
|
-
parameters,
|
|
49
|
-
message,
|
|
50
|
-
undefined,
|
|
51
|
-
)
|
|
46
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
52
47
|
|
|
53
|
-
expect(
|
|
54
|
-
expect(
|
|
55
|
-
expect(
|
|
56
|
-
expect(
|
|
57
|
-
expect(
|
|
48
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
49
|
+
expect(mySub.nsid).toBe(nsid)
|
|
50
|
+
expect(mySub.parameters).toBe(parameters)
|
|
51
|
+
expect(mySub.message).toBe(message)
|
|
52
|
+
expect(mySub.errors).toBeUndefined()
|
|
58
53
|
})
|
|
59
54
|
|
|
60
55
|
it('creates a Subscription instance with empty parameters', () => {
|
|
61
|
-
const nsid =
|
|
62
|
-
const parameters =
|
|
63
|
-
const message =
|
|
64
|
-
type:
|
|
56
|
+
const nsid = 'app.bsky.notification.subscribe'
|
|
57
|
+
const parameters = params()
|
|
58
|
+
const message = object({
|
|
59
|
+
type: string(),
|
|
65
60
|
})
|
|
66
61
|
|
|
67
|
-
const
|
|
68
|
-
nsid,
|
|
69
|
-
parameters,
|
|
70
|
-
message,
|
|
71
|
-
undefined,
|
|
72
|
-
)
|
|
62
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
73
63
|
|
|
74
|
-
expect(
|
|
75
|
-
expect(
|
|
64
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
65
|
+
expect(mySub.parameters).toBe(parameters)
|
|
76
66
|
})
|
|
77
67
|
})
|
|
78
68
|
|
|
79
69
|
describe('type property', () => {
|
|
80
70
|
it('has type set to "subscription"', () => {
|
|
81
|
-
const nsid =
|
|
82
|
-
const parameters =
|
|
83
|
-
const message =
|
|
84
|
-
seq:
|
|
71
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
72
|
+
const parameters = params()
|
|
73
|
+
const message = object({
|
|
74
|
+
seq: integer(),
|
|
85
75
|
})
|
|
86
76
|
|
|
87
|
-
const
|
|
88
|
-
nsid,
|
|
89
|
-
parameters,
|
|
90
|
-
message,
|
|
91
|
-
undefined,
|
|
92
|
-
)
|
|
77
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
93
78
|
|
|
94
|
-
expect(
|
|
79
|
+
expect(mySub.type).toBe('subscription')
|
|
95
80
|
})
|
|
96
81
|
|
|
97
82
|
it('type is a constant value', () => {
|
|
98
|
-
const nsid =
|
|
99
|
-
const parameters =
|
|
100
|
-
const message =
|
|
101
|
-
seq:
|
|
83
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
84
|
+
const parameters = params()
|
|
85
|
+
const message = object({
|
|
86
|
+
seq: integer(),
|
|
102
87
|
})
|
|
103
88
|
|
|
104
|
-
const
|
|
105
|
-
nsid,
|
|
106
|
-
parameters,
|
|
107
|
-
message,
|
|
108
|
-
undefined,
|
|
109
|
-
)
|
|
89
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
110
90
|
|
|
111
|
-
expect(
|
|
91
|
+
expect(mySub.type).toBe('subscription')
|
|
112
92
|
// TypeScript enforces readonly at compile time
|
|
113
|
-
expect(typeof
|
|
93
|
+
expect(typeof mySub.type).toBe('string')
|
|
114
94
|
})
|
|
115
95
|
})
|
|
116
96
|
|
|
117
97
|
describe('properties', () => {
|
|
118
98
|
it('has nsid property', () => {
|
|
119
|
-
const nsid =
|
|
120
|
-
const parameters =
|
|
121
|
-
const message =
|
|
122
|
-
seq:
|
|
99
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
100
|
+
const parameters = params()
|
|
101
|
+
const message = object({
|
|
102
|
+
seq: integer(),
|
|
123
103
|
})
|
|
124
104
|
|
|
125
|
-
const
|
|
126
|
-
nsid,
|
|
127
|
-
parameters,
|
|
128
|
-
message,
|
|
129
|
-
undefined,
|
|
130
|
-
)
|
|
105
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
131
106
|
|
|
132
|
-
expect(
|
|
133
|
-
expect(typeof
|
|
107
|
+
expect(mySub.nsid).toBe(nsid)
|
|
108
|
+
expect(typeof mySub.nsid).toBe('string')
|
|
134
109
|
})
|
|
135
110
|
|
|
136
111
|
it('has parameters property', () => {
|
|
137
|
-
const nsid =
|
|
138
|
-
const parameters =
|
|
139
|
-
const message =
|
|
140
|
-
seq:
|
|
112
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
113
|
+
const parameters = params()
|
|
114
|
+
const message = object({
|
|
115
|
+
seq: integer(),
|
|
141
116
|
})
|
|
142
117
|
|
|
143
|
-
const
|
|
144
|
-
nsid,
|
|
145
|
-
parameters,
|
|
146
|
-
message,
|
|
147
|
-
undefined,
|
|
148
|
-
)
|
|
118
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
149
119
|
|
|
150
|
-
expect(
|
|
151
|
-
expect(
|
|
120
|
+
expect(mySub.parameters).toBe(parameters)
|
|
121
|
+
expect(mySub.parameters).toBeInstanceOf(ParamsSchema)
|
|
152
122
|
})
|
|
153
123
|
|
|
154
124
|
it('has message property', () => {
|
|
155
|
-
const nsid =
|
|
156
|
-
const parameters =
|
|
157
|
-
const message =
|
|
158
|
-
seq:
|
|
125
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
126
|
+
const parameters = params()
|
|
127
|
+
const message = object({
|
|
128
|
+
seq: integer(),
|
|
159
129
|
})
|
|
160
130
|
|
|
161
|
-
const
|
|
162
|
-
nsid,
|
|
163
|
-
parameters,
|
|
164
|
-
message,
|
|
165
|
-
undefined,
|
|
166
|
-
)
|
|
131
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
167
132
|
|
|
168
|
-
expect(
|
|
169
|
-
expect(
|
|
133
|
+
expect(mySub.message).toBe(message)
|
|
134
|
+
expect(mySub.message).toBeInstanceOf(ObjectSchema)
|
|
170
135
|
})
|
|
171
136
|
|
|
172
137
|
it('has errors property', () => {
|
|
173
|
-
const nsid =
|
|
174
|
-
const parameters =
|
|
175
|
-
const message =
|
|
176
|
-
seq:
|
|
138
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
139
|
+
const parameters = params()
|
|
140
|
+
const message = object({
|
|
141
|
+
seq: integer(),
|
|
177
142
|
})
|
|
178
143
|
const errors = ['ConsumerTooSlow'] as const
|
|
179
144
|
|
|
180
|
-
const
|
|
145
|
+
const mySub = subscription(nsid, parameters, message, errors)
|
|
181
146
|
|
|
182
|
-
expect(
|
|
183
|
-
expect(Array.isArray(
|
|
147
|
+
expect(mySub.errors).toBe(errors)
|
|
148
|
+
expect(Array.isArray(mySub.errors)).toBe(true)
|
|
184
149
|
})
|
|
185
150
|
})
|
|
186
151
|
|
|
187
152
|
describe('with complex parameters', () => {
|
|
188
153
|
it('creates a Subscription with multiple parameter types', () => {
|
|
189
|
-
const nsid =
|
|
190
|
-
const parameters =
|
|
191
|
-
cursor:
|
|
192
|
-
includeDeletes:
|
|
193
|
-
new IntegerSchema({ minimum: 0, maximum: 1 }),
|
|
194
|
-
),
|
|
154
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
155
|
+
const parameters = params({
|
|
156
|
+
cursor: optional(integer({ minimum: 0 })),
|
|
157
|
+
includeDeletes: optional(integer({ minimum: 0, maximum: 1 })),
|
|
195
158
|
})
|
|
196
|
-
const message =
|
|
197
|
-
seq:
|
|
198
|
-
data:
|
|
159
|
+
const message = object({
|
|
160
|
+
seq: integer(),
|
|
161
|
+
data: string(),
|
|
199
162
|
})
|
|
200
163
|
const errors = ['ConsumerTooSlow', 'FutureCursor'] as const
|
|
201
164
|
|
|
202
|
-
const
|
|
165
|
+
const mySub = subscription(nsid, parameters, message, errors)
|
|
203
166
|
|
|
204
|
-
expect(
|
|
205
|
-
expect(
|
|
206
|
-
expect(
|
|
167
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
168
|
+
expect(mySub.parameters).toBe(parameters)
|
|
169
|
+
expect(mySub.errors).toEqual(['ConsumerTooSlow', 'FutureCursor'])
|
|
207
170
|
})
|
|
208
171
|
})
|
|
209
172
|
|
|
210
173
|
describe('with various message types', () => {
|
|
211
174
|
it('creates a Subscription with ObjectSchema message', () => {
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
const subscription = new Subscription(
|
|
220
|
-
nsid,
|
|
221
|
-
parameters,
|
|
222
|
-
message,
|
|
175
|
+
const mySub = subscription(
|
|
176
|
+
'com.atproto.sync.subscribeRepos',
|
|
177
|
+
params(),
|
|
178
|
+
object({
|
|
179
|
+
seq: integer(),
|
|
180
|
+
data: string(),
|
|
181
|
+
}),
|
|
223
182
|
undefined,
|
|
224
183
|
)
|
|
225
184
|
|
|
226
|
-
expect(
|
|
227
|
-
expect(
|
|
185
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
186
|
+
expect(mySub.message).toBeInstanceOf(ObjectSchema)
|
|
228
187
|
})
|
|
229
188
|
|
|
230
189
|
it('creates a Subscription with RefSchema message', () => {
|
|
231
|
-
const
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
nsid,
|
|
237
|
-
parameters,
|
|
238
|
-
message,
|
|
190
|
+
const message = string()
|
|
191
|
+
const mySub = subscription(
|
|
192
|
+
'app.bsky.feed.subscribe',
|
|
193
|
+
params(),
|
|
194
|
+
ref(() => message),
|
|
239
195
|
undefined,
|
|
240
196
|
)
|
|
241
197
|
|
|
242
|
-
expect(
|
|
243
|
-
expect(
|
|
198
|
+
expect(mySub).toBeInstanceOf(Subscription)
|
|
199
|
+
expect(mySub.message).toBeInstanceOf(RefSchema)
|
|
244
200
|
})
|
|
245
201
|
})
|
|
246
202
|
|
|
247
203
|
describe('with different error configurations', () => {
|
|
248
204
|
it('creates a Subscription with a single error', () => {
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
205
|
+
const mySub = subscription(
|
|
206
|
+
'com.atproto.sync.subscribeRepos',
|
|
207
|
+
params(),
|
|
208
|
+
object({}),
|
|
209
|
+
['ConsumerTooSlow'],
|
|
210
|
+
)
|
|
255
211
|
|
|
256
|
-
expect(
|
|
212
|
+
expect(mySub.errors).toEqual(['ConsumerTooSlow'])
|
|
257
213
|
})
|
|
258
214
|
|
|
259
215
|
it('creates a Subscription with multiple errors', () => {
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
'ConsumerTooSlow',
|
|
265
|
-
|
|
266
|
-
'InvalidCursor',
|
|
267
|
-
] as const
|
|
216
|
+
const mySub = subscription(
|
|
217
|
+
'com.atproto.sync.subscribeRepos',
|
|
218
|
+
params(),
|
|
219
|
+
object({}),
|
|
220
|
+
['ConsumerTooSlow', 'FutureCursor', 'InvalidCursor'],
|
|
221
|
+
)
|
|
268
222
|
|
|
269
|
-
|
|
223
|
+
expectTypeOf<
|
|
224
|
+
readonly ['ConsumerTooSlow', 'FutureCursor', 'InvalidCursor']
|
|
225
|
+
>(mySub.errors)
|
|
270
226
|
|
|
271
|
-
expect(
|
|
227
|
+
expect(mySub.errors).toEqual([
|
|
272
228
|
'ConsumerTooSlow',
|
|
273
229
|
'FutureCursor',
|
|
274
230
|
'InvalidCursor',
|
|
@@ -276,167 +232,129 @@ describe('Subscription', () => {
|
|
|
276
232
|
})
|
|
277
233
|
|
|
278
234
|
it('creates a Subscription with empty errors array', () => {
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
235
|
+
const mySub = subscription(
|
|
236
|
+
'com.atproto.sync.subscribeRepos',
|
|
237
|
+
params(),
|
|
238
|
+
object({}),
|
|
239
|
+
[],
|
|
240
|
+
)
|
|
285
241
|
|
|
286
|
-
expect(
|
|
242
|
+
expect(mySub.errors).toEqual([])
|
|
287
243
|
})
|
|
288
244
|
})
|
|
289
245
|
|
|
290
246
|
describe('type inference', () => {
|
|
291
247
|
it('InferSubscriptionParameters correctly infers parameter types', () => {
|
|
292
|
-
const
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
const subscription = new Subscription(
|
|
301
|
-
nsid,
|
|
302
|
-
parameters,
|
|
303
|
-
message,
|
|
304
|
-
undefined,
|
|
248
|
+
const mySub = subscription(
|
|
249
|
+
'com.atproto.sync.subscribeRepos',
|
|
250
|
+
params({
|
|
251
|
+
cursor: optional(integer()),
|
|
252
|
+
}),
|
|
253
|
+
object({
|
|
254
|
+
seq: integer(),
|
|
255
|
+
}),
|
|
305
256
|
)
|
|
306
257
|
|
|
307
|
-
type Params = InferSubscriptionParameters<typeof
|
|
258
|
+
type Params = InferSubscriptionParameters<typeof mySub>
|
|
308
259
|
|
|
309
|
-
|
|
310
|
-
const params: Params = {
|
|
260
|
+
expectTypeOf<Params>({
|
|
311
261
|
cursor: 12345,
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
expect(params.cursor).toBeDefined()
|
|
262
|
+
})
|
|
315
263
|
})
|
|
316
264
|
|
|
317
265
|
it('InferSubscriptionMessage correctly infers message type', () => {
|
|
318
|
-
const nsid =
|
|
319
|
-
const parameters =
|
|
320
|
-
const message =
|
|
321
|
-
seq:
|
|
322
|
-
data:
|
|
266
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
267
|
+
const parameters = params()
|
|
268
|
+
const message = object({
|
|
269
|
+
seq: integer(),
|
|
270
|
+
data: string(),
|
|
323
271
|
})
|
|
324
272
|
|
|
325
|
-
const
|
|
326
|
-
nsid,
|
|
327
|
-
parameters,
|
|
328
|
-
message,
|
|
329
|
-
undefined,
|
|
330
|
-
)
|
|
273
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
331
274
|
|
|
332
|
-
type Message = InferSubscriptionMessage<typeof
|
|
275
|
+
type Message = InferSubscriptionMessage<typeof mySub>
|
|
333
276
|
|
|
334
|
-
|
|
335
|
-
const msg: Message = {
|
|
277
|
+
expectTypeOf<Message>({
|
|
336
278
|
seq: 12345,
|
|
337
279
|
data: 'test data',
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
expect(msg.seq).toBeDefined()
|
|
341
|
-
expect(msg.data).toBeDefined()
|
|
280
|
+
})
|
|
342
281
|
})
|
|
343
282
|
})
|
|
344
283
|
|
|
345
284
|
describe('edge cases', () => {
|
|
346
285
|
it('handles very long NSID', () => {
|
|
347
|
-
const nsid =
|
|
348
|
-
'com.example.very.long.namespace.identifier.subscription.name'
|
|
349
|
-
)
|
|
350
|
-
const
|
|
351
|
-
const message = new ObjectSchema({})
|
|
286
|
+
const nsid =
|
|
287
|
+
'com.example.very.long.namespace.identifier.subscription.name'
|
|
288
|
+
const parameters = params()
|
|
289
|
+
const message = object({})
|
|
352
290
|
|
|
353
|
-
const
|
|
354
|
-
nsid,
|
|
355
|
-
parameters,
|
|
356
|
-
message,
|
|
357
|
-
undefined,
|
|
358
|
-
)
|
|
291
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
359
292
|
|
|
360
|
-
expect(
|
|
293
|
+
expect(mySub.nsid).toBe(nsid)
|
|
361
294
|
})
|
|
362
295
|
|
|
363
296
|
it('handles subscription with all optional parameters', () => {
|
|
364
|
-
const nsid =
|
|
365
|
-
const parameters =
|
|
366
|
-
cursor:
|
|
367
|
-
includeDeletes:
|
|
368
|
-
includeEdits:
|
|
297
|
+
const nsid = 'app.bsky.feed.subscribe'
|
|
298
|
+
const parameters = params({
|
|
299
|
+
cursor: optional(integer()),
|
|
300
|
+
includeDeletes: optional(integer()),
|
|
301
|
+
includeEdits: optional(integer()),
|
|
369
302
|
})
|
|
370
|
-
const message =
|
|
303
|
+
const message = object({})
|
|
371
304
|
|
|
372
|
-
const
|
|
373
|
-
nsid,
|
|
374
|
-
parameters,
|
|
375
|
-
message,
|
|
376
|
-
undefined,
|
|
377
|
-
)
|
|
305
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
378
306
|
|
|
379
|
-
expect(
|
|
307
|
+
expect(mySub.parameters).toBe(parameters)
|
|
380
308
|
})
|
|
381
309
|
|
|
382
310
|
it('handles subscription with complex nested message schema', () => {
|
|
383
|
-
const nsid =
|
|
384
|
-
const parameters =
|
|
385
|
-
const message =
|
|
386
|
-
seq:
|
|
387
|
-
blocks:
|
|
388
|
-
cid:
|
|
389
|
-
data:
|
|
390
|
-
uri:
|
|
391
|
-
content:
|
|
311
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
312
|
+
const parameters = params()
|
|
313
|
+
const message = object({
|
|
314
|
+
seq: integer(),
|
|
315
|
+
blocks: object({
|
|
316
|
+
cid: string({ format: 'cid' }),
|
|
317
|
+
data: object({
|
|
318
|
+
uri: string({ format: 'at-uri' }),
|
|
319
|
+
content: string(),
|
|
392
320
|
}),
|
|
393
321
|
}),
|
|
394
322
|
})
|
|
395
323
|
|
|
396
|
-
const
|
|
397
|
-
nsid,
|
|
398
|
-
parameters,
|
|
399
|
-
message,
|
|
400
|
-
undefined,
|
|
401
|
-
)
|
|
324
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
402
325
|
|
|
403
|
-
expect(
|
|
326
|
+
expect(mySub.message).toBeInstanceOf(ObjectSchema)
|
|
404
327
|
})
|
|
405
328
|
})
|
|
406
329
|
|
|
407
330
|
describe('real-world subscription examples', () => {
|
|
408
331
|
it('creates a subscribeLabels subscription', () => {
|
|
409
|
-
const nsid =
|
|
410
|
-
const parameters =
|
|
411
|
-
cursor:
|
|
332
|
+
const nsid = 'com.atproto.label.subscribeLabels'
|
|
333
|
+
const parameters = params({
|
|
334
|
+
cursor: optional(integer({ minimum: 0 })),
|
|
412
335
|
})
|
|
413
|
-
const message =
|
|
414
|
-
seq:
|
|
415
|
-
labels:
|
|
416
|
-
uri:
|
|
417
|
-
val:
|
|
336
|
+
const message = object({
|
|
337
|
+
seq: integer(),
|
|
338
|
+
labels: object({
|
|
339
|
+
uri: string({ format: 'uri' }),
|
|
340
|
+
val: string(),
|
|
418
341
|
}),
|
|
419
342
|
})
|
|
420
343
|
|
|
421
|
-
const
|
|
422
|
-
nsid,
|
|
423
|
-
parameters,
|
|
424
|
-
message,
|
|
425
|
-
undefined,
|
|
426
|
-
)
|
|
344
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
427
345
|
|
|
428
|
-
expect(
|
|
429
|
-
expect(
|
|
430
|
-
expect(
|
|
431
|
-
expect(
|
|
346
|
+
expect(mySub.type).toBe('subscription')
|
|
347
|
+
expect(mySub.nsid).toBe('com.atproto.label.subscribeLabels')
|
|
348
|
+
expect(mySub.parameters.matches({ cursor: 10 })).toBe(true)
|
|
349
|
+
expect(mySub.parameters.matches({ cursor: -10 })).toBe(false)
|
|
432
350
|
expect(
|
|
433
|
-
|
|
351
|
+
mySub.message.matches({
|
|
434
352
|
seq: 1,
|
|
435
353
|
labels: { uri: 'http://foo.com', val: 'test' },
|
|
436
354
|
}),
|
|
437
355
|
).toBe(true)
|
|
438
356
|
expect(
|
|
439
|
-
|
|
357
|
+
mySub.message.matches({
|
|
440
358
|
seq: 1,
|
|
441
359
|
labels: { uri: 'http://foo.com', val: 3 },
|
|
442
360
|
}),
|
|
@@ -444,110 +362,84 @@ describe('Subscription', () => {
|
|
|
444
362
|
})
|
|
445
363
|
|
|
446
364
|
it('creates a notification subscription', () => {
|
|
447
|
-
const nsid =
|
|
448
|
-
const parameters =
|
|
449
|
-
cursor:
|
|
365
|
+
const nsid = 'app.bsky.notification.subscribe'
|
|
366
|
+
const parameters = params({
|
|
367
|
+
cursor: optional(string()),
|
|
450
368
|
})
|
|
451
|
-
const message =
|
|
452
|
-
type:
|
|
453
|
-
uri:
|
|
454
|
-
cid:
|
|
369
|
+
const message = object({
|
|
370
|
+
type: string(),
|
|
371
|
+
uri: string({ format: 'at-uri' }),
|
|
372
|
+
cid: string({ format: 'cid' }),
|
|
455
373
|
})
|
|
456
374
|
|
|
457
|
-
const
|
|
458
|
-
nsid,
|
|
459
|
-
parameters,
|
|
460
|
-
message,
|
|
461
|
-
undefined,
|
|
462
|
-
)
|
|
375
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
463
376
|
|
|
464
|
-
expect(
|
|
465
|
-
expect(
|
|
377
|
+
expect(mySub.type).toBe('subscription')
|
|
378
|
+
expect(mySub.nsid).toBe('app.bsky.notification.subscribe')
|
|
466
379
|
})
|
|
467
380
|
})
|
|
468
381
|
|
|
469
382
|
describe('with mixed parameter and message types', () => {
|
|
470
383
|
it('handles required and optional parameters with complex message', () => {
|
|
471
|
-
const nsid =
|
|
472
|
-
const parameters =
|
|
473
|
-
cursor:
|
|
474
|
-
includeDeletes:
|
|
475
|
-
new IntegerSchema({ minimum: 0, maximum: 1 }),
|
|
476
|
-
),
|
|
384
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
385
|
+
const parameters = params({
|
|
386
|
+
cursor: optional(integer({ minimum: 0 })),
|
|
387
|
+
includeDeletes: optional(integer({ minimum: 0, maximum: 1 })),
|
|
477
388
|
})
|
|
478
|
-
const message =
|
|
479
|
-
seq:
|
|
480
|
-
rebase:
|
|
481
|
-
|
|
482
|
-
),
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
),
|
|
486
|
-
repo: new StringSchema({ format: 'did' }),
|
|
487
|
-
commit: new StringSchema({ format: 'cid' }),
|
|
488
|
-
blocks: new StringSchema({}),
|
|
489
|
-
ops: new ObjectSchema({}),
|
|
389
|
+
const message = object({
|
|
390
|
+
seq: integer(),
|
|
391
|
+
rebase: optional(integer({ minimum: 0, maximum: 1 })),
|
|
392
|
+
tooBig: optional(integer({ minimum: 0, maximum: 1 })),
|
|
393
|
+
repo: string({ format: 'did' }),
|
|
394
|
+
commit: string({ format: 'cid' }),
|
|
395
|
+
blocks: string(),
|
|
396
|
+
ops: object({}),
|
|
490
397
|
})
|
|
491
398
|
|
|
492
|
-
const
|
|
493
|
-
nsid,
|
|
494
|
-
parameters,
|
|
495
|
-
message,
|
|
496
|
-
undefined,
|
|
497
|
-
)
|
|
399
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
498
400
|
|
|
499
|
-
expect(
|
|
500
|
-
expect(
|
|
501
|
-
expect(
|
|
401
|
+
expect(mySub.type).toBe('subscription')
|
|
402
|
+
expect(mySub.parameters).toBe(parameters)
|
|
403
|
+
expect(mySub.message).toBe(message)
|
|
502
404
|
})
|
|
503
405
|
})
|
|
504
406
|
|
|
505
407
|
describe('validation through nested schemas', () => {
|
|
506
408
|
it('parameters can validate input through ParamsSchema', () => {
|
|
507
|
-
const nsid =
|
|
508
|
-
const parameters =
|
|
509
|
-
cursor:
|
|
409
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
410
|
+
const parameters = params({
|
|
411
|
+
cursor: integer({ minimum: 0 }),
|
|
510
412
|
})
|
|
511
|
-
const message =
|
|
413
|
+
const message = object({})
|
|
512
414
|
|
|
513
|
-
const
|
|
514
|
-
nsid,
|
|
515
|
-
parameters,
|
|
516
|
-
message,
|
|
517
|
-
undefined,
|
|
518
|
-
)
|
|
415
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
519
416
|
|
|
520
417
|
// Test that the parameters schema can validate
|
|
521
|
-
const validResult =
|
|
418
|
+
const validResult = mySub.parameters.safeParse({ cursor: 100 })
|
|
522
419
|
expect(validResult.success).toBe(true)
|
|
523
420
|
|
|
524
|
-
const invalidResult =
|
|
421
|
+
const invalidResult = mySub.parameters.safeParse({ cursor: -1 })
|
|
525
422
|
expect(invalidResult.success).toBe(false)
|
|
526
423
|
})
|
|
527
424
|
|
|
528
425
|
it('message can validate input through ObjectSchema', () => {
|
|
529
|
-
const nsid =
|
|
530
|
-
const parameters =
|
|
531
|
-
const message =
|
|
532
|
-
seq:
|
|
533
|
-
data:
|
|
426
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
427
|
+
const parameters = params()
|
|
428
|
+
const message = object({
|
|
429
|
+
seq: integer({ minimum: 0 }),
|
|
430
|
+
data: string({ minLength: 1 }),
|
|
534
431
|
})
|
|
535
432
|
|
|
536
|
-
const
|
|
537
|
-
nsid,
|
|
538
|
-
parameters,
|
|
539
|
-
message,
|
|
540
|
-
undefined,
|
|
541
|
-
)
|
|
433
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
542
434
|
|
|
543
435
|
// Test that the message schema can validate
|
|
544
|
-
const validResult =
|
|
436
|
+
const validResult = mySub.message.safeParse({
|
|
545
437
|
seq: 100,
|
|
546
438
|
data: 'test',
|
|
547
439
|
})
|
|
548
440
|
expect(validResult.success).toBe(true)
|
|
549
441
|
|
|
550
|
-
const invalidResult =
|
|
442
|
+
const invalidResult = mySub.message.safeParse({
|
|
551
443
|
seq: -1,
|
|
552
444
|
data: '',
|
|
553
445
|
})
|
|
@@ -557,71 +449,51 @@ describe('Subscription', () => {
|
|
|
557
449
|
|
|
558
450
|
describe('property access', () => {
|
|
559
451
|
it('can access nsid after construction', () => {
|
|
560
|
-
const nsid =
|
|
561
|
-
const parameters =
|
|
562
|
-
const message =
|
|
563
|
-
|
|
564
|
-
const
|
|
565
|
-
nsid,
|
|
566
|
-
parameters,
|
|
567
|
-
message,
|
|
568
|
-
undefined,
|
|
569
|
-
)
|
|
452
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
453
|
+
const parameters = params()
|
|
454
|
+
const message = object({})
|
|
455
|
+
|
|
456
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
570
457
|
|
|
571
|
-
expect(
|
|
572
|
-
expect(
|
|
458
|
+
expect(mySub.nsid).toBe(nsid)
|
|
459
|
+
expect(mySub.nsid).toBe('com.atproto.sync.subscribeRepos')
|
|
573
460
|
})
|
|
574
461
|
|
|
575
462
|
it('can access type after construction', () => {
|
|
576
|
-
const nsid =
|
|
577
|
-
const parameters =
|
|
578
|
-
const message =
|
|
579
|
-
|
|
580
|
-
const subscription = new Subscription(
|
|
581
|
-
nsid,
|
|
582
|
-
parameters,
|
|
583
|
-
message,
|
|
584
|
-
undefined,
|
|
585
|
-
)
|
|
463
|
+
const nsid = 'com.atproto.sync.subscribeRepos'
|
|
464
|
+
const parameters = params()
|
|
465
|
+
const message = object({})
|
|
586
466
|
|
|
587
|
-
|
|
588
|
-
|
|
467
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
468
|
+
|
|
469
|
+
expect(mySub.type).toBe('subscription')
|
|
470
|
+
expect(typeof mySub.type).toBe('string')
|
|
589
471
|
})
|
|
590
472
|
})
|
|
591
473
|
|
|
592
474
|
describe('different message schema types', () => {
|
|
593
475
|
it('constructs with ObjectSchema message', () => {
|
|
594
|
-
const nsid =
|
|
595
|
-
const parameters =
|
|
596
|
-
const message =
|
|
597
|
-
field:
|
|
476
|
+
const nsid = 'app.bsky.test'
|
|
477
|
+
const parameters = params()
|
|
478
|
+
const message = object({
|
|
479
|
+
field: string(),
|
|
598
480
|
})
|
|
599
481
|
|
|
600
|
-
const
|
|
601
|
-
nsid,
|
|
602
|
-
parameters,
|
|
603
|
-
message,
|
|
604
|
-
undefined,
|
|
605
|
-
)
|
|
482
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
606
483
|
|
|
607
|
-
expect(
|
|
608
|
-
expect(
|
|
484
|
+
expect(mySub.message).toBeInstanceOf(ObjectSchema)
|
|
485
|
+
expect(mySub.message).toBe(message)
|
|
609
486
|
})
|
|
610
487
|
|
|
611
488
|
it('constructs with RefSchema message', () => {
|
|
612
|
-
const nsid =
|
|
613
|
-
const parameters =
|
|
614
|
-
const message =
|
|
615
|
-
|
|
616
|
-
const
|
|
617
|
-
nsid,
|
|
618
|
-
parameters,
|
|
619
|
-
message,
|
|
620
|
-
undefined,
|
|
621
|
-
)
|
|
489
|
+
const nsid = 'app.bsky.test'
|
|
490
|
+
const parameters = params()
|
|
491
|
+
const message = ref(() => object({}))
|
|
492
|
+
|
|
493
|
+
const mySub = subscription(nsid, parameters, message, undefined)
|
|
622
494
|
|
|
623
|
-
expect(
|
|
624
|
-
expect(
|
|
495
|
+
expect(mySub.message).toBeInstanceOf(RefSchema)
|
|
496
|
+
expect(mySub.message).toBe(message)
|
|
625
497
|
})
|
|
626
498
|
})
|
|
627
499
|
})
|