Skip to content

Commit 671f701

Browse files
author
Wes Biggs
committed
Revert from using .json to .ts files for schemas to avoid CJS/ESM incompatibility with import assertions.
1 parent 178f2ba commit 671f701

29 files changed

+355
-324
lines changed

announcements.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import broadcast from "./parquet/broadcast.json";
2-
import reaction from "./parquet/reaction.json";
3-
import reply from "./parquet/reply.json";
4-
import tombstone from "./parquet/tombstone.json";
5-
import update from "./parquet/update.json";
1+
import broadcast from "./parquet/broadcast.js";
2+
import reaction from "./parquet/reaction.js";
3+
import reply from "./parquet/reply.js";
4+
import tombstone from "./parquet/tombstone.js";
5+
import update from "./parquet/update.js";
66

77
import { DSNPParquetSchema } from "./types/dsnp-parquet.js";
88

@@ -25,31 +25,31 @@ export function descriptorForAnnouncementType(announcementType: AnnouncementType
2525
case AnnouncementType.Tombstone:
2626
return {
2727
announcementType: AnnouncementType.Tombstone,
28-
parquetSchema: tombstone as DSNPParquetSchema,
28+
parquetSchema: tombstone,
2929
tombstoneAllowed: false,
3030
};
3131
case AnnouncementType.Broadcast:
3232
return {
3333
announcementType: AnnouncementType.Broadcast,
34-
parquetSchema: broadcast as DSNPParquetSchema,
34+
parquetSchema: broadcast,
3535
tombstoneAllowed: true,
3636
};
3737
case AnnouncementType.Reply:
3838
return {
3939
announcementType: AnnouncementType.Reply,
40-
parquetSchema: reply as DSNPParquetSchema,
40+
parquetSchema: reply,
4141
tombstoneAllowed: true,
4242
};
4343
case AnnouncementType.Reaction:
4444
return {
4545
announcementType: AnnouncementType.Reaction,
46-
parquetSchema: reaction as DSNPParquetSchema,
46+
parquetSchema: reaction,
4747
tombstoneAllowed: false,
4848
};
4949
case AnnouncementType.Update:
5050
return {
5151
announcementType: AnnouncementType.Update,
52-
parquetSchema: update as DSNPParquetSchema,
52+
parquetSchema: update,
5353
tombstoneAllowed: false,
5454
};
5555
}

avro/GraphEdge.json

Lines changed: 0 additions & 18 deletions
This file was deleted.

avro/GraphEdge.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import graphEdgeSchema from "./GraphEdge.json";
2-
import { Type, Schema } from "avsc";
1+
import graphEdgeSchema from "./GraphEdge.js";
2+
import avro from "avsc";
33

44
describe("Graph Edge Schema", () => {
55
it("Is Avro", () => {
6-
const parsed = Type.forSchema(graphEdgeSchema as Schema);
6+
const parsed = avro.Type.forSchema(graphEdgeSchema);
77
expect(parsed).toBeDefined();
88
});
99

1010
it("Encodes and decodes object", () => {
11-
const parsed = Type.forSchema(graphEdgeSchema as Schema);
11+
const parsed = avro.Type.forSchema(graphEdgeSchema);
1212
const encoded = parsed.toBuffer({ userId: 123456789, since: 1722524715 });
1313
const decoded = parsed.fromBuffer(encoded);
1414
expect(decoded.userId).toStrictEqual(123456789);

avro/GraphEdge.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Schema } from "avsc";
2+
3+
const GraphEdge: Schema = {
4+
namespace: "org.dsnp",
5+
name: "GraphEdge",
6+
type: "record",
7+
doc: "A relationship to another DSNP user",
8+
fields: [
9+
{
10+
name: "userId",
11+
type: "long",
12+
doc: "The other user's DSNP User Id",
13+
},
14+
{
15+
name: "since",
16+
type: "long",
17+
doc: "Timestamp in Unix epoch seconds when this relationship was originally established",
18+
},
19+
],
20+
};
21+
22+
export default GraphEdge;

avro/PRId.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

avro/PRId.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import pridSchema from "./PRId.json";
2-
import { Type, Schema } from "avsc";
1+
import pridSchema from "./PRId.js";
2+
import avro from "avsc";
33

44
describe("PRId Schema", () => {
55
it("Is Avro", () => {
6-
const parsed = Type.forSchema(pridSchema as Schema);
6+
const parsed = avro.Type.forSchema(pridSchema);
77
expect(parsed).toBeDefined();
88
});
99

1010
it("Encodes and decodes buffer", () => {
11-
const parsed = Type.forSchema(pridSchema as Schema);
11+
const parsed = avro.Type.forSchema(pridSchema);
1212
const someBytes = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7]);
1313
const encoded = parsed.toBuffer(someBytes);
1414
const decoded = parsed.fromBuffer(encoded);

avro/PRId.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Schema } from "avsc";
2+
3+
const PRId: Schema = {
4+
namespace: "org.dsnp",
5+
name: "PRId",
6+
type: "fixed",
7+
size: 8,
8+
doc: "Pseudonymous Relationship Identifier",
9+
};
10+
11+
export default PRId;

avro/ProfileResource.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import profileResourceSchema from "./ProfileResource.json";
2-
import { Type, Schema } from "avsc";
1+
import profileResourceSchema from "./ProfileResource.js";
2+
import { Type } from "avsc";
33

44
describe("Profile Resource Schema", () => {
55
it("Is Avro", () => {
6-
const parsed = Type.forSchema(profileResourceSchema as Schema);
6+
const parsed = Type.forSchema(profileResourceSchema);
77
expect(parsed).toBeDefined();
88
});
99

1010
it("Encodes and decodes object", () => {
11-
const parsed = Type.forSchema(profileResourceSchema as Schema);
11+
const parsed = Type.forSchema(profileResourceSchema);
1212
const exampleCid = "bafybeida7z24mig7j3oagjru7s2gw6xbfkh7fryvah6ho2ar77xb7aleom";
1313
const encoded = parsed.toBuffer({
1414
type: 1,

avro/ProfileResource.json renamed to avro/ProfileResource.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
{
1+
import { Schema } from "avsc";
2+
3+
const ProfileResource: Schema = {
24
"namespace": "org.dsnp",
35
"name": "ProfileResource",
46
"type": "record",
@@ -15,4 +17,7 @@
1517
"doc": "Content address for the resource"
1618
}
1719
]
18-
}
20+
};
21+
22+
export default ProfileResource;
23+

avro/PublicKey.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

avro/PublicKey.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import publicKeySchema from "./PublicKey.json";
2-
import { Type, Schema } from "avsc";
1+
import publicKeySchema from "./PublicKey.js";
2+
import avro from "avsc";
33

44
describe("Public Key Schema", () => {
55
it("Is Avro", () => {
6-
const parsed = Type.forSchema(publicKeySchema as Schema);
6+
const parsed = avro.Type.forSchema(publicKeySchema);
77
expect(parsed).toBeDefined();
88
});
99

1010
it("Encodes and decodes object", () => {
11-
const parsed = Type.forSchema(publicKeySchema as Schema);
11+
const parsed = avro.Type.forSchema(publicKeySchema);
1212
const someBytes = Buffer.from([0, 1, 2, 3]);
1313
const encoded = parsed.toBuffer({ publicKey: someBytes });
1414
const decoded = parsed.fromBuffer(encoded);

avro/PublicKey.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Schema } from "avsc";
2+
3+
const PublicKey: Schema = {
4+
type: "record",
5+
name: "PublicKey",
6+
namespace: "org.dsnp",
7+
fields: [
8+
// When converting from Frequency Data to DSNP Announcement, assume:
9+
// - announcementType = 7
10+
// - fromId = [Associated MSA Id]
11+
// - keyType = 1 for keyAgreement (used for graph encryption/decryption and PRIds), or
12+
// keyType = 2 for assertionMethod (used for credential signatures)
13+
// - keyId = `index` from the Itemized storage
14+
// DID Key Id could be publicKey or could be the index of the array. Not user assigned
15+
{
16+
name: "publicKey",
17+
doc: "Multicodec public key",
18+
type: "bytes",
19+
},
20+
],
21+
};
22+
23+
export default PublicKey;

parquet/broadcast.json

Lines changed: 0 additions & 36 deletions
This file was deleted.

parquet/broadcast.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import broadcastSchema from "./broadcast.json";
4-
import { DSNPParquetSchema } from "../types/dsnp-parquet.js";
3+
import broadcastSchema from "./broadcast.js";
54

65
describe("Broadcast Spec", () => {
7-
testParquetSchema(broadcastSchema as DSNPParquetSchema);
6+
testParquetSchema(broadcastSchema);
87

9-
testCompression("broadcast", broadcastSchema as DSNPParquetSchema, () => ({
8+
testCompression("broadcast", broadcastSchema, () => ({
109
announcementType: 2,
1110
contentHash: generators.generateHash(),
1211
fromId: generators.randInt(10000000),

parquet/broadcast.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { DSNPParquetSchema } from "../types/dsnp-parquet.js";
2+
3+
const broadcast: DSNPParquetSchema = [
4+
{
5+
name: "announcementType",
6+
column_type: {
7+
INTEGER: {
8+
bit_width: 32,
9+
sign: true,
10+
},
11+
},
12+
compression: "GZIP",
13+
bloom_filter: false,
14+
},
15+
{
16+
name: "contentHash",
17+
column_type: "BYTE_ARRAY",
18+
compression: "GZIP",
19+
bloom_filter: true,
20+
},
21+
{
22+
name: "fromId",
23+
column_type: {
24+
INTEGER: {
25+
bit_width: 64,
26+
sign: false,
27+
},
28+
},
29+
compression: "GZIP",
30+
bloom_filter: true,
31+
},
32+
{
33+
name: "url",
34+
column_type: "STRING",
35+
compression: "GZIP",
36+
bloom_filter: false,
37+
},
38+
];
39+
40+
export default broadcast;

parquet/reaction.json

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)