@prismatic-io/spectral 5.3.0 → 6.1.0

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.
Files changed (41) hide show
  1. package/dist/clients/http/index.d.ts +13 -0
  2. package/dist/clients/http/index.js +46 -0
  3. package/dist/clients/http/inputs.d.ts +116 -0
  4. package/dist/clients/http/inputs.js +134 -0
  5. package/dist/clients/soap/index.js +5 -1
  6. package/dist/clients/soap/types.js +1 -2
  7. package/dist/clients/soap/utils.js +12 -12
  8. package/dist/errors.js +1 -1
  9. package/dist/index.d.ts +6 -10
  10. package/dist/index.js +8 -57
  11. package/dist/serverTypes/convert.d.ts +3 -0
  12. package/dist/serverTypes/convert.js +60 -0
  13. package/dist/serverTypes/index.d.ts +169 -0
  14. package/dist/serverTypes/index.js +7 -0
  15. package/dist/testing.d.ts +5 -5
  16. package/dist/testing.js +20 -15
  17. package/dist/types/ActionDefinition.d.ts +6 -6
  18. package/dist/types/ActionInputParameters.d.ts +3 -3
  19. package/dist/types/ActionLogger.d.ts +1 -1
  20. package/dist/types/ActionLogger.js +1 -1
  21. package/dist/types/ActionPerformFunction.d.ts +4 -2
  22. package/dist/types/ActionPerformReturn.d.ts +4 -2
  23. package/dist/types/ComponentDefinition.d.ts +28 -6
  24. package/dist/types/DataPayload.d.ts +10 -0
  25. package/dist/types/DataPayload.js +2 -0
  26. package/dist/types/Inputs.d.ts +9 -3
  27. package/dist/types/TriggerDefinition.d.ts +6 -6
  28. package/dist/types/TriggerPayload.d.ts +8 -0
  29. package/dist/types/TriggerPerformFunction.d.ts +1 -1
  30. package/dist/types/TriggerResult.d.ts +5 -3
  31. package/dist/types/conditional-logic.d.ts +1 -1
  32. package/dist/types/conditional-logic.js +1 -1
  33. package/dist/types/index.d.ts +1 -1
  34. package/dist/types/index.js +6 -15
  35. package/dist/util.d.ts +9 -3
  36. package/dist/util.js +20 -7
  37. package/package.json +31 -44
  38. package/dist/types/server-types.d.ts +0 -172
  39. package/dist/types/server-types.js +0 -8
  40. package/dist/util.test.d.ts +0 -1
  41. package/dist/util.test.js +0 -305
package/dist/util.test.js DELETED
@@ -1,305 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const fast_check_1 = __importDefault(require("fast-check"));
7
- const util_1 = __importDefault(require("./util"));
8
- describe("util", () => {
9
- const bufferArbitrary = fast_check_1.default
10
- .base64String()
11
- .map((v) => Buffer.from(v, "base64"));
12
- const uint8ArrayArbitrary = bufferArbitrary.map((b) => new Uint8Array(b));
13
- const unknowns = () => fast_check_1.default.constantFrom(undefined);
14
- const emptyStrings = () => fast_check_1.default.constantFrom("");
15
- describe("boolean", () => {
16
- const booleanStringValues = {
17
- truthy: ["true", "t", "T", "yes", "y", "Y"],
18
- falsy: ["false", "f", "F", "no", "n", "N", ""],
19
- };
20
- const truthy = () => fast_check_1.default.constantFrom(true, ...booleanStringValues.truthy);
21
- const falsy = () => fast_check_1.default.constantFrom(false, ...booleanStringValues.falsy);
22
- const invalidValues = fast_check_1.default.oneof(fast_check_1.default.integer(), fast_check_1.default
23
- .string()
24
- .filter((v) => !booleanStringValues.truthy.includes(v) &&
25
- !booleanStringValues.falsy.includes(v)), fast_check_1.default.float(), fast_check_1.default.double());
26
- it("detects boolean value", () => {
27
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.boolean(), (v) => expect(util_1.default.types.isBool(v)).toStrictEqual(true)));
28
- });
29
- it("detects non-boolean value", () => {
30
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isBool(v)).toStrictEqual(false)));
31
- });
32
- it("coerces truthy values to true", () => {
33
- fast_check_1.default.assert(fast_check_1.default.property(truthy(), (v) => expect(util_1.default.types.toBool(v)).toStrictEqual(true)));
34
- });
35
- it("coerces falsy values to false", () => {
36
- fast_check_1.default.assert(fast_check_1.default.property(falsy(), (v) => expect(util_1.default.types.toBool(v)).toStrictEqual(false)));
37
- });
38
- it("allows for boolean default to false for undefined inputs and undefined default", () => {
39
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toBool(v)).toStrictEqual(false)));
40
- });
41
- it("allows for boolean default of false for undefined inputs", () => {
42
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toBool(v, false)).toStrictEqual(false)));
43
- });
44
- it("allows for boolean default of true for undefined inputs", () => {
45
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toBool(v, true)).toStrictEqual(true)));
46
- });
47
- it("allows for boolean default to false for empty string inputs and undefined default", () => {
48
- fast_check_1.default.assert(fast_check_1.default.property(emptyStrings(), (v) => expect(util_1.default.types.toBool(v)).toStrictEqual(false)));
49
- });
50
- it("allows for boolean default of false for empty string inputs", () => {
51
- fast_check_1.default.assert(fast_check_1.default.property(emptyStrings(), (v) => expect(util_1.default.types.toBool(v, false)).toStrictEqual(false)));
52
- });
53
- it("allows for boolean default of true for empty string inputs", () => {
54
- fast_check_1.default.assert(fast_check_1.default.property(emptyStrings(), (v) => expect(util_1.default.types.toBool(v, true)).toStrictEqual(true)));
55
- });
56
- });
57
- describe("integer", () => {
58
- const invalidValues = fast_check_1.default.oneof(fast_check_1.default.string().filter((v) => Number.isNaN(Number.parseInt(v)) && v !== ""));
59
- it("detects integer value", () => {
60
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.integer(), (v) => expect(util_1.default.types.isInt(v)).toStrictEqual(true)));
61
- });
62
- it("detects non-integer value", () => {
63
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isInt(v)).toStrictEqual(false)));
64
- });
65
- it("coerces integer values", () => {
66
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.integer(), (v) => expect(util_1.default.types.toInt(v.toString())).toStrictEqual(v)));
67
- });
68
- it("coerces a float to an int", () => {
69
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.float(), (v) => expect(util_1.default.types.toInt(v)).toStrictEqual(~~v)));
70
- });
71
- it("throws when coercing non-integer values", () => {
72
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(() => util_1.default.types.toInt(v)).toThrow("cannot be coerced to int")));
73
- });
74
- it("Allows for default value of 0 when value is undefined", () => {
75
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toInt(v)).toStrictEqual(0)));
76
- });
77
- it("Allows for default values when value is undefined", () => {
78
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toInt(v, 20)).toStrictEqual(20)));
79
- });
80
- it("Allows for default value of 0 when value is empty string", () => {
81
- fast_check_1.default.assert(fast_check_1.default.property(emptyStrings(), (v) => expect(util_1.default.types.toInt(v)).toStrictEqual(0)));
82
- });
83
- it("Allows for default values when value is empty string", () => {
84
- fast_check_1.default.assert(fast_check_1.default.property(emptyStrings(), (v) => expect(util_1.default.types.toInt(v, 20)).toStrictEqual(20)));
85
- });
86
- });
87
- describe("number", () => {
88
- const validValues = fast_check_1.default.string().filter((v) => !Number.isNaN(Number(v)));
89
- const invalidValues = fast_check_1.default.string().filter((v) => Number.isNaN(Number(v)));
90
- it("detects things that can be cast to a number", () => {
91
- fast_check_1.default.assert(fast_check_1.default.property(validValues, (v) => expect(util_1.default.types.isNumber(v)).toStrictEqual(true)));
92
- });
93
- it("detects things that cannot be cast to a number", () => {
94
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isNumber(v)).toStrictEqual(false)));
95
- });
96
- it("returns a number when given a number", () => {
97
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.float(), (v) => expect(util_1.default.types.toNumber(v)).toStrictEqual(v)));
98
- });
99
- it("returns a number when given something that can be cast to number", () => {
100
- fast_check_1.default.assert(fast_check_1.default.property(validValues, (v) => expect(util_1.default.types.toNumber(v)).toStrictEqual(Number(v))));
101
- });
102
- it("throws when coercing non-number values", () => {
103
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(() => util_1.default.types.toNumber(v)).toThrow("cannot be coerced to a number")));
104
- });
105
- it("returns the default value when a value is missing", () => {
106
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => expect(util_1.default.types.toNumber(v, 5.5)).toStrictEqual(5.5)));
107
- });
108
- });
109
- describe("bigint", () => {
110
- const invalidValues = fast_check_1.default.string().filter((v) => {
111
- try {
112
- BigInt(v);
113
- return false;
114
- }
115
- catch (error) {
116
- return true;
117
- }
118
- });
119
- it("detects bigint value", () => {
120
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.bigInt(), (v) => expect(util_1.default.types.isBigInt(v)).toStrictEqual(true)));
121
- });
122
- it("detects non-bigint value", () => {
123
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isBigInt(v)).toStrictEqual(false)));
124
- });
125
- it("coerces bigint values", () => {
126
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.bigInt(), (v) => expect(util_1.default.types.toBigInt(v.toString())).toStrictEqual(v)));
127
- });
128
- it("throws when coercing non-bigint values", () => {
129
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(() => util_1.default.types.toBigInt(v)).toThrow("cannot be coerced to bigint")));
130
- });
131
- });
132
- describe("date", () => {
133
- const invalidValues = fast_check_1.default.oneof(
134
- // Filter out numerical strings as many of those are valid enough for ISO
135
- // TODO: Figure out if this is fine or if we should only accept specific formats
136
- fast_check_1.default.string().filter((v) => !Number.parseInt(v)));
137
- it("detects date value", () => {
138
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.date(), (v) => expect(util_1.default.types.isDate(v)).toStrictEqual(true)));
139
- });
140
- it("detects non-date value", () => {
141
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isDate(v)).toStrictEqual(false)));
142
- });
143
- it("coerces date values", () => {
144
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.date(), (v) => expect(util_1.default.types.toDate(v.toISOString())).toStrictEqual(v)));
145
- });
146
- it("throws when coercing non-date values", () => {
147
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(() => util_1.default.types.toDate(v)).toThrow("cannot be coerced to date")));
148
- });
149
- });
150
- describe("url", () => {
151
- const invalidValues = fast_check_1.default.oneof(fast_check_1.default.string());
152
- it("detects url value", () => {
153
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.oneof(fast_check_1.default.webUrl(), fast_check_1.default.domain().map((v) => `https://${v}`)), (v) => expect(util_1.default.types.isUrl(v)).toStrictEqual(true)));
154
- });
155
- it("detects non-url value", () => {
156
- fast_check_1.default.assert(fast_check_1.default.property(invalidValues, (v) => expect(util_1.default.types.isUrl(v)).toStrictEqual(false)));
157
- });
158
- });
159
- describe("buffer data payload", () => {
160
- it("detects buffer data payload", () => {
161
- const payloadTypes = fast_check_1.default.record({
162
- data: bufferArbitrary,
163
- contentType: fast_check_1.default.string(),
164
- });
165
- fast_check_1.default.assert(fast_check_1.default.property(payloadTypes, (v) => {
166
- expect(util_1.default.types.isBufferDataPayload(v)).toStrictEqual(true);
167
- }));
168
- });
169
- it("coerces string to plain text buffer", () => {
170
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.string(), (v) => {
171
- expect(util_1.default.types.toBufferDataPayload(v)).toMatchObject({
172
- data: Buffer.from(v, "utf-8"),
173
- contentType: "text/plain",
174
- });
175
- }));
176
- });
177
- it("serializes data to JSON and coerces to json text buffer", () => {
178
- const jsonTypes = fast_check_1.default.oneof(fast_check_1.default.array(fast_check_1.default.anything()), fast_check_1.default.object());
179
- fast_check_1.default.assert(fast_check_1.default.property(jsonTypes, (v) => expect(util_1.default.types.toBufferDataPayload(v)).toMatchObject({
180
- data: Buffer.from(JSON.stringify(v), "utf-8"),
181
- contentType: "application/json",
182
- })));
183
- });
184
- it("directly returns DataPayload", () => {
185
- const payloadTypes = fast_check_1.default.record({
186
- data: bufferArbitrary,
187
- contentType: fast_check_1.default.string(),
188
- suggestedExtension: fast_check_1.default.oneof(fast_check_1.default.constant(undefined), fast_check_1.default.string()),
189
- });
190
- fast_check_1.default.assert(fast_check_1.default.property(payloadTypes, (v) => expect(util_1.default.types.toBufferDataPayload(v)).toStrictEqual(v)));
191
- });
192
- it("returns buffer with unknown content type", () => {
193
- fast_check_1.default.assert(fast_check_1.default.property(bufferArbitrary, (v) => expect(util_1.default.types.toBufferDataPayload(v)).toMatchObject({
194
- data: v,
195
- contentType: "application/octet-stream",
196
- })));
197
- });
198
- it("handles Uint8Array as a Buffer", () => {
199
- fast_check_1.default.assert(fast_check_1.default.property(uint8ArrayArbitrary, (v) => expect(util_1.default.types.toBufferDataPayload(v)).toMatchObject({
200
- data: Buffer.from(v),
201
- contentType: "application/octet-stream",
202
- })));
203
- });
204
- });
205
- describe("data", () => {
206
- it("detects data payload", () => {
207
- const payloadTypes = fast_check_1.default.record({
208
- data: bufferArbitrary,
209
- contentType: fast_check_1.default.string(),
210
- });
211
- fast_check_1.default.assert(fast_check_1.default.property(payloadTypes, (v) => {
212
- expect(util_1.default.types.isData(v)).toStrictEqual(true);
213
- }));
214
- });
215
- it("coerces string to plain text buffer", () => {
216
- fast_check_1.default.assert(fast_check_1.default.property(fast_check_1.default.string(), (v) => {
217
- expect(util_1.default.types.toData(v)).toMatchObject({
218
- data: Buffer.from(v, "utf-8"),
219
- contentType: "text/plain",
220
- });
221
- }));
222
- });
223
- it("serializes data to JSON and coerces to json text buffer", () => {
224
- const jsonTypes = fast_check_1.default.oneof(fast_check_1.default.array(fast_check_1.default.anything()), fast_check_1.default.object());
225
- fast_check_1.default.assert(fast_check_1.default.property(jsonTypes, (v) => expect(util_1.default.types.toData(v)).toMatchObject({
226
- data: Buffer.from(JSON.stringify(v), "utf-8"),
227
- contentType: "application/json",
228
- })));
229
- });
230
- it("directly returns DataPayload", () => {
231
- const payloadTypes = fast_check_1.default.record({
232
- data: bufferArbitrary,
233
- contentType: fast_check_1.default.string(),
234
- suggestedExtension: fast_check_1.default.oneof(fast_check_1.default.constant(undefined), fast_check_1.default.string()),
235
- });
236
- fast_check_1.default.assert(fast_check_1.default.property(payloadTypes, (v) => expect(util_1.default.types.toData(v)).toStrictEqual(v)));
237
- });
238
- it("returns buffer with unknown content type", () => {
239
- fast_check_1.default.assert(fast_check_1.default.property(bufferArbitrary, (v) => expect(util_1.default.types.toData(v)).toMatchObject({
240
- data: v,
241
- contentType: "application/octet-stream",
242
- })));
243
- });
244
- it("handles Uint8Array as a Buffer", () => {
245
- fast_check_1.default.assert(fast_check_1.default.property(uint8ArrayArbitrary, (v) => expect(util_1.default.types.toData(v)).toMatchObject({
246
- data: Buffer.from(v),
247
- contentType: "application/octet-stream",
248
- })));
249
- });
250
- });
251
- describe("string", () => {
252
- it("coerces plain text buffer to string", () => {
253
- fast_check_1.default.assert(fast_check_1.default.property(bufferArbitrary, (v) => {
254
- expect(util_1.default.types.toString(v)).toStrictEqual(v.toString());
255
- }));
256
- });
257
- it("coerces unknown value to empty string", () => {
258
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => {
259
- expect(util_1.default.types.toString(v)).toStrictEqual("");
260
- }));
261
- });
262
- it("coerces unknown value to given default string", () => {
263
- fast_check_1.default.assert(fast_check_1.default.property(unknowns(), (v) => {
264
- expect(util_1.default.types.toString(v, "hello, world")).toStrictEqual("hello, world");
265
- }));
266
- });
267
- });
268
- //TODO add an arbitrary for KeyValueList to test unique values
269
- describe("KeyValueList", () => {
270
- it("coerces KeyValueList to object", () => {
271
- fast_check_1.default.assert(fast_check_1.default.property(bufferArbitrary, () => {
272
- const fakeData = [
273
- { key: "foo", value: "bar" },
274
- { key: "myKey", value: "myValue" },
275
- ];
276
- const expectedData = { foo: "bar", myKey: "myValue" };
277
- expect(util_1.default.types.keyValPairListToObject(fakeData)).toStrictEqual(expectedData);
278
- }));
279
- });
280
- it("handles KeyValueList as undefined", () => {
281
- fast_check_1.default.assert(fast_check_1.default.property(bufferArbitrary, () => {
282
- expect(util_1.default.types.keyValPairListToObject(undefined)).toStrictEqual({});
283
- }));
284
- });
285
- });
286
- const validJSON = fast_check_1.default.jsonObject().map((x) => JSON.stringify(x));
287
- const invalidJSON = fast_check_1.default.constantFrom("", "['']", "someString", null, undefined);
288
- describe("JSON", () => {
289
- it("returns true in the case of actual JSON", () => {
290
- fast_check_1.default.assert(fast_check_1.default.property(validJSON, (v) => {
291
- expect(util_1.default.types.isJSON(v)).toStrictEqual(true);
292
- }));
293
- });
294
- it("returns false in the case of invalid JSON", () => {
295
- fast_check_1.default.assert(fast_check_1.default.property(invalidJSON, (v) => {
296
- expect(util_1.default.types.isJSON(util_1.default.types.toString(v))).toStrictEqual(false);
297
- }));
298
- });
299
- describe("JSON", () => {
300
- it("returns true in the case of actual JSON", () => {
301
- expect(util_1.default.types.lowerCaseHeaders({ "Content-Type": "Application/Json" })).toStrictEqual({ "content-type": "Application/Json" });
302
- });
303
- });
304
- });
305
- });