stated-protocol-parser 1.0.7 → 5.0.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 (129) hide show
  1. package/README.md +231 -22
  2. package/dist/constants.d.ts +193 -15
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +197 -20
  5. package/dist/constants.js.map +1 -1
  6. package/dist/esm/constants.d.ts +193 -15
  7. package/dist/esm/constants.d.ts.map +1 -1
  8. package/dist/esm/{hash.browser.d.ts → hash.d.ts} +11 -5
  9. package/dist/esm/hash.d.ts.map +1 -0
  10. package/dist/esm/index.d.ts +4 -42
  11. package/dist/esm/index.d.ts.map +1 -1
  12. package/dist/esm/index.js +2102 -641
  13. package/dist/esm/index.js.map +7 -1
  14. package/dist/esm/protocol.d.ts +18 -30
  15. package/dist/esm/protocol.d.ts.map +1 -1
  16. package/dist/esm/signature.d.ts +49 -0
  17. package/dist/esm/signature.d.ts.map +1 -0
  18. package/dist/esm/types.d.ts +26 -60
  19. package/dist/esm/types.d.ts.map +1 -1
  20. package/dist/esm/utils.d.ts +10 -0
  21. package/dist/esm/utils.d.ts.map +1 -1
  22. package/dist/{hash.browser.d.ts → hash.d.ts} +11 -5
  23. package/dist/hash.d.ts.map +1 -0
  24. package/dist/{hash.browser.js → hash.js} +44 -10
  25. package/dist/hash.js.map +1 -0
  26. package/dist/index.d.ts +4 -42
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -674
  29. package/dist/index.js.map +1 -1
  30. package/dist/protocol.d.ts +18 -30
  31. package/dist/protocol.d.ts.map +1 -1
  32. package/dist/protocol.js +565 -572
  33. package/dist/protocol.js.map +1 -1
  34. package/dist/signature.d.ts +49 -0
  35. package/dist/signature.d.ts.map +1 -0
  36. package/dist/signature.js +169 -0
  37. package/dist/signature.js.map +1 -0
  38. package/dist/types.d.ts +26 -60
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js +27 -0
  41. package/dist/types.js.map +1 -1
  42. package/dist/utils.d.ts +10 -0
  43. package/dist/utils.d.ts.map +1 -1
  44. package/dist/utils.js +79 -11
  45. package/dist/utils.js.map +1 -1
  46. package/package.json +32 -27
  47. package/src/constants.ts +228 -44
  48. package/src/fixtures.test.ts +236 -0
  49. package/src/hash.test.ts +217 -215
  50. package/src/hash.ts +99 -0
  51. package/src/index.ts +5 -0
  52. package/src/organisation-verification.test.ts +50 -0
  53. package/src/person-verification.test.ts +55 -0
  54. package/src/poll.test.ts +28 -0
  55. package/src/protocol.ts +855 -650
  56. package/src/rating.test.ts +25 -0
  57. package/src/signature.test.ts +200 -0
  58. package/src/signature.ts +159 -0
  59. package/src/statement.test.ts +101 -0
  60. package/src/types.ts +155 -156
  61. package/src/utils.test.ts +140 -0
  62. package/src/utils.ts +102 -16
  63. package/dist/esm/constants.js +0 -47
  64. package/dist/esm/constants.js.map +0 -1
  65. package/dist/esm/hash.browser.d.ts.map +0 -1
  66. package/dist/esm/hash.browser.js +0 -58
  67. package/dist/esm/hash.browser.js.map +0 -1
  68. package/dist/esm/hash.node.d.ts +0 -31
  69. package/dist/esm/hash.node.d.ts.map +0 -1
  70. package/dist/esm/hash.node.js +0 -43
  71. package/dist/esm/hash.node.js.map +0 -1
  72. package/dist/esm/hash.test.d.ts +0 -2
  73. package/dist/esm/hash.test.d.ts.map +0 -1
  74. package/dist/esm/hash.test.js +0 -181
  75. package/dist/esm/hash.test.js.map +0 -1
  76. package/dist/esm/index.browser.d.ts +0 -3
  77. package/dist/esm/index.browser.d.ts.map +0 -1
  78. package/dist/esm/index.browser.js +0 -5
  79. package/dist/esm/index.browser.js.map +0 -1
  80. package/dist/esm/index.node.d.ts +0 -3
  81. package/dist/esm/index.node.d.ts.map +0 -1
  82. package/dist/esm/index.node.js +0 -5
  83. package/dist/esm/index.node.js.map +0 -1
  84. package/dist/esm/index.test.d.ts +0 -2
  85. package/dist/esm/index.test.d.ts.map +0 -1
  86. package/dist/esm/index.test.js +0 -293
  87. package/dist/esm/index.test.js.map +0 -1
  88. package/dist/esm/protocol.js +0 -639
  89. package/dist/esm/protocol.js.map +0 -1
  90. package/dist/esm/types.js +0 -2
  91. package/dist/esm/types.js.map +0 -1
  92. package/dist/esm/utils.js +0 -23
  93. package/dist/esm/utils.js.map +0 -1
  94. package/dist/esm/v3.d.ts +0 -5
  95. package/dist/esm/v3.d.ts.map +0 -1
  96. package/dist/esm/v3.js +0 -60
  97. package/dist/esm/v3.js.map +0 -1
  98. package/dist/hash.browser.d.ts.map +0 -1
  99. package/dist/hash.browser.js.map +0 -1
  100. package/dist/hash.node.d.ts +0 -31
  101. package/dist/hash.node.d.ts.map +0 -1
  102. package/dist/hash.node.js +0 -53
  103. package/dist/hash.node.js.map +0 -1
  104. package/dist/hash.test.d.ts +0 -2
  105. package/dist/hash.test.d.ts.map +0 -1
  106. package/dist/hash.test.js +0 -183
  107. package/dist/hash.test.js.map +0 -1
  108. package/dist/index.browser.d.ts +0 -3
  109. package/dist/index.browser.d.ts.map +0 -1
  110. package/dist/index.browser.js +0 -21
  111. package/dist/index.browser.js.map +0 -1
  112. package/dist/index.node.d.ts +0 -3
  113. package/dist/index.node.d.ts.map +0 -1
  114. package/dist/index.node.js +0 -21
  115. package/dist/index.node.js.map +0 -1
  116. package/dist/index.test.d.ts +0 -2
  117. package/dist/index.test.d.ts.map +0 -1
  118. package/dist/index.test.js +0 -295
  119. package/dist/index.test.js.map +0 -1
  120. package/dist/v3.d.ts +0 -5
  121. package/dist/v3.d.ts.map +0 -1
  122. package/dist/v3.js +0 -64
  123. package/dist/v3.js.map +0 -1
  124. package/src/hash.browser.ts +0 -65
  125. package/src/hash.node.ts +0 -47
  126. package/src/index.browser.ts +0 -4
  127. package/src/index.node.ts +0 -4
  128. package/src/index.test.ts +0 -378
  129. package/src/v3.ts +0 -62
@@ -1,293 +0,0 @@
1
- import { parseRating, parseStatement, parseOrganisationVerification, parsePersonVerification, parsePoll, parseQuotation, buildRating, buildStatement, buildPersonVerificationContent, buildPollContent, buildQuotationContent, buildOrganisationVerificationContent, } from './protocol';
2
- const randomUnicodeString = () => Array.from({ length: 20 }, () => String.fromCharCode(Math.floor(Math.random() * 65536)))
3
- .join('')
4
- .replace(/[\n;>=<"''\\]/g, '');
5
- test('parse statement', () => {
6
- const statement = `Publishing domain: localhost
7
- Author: chris
8
- Time: Tue, 18 Apr 2023 18:20:26 GMT
9
- Tags: hashtag1, hashtag2
10
- Format version: 4
11
- Statement content: hi
12
- `;
13
- const parsedStatement = parseStatement({ statement });
14
- expect(parsedStatement.content).toBe(`hi
15
- `);
16
- });
17
- test('statement build & parse function compatibility: input=parse(build(input))', () => {
18
- const [domain, author, representative, content, supersededStatement] = Array.from({ length: 5 }, randomUnicodeString);
19
- const tags = Array.from({ length: 4 }, randomUnicodeString);
20
- const contentWithTrailingNewline = content + (content.match(/\n$/) ? '' : '\n');
21
- const time = new Date('Sun, 04 Sep 2022 14:48:50 GMT');
22
- const statementContent = buildStatement({
23
- domain,
24
- author,
25
- time,
26
- content: contentWithTrailingNewline,
27
- representative,
28
- supersededStatement,
29
- tags,
30
- });
31
- const parsedStatement = parseStatement({ statement: statementContent });
32
- expect(parsedStatement.domain).toBe(domain);
33
- expect(parsedStatement.author).toBe(author);
34
- expect(parsedStatement.time?.toUTCString()).toBe(time.toUTCString());
35
- expect(parsedStatement.content).toBe(contentWithTrailingNewline);
36
- expect(parsedStatement.representative).toBe(representative);
37
- expect(parsedStatement.supersededStatement).toBe(supersededStatement);
38
- expect(parsedStatement.tags?.sort()).toStrictEqual(tags.sort());
39
- });
40
- test('parse quotation', () => {
41
- let quotation = `Publishing domain: rixdata.net
42
- Author: Example Inc.
43
- Time: Sun, 04 Sep 2022 14:48:50 GMT
44
- Format version: 4
45
- Statement content:
46
- Type: Quotation
47
- Original author: XYZ Company Inc.
48
- Author verification: eXoVsm2CdF5Ri-SEAr33RNkG3DBuehvFoDBQ_pO9CXE
49
- Original publication time: Sun, 04 Sep 2022 14:48:50 GMT
50
- Source: https://www.facebook.com/companyxzy/posts/XXXX
51
- Picture proof: 5HKiyQXGV4xavq-Nn9RXi_ndUH-2BEux3ccFIjaSk_8
52
- Confidence: 0.9
53
- Quotation: we give example.com a 2/5 star rating
54
- Paraphrased statement:
55
- Type: Rating
56
- Organisation name: example
57
- Organisation domain: example.com
58
- Our rating: 2/5 Stars
59
- `;
60
- const parsedStatement = parseStatement({ statement: quotation });
61
- const parsedQuotation = parseQuotation(parsedStatement.content);
62
- const type = parsedQuotation.type;
63
- expect(type).toBe('rating');
64
- });
65
- test('quotation build & parse function compatibility: input=parse(build(input))', () => {
66
- const [originalAuthor, source, picture, quotation, paraphrasedStatement] = Array.from({ length: 6 }, randomUnicodeString);
67
- const authorVerification = 'yXoVsm2CdF5Ri-SEAr33RNkG3DBuehvFoDBQ_pO9CXE';
68
- const originalTime = 'Sun, 04 Sep 2022 14:48:50 GMT';
69
- const confidence = '' + Math.random();
70
- const quotationContent = buildQuotationContent({
71
- originalAuthor,
72
- authorVerification,
73
- originalTime,
74
- source,
75
- picture,
76
- confidence,
77
- quotation,
78
- paraphrasedStatement,
79
- });
80
- const parsedQuotation = parseQuotation(quotationContent);
81
- expect(parsedQuotation.originalAuthor).toBe(originalAuthor);
82
- expect(parsedQuotation.originalTime).toBe(originalTime);
83
- expect(parsedQuotation.source).toBe(source);
84
- expect(parsedQuotation.picture).toBe(picture);
85
- expect(parsedQuotation.confidence).toBe(confidence);
86
- expect(parsedQuotation.quotation).toBe(quotation);
87
- expect(parsedQuotation.paraphrasedStatement?.replace(/\n$/, '')).toBe(paraphrasedStatement);
88
- expect(parsedQuotation.authorVerification).toBe(authorVerification);
89
- });
90
- test('parse organisation verification', () => {
91
- let organisationVerification = `Publishing domain: rixdata.net
92
- Author: Example Inc.
93
- Time: Sun, 04 Sep 2022 14:48:50 GMT
94
- Format version: 4
95
- Statement content:
96
- Type: Organisation verification
97
- Description: We verified the following information about an organisation.
98
- Name: Walmart Inc.
99
- Country: United States of America
100
- Legal entity: corporation
101
- Owner of the domain: walmart.com
102
- Province or state: Arkansas
103
- City: Bentonville
104
- `;
105
- const parsedStatement = parseStatement({
106
- statement: organisationVerification,
107
- });
108
- const parsedOVerification = parseOrganisationVerification(parsedStatement.content);
109
- const name = parsedOVerification.name;
110
- expect(name).toBe('Walmart Inc.');
111
- });
112
- test('organisation verification build & parse function compatibility: input=parse(build(input))', () => {
113
- const [name, englishName, city, domain, foreignDomain, serialNumber, reliabilityPolicy, pictureHash,] = Array.from({ length: 8 }, randomUnicodeString);
114
- const country = 'Germany';
115
- const province = 'Bayern';
116
- const legalForm = 'corporation';
117
- const employeeCount = '100-1000';
118
- const confidence = 0.8;
119
- const verificationContent = buildOrganisationVerificationContent({
120
- name,
121
- englishName,
122
- country,
123
- city,
124
- province,
125
- legalForm,
126
- domain,
127
- pictureHash,
128
- foreignDomain,
129
- serialNumber,
130
- confidence,
131
- reliabilityPolicy,
132
- employeeCount,
133
- });
134
- const parsedVerification = parseOrganisationVerification(verificationContent);
135
- expect(parsedVerification.name).toBe(name);
136
- expect(parsedVerification.englishName).toBe(englishName);
137
- expect(parsedVerification.country).toBe(country);
138
- expect(parsedVerification.city).toBe(city);
139
- expect(parsedVerification.province).toBe(province);
140
- expect(parsedVerification.legalForm).toBe(legalForm);
141
- expect(parsedVerification.domain).toBe(domain);
142
- expect(parsedVerification.foreignDomain).toBe(foreignDomain);
143
- expect(parsedVerification.serialNumber).toBe(serialNumber);
144
- expect(parsedVerification.confidence).toBe(confidence);
145
- expect(parsedVerification.pictureHash).toBe(pictureHash);
146
- expect(parsedVerification.reliabilityPolicy).toBe(reliabilityPolicy);
147
- expect(parsedVerification.employeeCount).toBe(employeeCount);
148
- });
149
- test('parse person verification', () => {
150
- let personVerification = `Publishing domain: rixdata.net
151
- Author: Example Inc.
152
- Time: Sun, 04 Sep 2022 14:48:50 GMT
153
- Format version: 4
154
- Statement content:
155
- Type: Person verification
156
- Description: We verified the following information about a person.
157
- Name: Barack Hossein Obama II
158
- Date of birth: 4 Aug 1961
159
- City of birth: Honolulu
160
- Country of birth: United States of America
161
- Owner of the domain: barackobama.com
162
- `;
163
- const parsedStatement = parseStatement({ statement: personVerification });
164
- const parsedPVerification = parsePersonVerification(parsedStatement.content);
165
- const name = parsedPVerification.name;
166
- expect(name).toBe('Barack Hossein Obama II');
167
- });
168
- test('person verification build & parse function compatibility: input=parse(build(input))', () => {
169
- const [name, ownDomain, foreignDomain, jobTitle, employer, verificationMethod, picture, reliabilityPolicy,] = Array.from({ length: 12 }, randomUnicodeString);
170
- const countryOfBirth = 'Germany';
171
- const cityOfBirth = 'Berlin';
172
- const confidence = Math.random();
173
- const dateOfBirth = new Date(0);
174
- const personVerificationContent = buildPersonVerificationContent({
175
- name,
176
- countryOfBirth,
177
- cityOfBirth,
178
- ownDomain,
179
- foreignDomain,
180
- dateOfBirth,
181
- jobTitle,
182
- employer,
183
- verificationMethod,
184
- confidence,
185
- picture,
186
- reliabilityPolicy,
187
- });
188
- const parsedVerification = parsePersonVerification(personVerificationContent);
189
- expect(parsedVerification.name).toBe(name);
190
- expect(parsedVerification.ownDomain).toBe(ownDomain);
191
- expect(parsedVerification.foreignDomain).toBe(foreignDomain);
192
- expect(parsedVerification.dateOfBirth.toUTCString()).toBe(dateOfBirth.toUTCString());
193
- expect(parsedVerification.jobTitle).toBe(jobTitle);
194
- expect(parsedVerification.employer).toBe(employer);
195
- expect(parsedVerification.verificationMethod).toBe(verificationMethod);
196
- expect(parsedVerification.confidence).toBe(confidence);
197
- expect(parsedVerification.picture).toBe(picture);
198
- expect(parsedVerification.reliabilityPolicy).toBe(reliabilityPolicy);
199
- expect(parsedVerification.countryOfBirth).toBe(countryOfBirth);
200
- expect(parsedVerification.cityOfBirth).toBe(cityOfBirth);
201
- });
202
- test('parse rating', () => {
203
- let rating = `Publishing domain: localhost
204
- Author: chris
205
- Time: Tue, 18 Apr 2023 18:20:26 GMT
206
- Format version: 4
207
- Statement content:
208
- Type: Rating
209
- Subject name: AMBOSS GmbH
210
- URL that identifies the subject: amboss.com
211
- Rated quality: AI safety
212
- Our rating: 5/5 Stars
213
- `;
214
- const parsedStatement = parseStatement({ statement: rating });
215
- const parsedRating = parseRating(parsedStatement.content);
216
- const ratingNumber = parsedRating.rating;
217
- expect(ratingNumber).toBe(5);
218
- const subjectName = parsedRating.subjectName;
219
- expect(subjectName).toBe('AMBOSS GmbH');
220
- const subjectReference = parsedRating.subjectReference;
221
- expect(subjectReference).toBe('amboss.com');
222
- const quality = parsedRating.quality;
223
- expect(quality).toBe('AI safety');
224
- });
225
- test('rating build & parse function compatibility: input=parse(build(input))', () => {
226
- const [subjectName, subjectReference, comment, quality] = Array.from({ length: 4 }, randomUnicodeString);
227
- const rating = Math.ceil(Math.random() * 5);
228
- const ratingContent = buildRating({ subjectName, subjectReference, rating, comment, quality });
229
- const parsedRating = parseRating(ratingContent);
230
- expect(parsedRating.subjectName).toBe(subjectName);
231
- expect(parsedRating.subjectReference).toBe(subjectReference);
232
- expect(parsedRating.quality).toBe(quality);
233
- expect(parsedRating.rating).toBe(rating);
234
- expect(parsedRating.comment).toBe(comment);
235
- });
236
- test('parse poll v4', () => {
237
- let poll = `Publishing domain: rixdata.net
238
- Author: Example Inc.
239
- Time: Thu, 17 Nov 2022 13:38:20 GMT
240
- Format version: 4
241
- Statement content:
242
- Type: Poll
243
- The poll outcome is finalized when the following nodes agree: rixdata.net
244
- Voting deadline: Thu, 01 Dec 2022 13:38:26 GMT
245
- Poll: Should the UK join the EU
246
- Option 1: Yes
247
- Option 2: No
248
- Who can vote:
249
- Description: All universities with a ROR ID
250
- Legal form scope: corporation
251
- All entities with the following property: ROR ID
252
- As observed by: Rix Data NL B.V.@rixdata.net
253
- Link to query defining who can vote: https://stated.rixdata.net/?search_query=%09Observed%20property:%20ROR%20ID%0A%09&domain=rixdata.net&author=Rix%20Data%20NL%20B.V.
254
- `;
255
- const parsedStatement = parseStatement({ statement: poll });
256
- const parsedPoll = parsePoll(parsedStatement.content);
257
- const pollTitle = parsedPoll.poll;
258
- expect(pollTitle).toBe('Should the UK join the EU');
259
- expect(parsedPoll.options[0]).toBe('Yes');
260
- expect(parsedPoll.options[1]).toBe('No');
261
- expect(parsedPoll.deadline?.toUTCString()).toBe('Thu, 01 Dec 2022 13:38:26 GMT');
262
- expect(parsedPoll.scopeDescription).toBe('All universities with a ROR ID');
263
- expect(parsedPoll.legalEntity).toBe('corporation');
264
- expect(parsedPoll.requiredProperty).toBe('ROR ID');
265
- expect(parsedPoll.requiredPropertyObserver).toBe('Rix Data NL B.V.@rixdata.net');
266
- expect(parsedPoll.scopeQueryLink).toBe('https://stated.rixdata.net/?search_query=%09Observed%20property:%20ROR%20ID%0A%09&domain=rixdata.net&author=Rix%20Data%20NL%20B.V.');
267
- });
268
- test('poll build & parse function compatibility: input=parse(build(input))', () => {
269
- const [country, city, legalEntity, judges, poll, scopeDescription] = Array.from({ length: 6 }, randomUnicodeString);
270
- const options = Array.from({ length: 2 }, randomUnicodeString);
271
- const domainScope = ['rixdata.net'];
272
- const deadline = new Date('Thu, 01 Dec 2022 13:38:26 GMT');
273
- const pollContent = buildPollContent({
274
- country,
275
- city,
276
- legalEntity,
277
- domainScope,
278
- judges,
279
- deadline,
280
- poll,
281
- options,
282
- scopeDescription,
283
- });
284
- const parsedPoll = parsePoll(pollContent);
285
- expect(parsedPoll.poll).toBe(poll);
286
- expect(parsedPoll.country).toBe(country);
287
- expect(parsedPoll.legalEntity).toBe(legalEntity);
288
- expect(parsedPoll.judges).toBe(judges);
289
- expect(parsedPoll.deadline?.toUTCString()).toBe(deadline.toUTCString());
290
- expect(parsedPoll.options[0]).toEqual(options[0]);
291
- expect(parsedPoll.options[1]).toEqual(options[1]);
292
- });
293
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"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"}