Skip to content

Commit 3fecf04

Browse files
authored
Add js to imports and fix dsnp export paths (#39)
Problem ======= To make sure that the generated javascript can be used directly with node 16+ and in browsers when using es modules, we needed to use the full path See: https://nodejs.org/dist/latest-v14.x/docs/api/esm.html#esm_resolution_algorithm Solution ======== - Added the `.js` - Added the linter to enforce it Steps to Verify: ---------------- 1. `npm run build` 1. See that the outputs are correct 1. `cd dist && npm pack` 1. Install the generated dsnp-frequency-schemas-0.0.0.tgz file in a package that runs with node js
1 parent f77612b commit 3fecf04

28 files changed

+62
-50
lines changed

.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,6 @@
5252
}
5353
],
5454
"allow-namespace": "off",
55+
"import/extensions": ["error", "always", { "ignorePackages": true } ]
5556
}
5657
}

cli/deploy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { getFrequencyAPI, getSignerAccountKeys } from "./services/connect";
2-
import dsnp, { SchemaName as DsnpSchemaName } from "../dsnp";
1+
import { getFrequencyAPI, getSignerAccountKeys } from "./services/connect.js";
2+
import dsnp, { SchemaName as DsnpSchemaName } from "../dsnp/index.js";
33
import { EventRecord } from "@polkadot/types/interfaces";
44

55
export const deploy = async () => {

cli/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { deploy } from "./deploy";
1+
import { deploy } from "./deploy.js";
22

33
export const main = async () => {
44
await deploy();

cli/read.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { getEndpoint, getFrequencyAPI } from "./services/connect";
1+
import { getEndpoint, getFrequencyAPI } from "./services/connect.js";
22

33
import stringify from "json-stringify-pretty-compact";
44

5-
import { schemas } from "../dsnp";
5+
import { schemas } from "../dsnp/index.js";
66

77
const nameAndSchema = Array.from(schemas.entries(), ([k, v]) => [`dsnp.${k}`, JSON.stringify(v.model)]);
88

dsnp/broadcast.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import broadcastSchema from "./broadcast";
3+
import broadcastSchema from "./broadcast.js";
44

55
describe("Broadcast Spec", () => {
66
testParquetSchema(broadcastSchema);

dsnp/broadcast.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const broadcast: FrequencyParquetSchema = [
44
{

dsnp/graphChange.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import graphChangeSchema from "./graphChange";
1+
import graphChangeSchema from "./graphChange.js";
22
import avro from "avro-js";
33

44
describe("Graph Change Schema", () => {

dsnp/index.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

3-
import broadcast from "./broadcast";
3+
import broadcast from "./broadcast.js";
44
// Deprecated
5-
// import graphChange from "./dsnp/graphChange";
6-
import profile from "./profile";
7-
import reaction from "./reaction";
8-
import reply from "./reply";
9-
import tombstone from "./tombstone";
10-
import publicKey from "./publicKey";
11-
import userPublicFollows from "./userPublicFollows";
12-
import userPrivateFollows from "./userPrivateFollows";
13-
import userPrivateConnections from "./userPrivateConnections";
14-
import update from "./update";
5+
// import graphChange from "./dsnp/graphChange.js";
6+
import profile from "./profile.js";
7+
import reaction from "./reaction.js";
8+
import reply from "./reply.js";
9+
import tombstone from "./tombstone.js";
10+
import publicKey from "./publicKey.js";
11+
import userPublicFollows from "./userPublicFollows.js";
12+
import userPrivateFollows from "./userPrivateFollows.js";
13+
import userPrivateConnections from "./userPrivateConnections.js";
14+
import update from "./update.js";
1515

1616
export {
1717
broadcast,

dsnp/profile.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import profileSchema from "./profile";
3+
import profileSchema from "./profile.js";
44

55
describe("Profile Spec", () => {
66
testParquetSchema(profileSchema);

dsnp/profile.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const profile: FrequencyParquetSchema = [
44
{

dsnp/publicKey.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import publicKeySchema from "./publicKey";
1+
import publicKeySchema from "./publicKey.js";
22
import avro from "avro-js";
33

44
describe("Public Key Schema", () => {

dsnp/reaction.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import reactionSchema from "./reaction";
3+
import reactionSchema from "./reaction.js";
44

55
describe("Reaction Spec", () => {
66
testParquetSchema(reactionSchema);

dsnp/reaction.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const reaction: FrequencyParquetSchema = [
44
{

dsnp/reply.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import replySchema from "./reply";
3+
import replySchema from "./reply.js";
44

55
describe("Reply Spec", () => {
66
testParquetSchema(replySchema);

dsnp/reply.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const reply: FrequencyParquetSchema = [
44
{

dsnp/tombstone.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import tombstoneSchema from "./tombstone";
3+
import tombstoneSchema from "./tombstone.js";
44

55
describe("Tombstone Spec", () => {
66
testParquetSchema(tombstoneSchema);

dsnp/tombstone.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const tombstone: FrequencyParquetSchema = [
44
{

dsnp/update.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { testCompression, testParquetSchema } from "../test/parquet";
1+
import { testCompression, testParquetSchema } from "../test/parquet.js";
22
import * as generators from "@dsnp/test-generators";
3-
import updateSchema from "./update";
3+
import updateSchema from "./update.js";
44

55
describe("Update Spec", () => {
66
testParquetSchema(updateSchema);

dsnp/update.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FrequencyParquetSchema } from "../types/frequency";
1+
import { FrequencyParquetSchema } from "../types/frequency.js";
22

33
const update: FrequencyParquetSchema = [
44
{

dsnp/userPrivateConnections.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import privateConnectionsSchema from "./userPrivateConnections";
1+
import privateConnectionsSchema from "./userPrivateConnections.js";
22
import avro from "avro-js";
33

44
describe("Private Connections Schema", () => {

dsnp/userPrivateFollows.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import privateFollowsSchema from "./userPrivateFollows";
1+
import privateFollowsSchema from "./userPrivateFollows.js";
22
import avro from "avro-js";
33

44
describe("Private Follows Schema", () => {

dsnp/userPublicFollows.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import publicFollowsSchema from "./userPublicFollows";
1+
import publicFollowsSchema from "./userPublicFollows.js";
22
import avro from "avro-js";
33

44
describe("Public Follows Schema", () => {

index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * as dsnp from "./dsnp";
2-
export * as parquet from "./parquet";
1+
export * as dsnp from "./dsnp/index.js";
2+
export * as parquet from "./parquet.js";

jest.config.cjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@ module.exports = {
22
verbose: true,
33
preset: 'ts-jest',
44
testEnvironment: 'jsdom',
5-
setupFiles: ["./test/jestSetup.cjs"]
5+
setupFiles: ["./test/jestSetup.cjs"],
6+
moduleNameMapper: {
7+
"^(\\.\\.?\\/.+)\\.js$": "$1"
8+
}
69
};

parquet.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fs from "fs";
22
import { ParquetWriter, ParquetReader } from "@dsnp/parquetjs";
3-
import { fromFrequencySchema } from "./parquet";
4-
import { broadcast } from "./dsnp";
3+
import { fromFrequencySchema } from "./parquet.js";
4+
import { broadcast } from "./dsnp/index.js";
55

66
describe("Frequency Schema Conversion Test File", () => {
77
const [parquetSchema, writerOptions] = fromFrequencySchema(broadcast);

parquet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { ParquetSchema } from "@dsnp/parquetjs";
22
import type { ParquetType, FieldDefinition, SchemaDefinition, WriterOptions } from "@dsnp/parquetjs/dist/lib/declare";
33
import type { createSBBFParams } from "@dsnp/parquetjs/dist/lib/bloomFilterIO/bloomFilterWriter";
4-
import { FrequencyParquetSchema, FrequencyParquetType, ParquetColumn } from "./types/frequency";
5-
import * as dsnp from "./dsnp";
4+
import { FrequencyParquetSchema, FrequencyParquetType, ParquetColumn } from "./types/frequency.js";
5+
import * as dsnp from "./dsnp/index.js";
66

77
/**
88
* All supported types from Parquetjs

scripts/package.cjs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ rootPackage["exports"] = {
3333
};
3434

3535
// Submodules
36-
["parquet", "dsnp/index", "cli/deploy"].forEach((sub) => {
36+
["parquet", "cli/deploy"].forEach((sub) => {
3737
rootPackage["exports"][`./${sub}`] = {
3838
types: `./${sub}.d.ts`,
3939
require: `./cjs/${sub}.js`,
@@ -42,6 +42,14 @@ rootPackage["exports"] = {
4242
};
4343
});
4444

45+
// DSNP module
46+
rootPackage["exports"][`./dsnp`] = {
47+
types: `./dsnp/index.d.ts`,
48+
require: `./cjs/dsnp/index.js`,
49+
import: `./esm/dsnp/index.js`,
50+
default: `./esm/dsnp/index.js`,
51+
};
52+
4553
// Write it out
4654
fs.writeFileSync(`${path.join(__dirname, "../dist", "package.json")}`, JSON.stringify(rootPackage, null, 2), (err) => {
4755
if (err) throw new Error(err);

test/parquet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/* eslint-disable jest/no-export */
22
import fs from "fs";
33
import { ParquetWriter } from "@dsnp/parquetjs";
4-
import { FrequencyParquetSchema } from "../types/frequency";
5-
import { fromFrequencySchema } from "../parquet";
4+
import { FrequencyParquetSchema } from "../types/frequency.js";
5+
import { fromFrequencySchema } from "../parquet.js";
66

77
type RowGenerator = () => Record<string, unknown>;
88

0 commit comments

Comments
 (0)