Skip to content

Commit 5f83cb7

Browse files
committed
fixes dist/ imports, adds prettier config, converts more test files to ts
1 parent 828334d commit 5f83cb7

File tree

8 files changed

+108
-67
lines changed

8 files changed

+108
-67
lines changed

.prettierignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Ignore artifacts:
2+
.vscode
3+
README.md
4+
package.json
5+
package-lock.json
6+
dist/
7+
.idea/

.prettierrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"trailingComma": "all",
3+
"useTabs": true,
4+
"semi": true,
5+
"singleQuote": false,
6+
"bracketSpacing": true,
7+
"printWidth": 100
8+
}

index.mjs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
* this files is the entry point for rollup to bundle the library
33
* it exports all the classes and functions as named exports
44
*/
5-
import AgentSender from "./src/AgentSender.js";
65
import Batch from "./src/Batch.js";
76
import ClientBuilder from "./src/ClientBuilder.js";
87
import buildClient from "./src/util/buildClients.js";
9-
import Request from "./src/Request.js";
108
import SharedCredentials from "./src/SharedCredentials.js";
119
import StaticCredentials from "./src/StaticCredentials.js";
1210
import Errors from "./src/Errors.js";
@@ -35,11 +33,9 @@ import LookupUSEnrichment from "./src/us_enrichment/Lookup.js";
3533
import ResponseUSEnrichment from "./src/us_enrichment/Response.js";
3634

3735
export const core = {
38-
AgentSender,
3936
Batch,
4037
ClientBuilder,
4138
buildClient,
42-
Request,
4339
SharedCredentials,
4440
StaticCredentials,
4541
Errors,

package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"@types/node": "^22.15.17",
6060
"chai": "^4.3.6",
6161
"mocha": "^11.2.2",
62+
"prettier": "3.6.2",
6263
"rollup": "^4.40.2",
6364
"rollup-plugin-delete": "^3.0.1",
6465
"tsx": "^4.20.3",

tests/test_AgentSender.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
import { expect } from "chai";
2-
import * as SmartySDK from "../dist/esm/index.mjs";
2+
import AgentSender from "../src/AgentSender.js";
3+
import Request from "../src/Request.js";
4+
import Response from "../src/Response.js";
5+
import { Sender } from "../src/types.js";
36
import packageJson from "../package.json" with { type: "json" };
47

58
describe("An agent sender", function () {
69
it("attaches an 'agent' parameter to the request config.", function () {
7-
class MockSender {
10+
class MockSender implements Sender {
811
agentString = "";
912

10-
send = (request: any) => {
11-
this.agentString = request.parameters.agent;
13+
send = (request: Request) => {
14+
this.agentString = (request.parameters as Record<string, string>)["agent"];
15+
return Promise.resolve(new Response(200, {}));
1216
};
1317
}
1418

1519
const mockSender = new MockSender();
16-
const agentSender = new SmartySDK.core.AgentSender(mockSender);
17-
const request = new SmartySDK.core.Request();
20+
const agentSender = new AgentSender(mockSender);
21+
const request = new Request();
1822
const expectedAgentString = `smarty (sdk:javascript@${packageJson.version})`;
1923

2024
agentSender.send(request);

tests/test_RetrySender.js renamed to tests/test_RetrySender.ts

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,51 @@
1-
const chai = require("chai");
2-
const expect = chai.expect;
3-
const RetrySender = require("../dist/cjs/RetrySender.cjs").default;
4-
const { MockSenderWithStatusCodesAndHeaders } = require("./fixtures/mock_senders");
5-
const Request = require("../src/Request.js");
6-
const MockSleeper = require("./fixtures/MockSleeper.js");
7-
8-
async function sendWithRetry(retries, inner, sleeper) {
1+
import { expect } from "chai";
2+
import RetrySender from "../src/RetrySender.js";
3+
import { MockSenderWithStatusCodesAndHeaders } from "./fixtures/mock_senders.js";
4+
import Request from "../src/Request.js";
5+
import MockSleeper from "./fixtures/MockSleeper.js";
6+
7+
async function sendWithRetry(retries: number, inner: any, sleeper: any) {
98
const request = new Request();
109
const sender = new RetrySender(retries, inner, sleeper);
1110
return await sender.send(request);
1211
}
1312

1413
describe("Retry Sender tests", function () {
1514
it("test success does not retry", async function () {
16-
let inner = new MockSenderWithStatusCodesAndHeaders(["200"]);
15+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["200"]);
1716
await sendWithRetry(5, inner, new MockSleeper());
1817

1918
expect(inner.currentStatusCodeIndex).to.equal(1);
2019
});
2120

2221
it("test client error does not retry", async function () {
23-
let inner = new MockSenderWithStatusCodesAndHeaders(["422"]);
22+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["422"]);
2423
await sendWithRetry(5, inner, new MockSleeper());
2524

2625
expect(inner.currentStatusCodeIndex).to.equal(1);
2726
});
2827

2928
it("test will retry until success", async function () {
30-
let inner = new MockSenderWithStatusCodesAndHeaders(["500", "500", "500", "200", "500"]);
29+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)([
30+
"500",
31+
"500",
32+
"500",
33+
"200",
34+
"500",
35+
]);
3136
await sendWithRetry(10, inner, new MockSleeper());
3237

3338
expect(inner.currentStatusCodeIndex).to.equal(4);
3439
});
3540

3641
it("test return response if retry limit exceeded", async function () {
37-
let inner = new MockSenderWithStatusCodesAndHeaders(["500", "500", "500", "500", "500"]);
42+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)([
43+
"500",
44+
"500",
45+
"500",
46+
"500",
47+
"500",
48+
]);
3849
const sleeper = new MockSleeper();
3950
const response = await sendWithRetry(4, inner, sleeper);
4051

@@ -45,7 +56,7 @@ describe("Retry Sender tests", function () {
4556
});
4657

4758
it("test backoff does not exceed max", async function () {
48-
let inner = new MockSenderWithStatusCodesAndHeaders([
59+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)([
4960
"500",
5061
"500",
5162
"500",
@@ -69,14 +80,14 @@ describe("Retry Sender tests", function () {
6980
});
7081

7182
it("test empty status does not retry", async function () {
72-
let inner = new MockSenderWithStatusCodesAndHeaders([]);
83+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)([]);
7384
await sendWithRetry(5, inner, new MockSleeper());
7485

7586
expect(inner.currentStatusCodeIndex).to.equal(1);
7687
});
7788

7889
it("test sleep on rate limit", async function () {
79-
let inner = new MockSenderWithStatusCodesAndHeaders(["429", "200"]);
90+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["429", "200"]);
8091
const sleeper = new MockSleeper();
8192

8293
await sendWithRetry(5, inner, sleeper);
@@ -85,7 +96,7 @@ describe("Retry Sender tests", function () {
8596
});
8697

8798
it("test rate limit error return", async function () {
88-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], { "Retry-After": 7 });
99+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["429"], { "Retry-After": 7 });
89100
const sleeper = new MockSleeper();
90101

91102
await sendWithRetry(10, inner, sleeper);
@@ -94,7 +105,7 @@ describe("Retry Sender tests", function () {
94105
});
95106

96107
it("test retry after invalid value", async function () {
97-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], { "Retry-After": "a" });
108+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["429"], { "Retry-After": "a" });
98109
const sleeper = new MockSleeper();
99110

100111
await sendWithRetry(10, inner, sleeper);
@@ -103,11 +114,11 @@ describe("Retry Sender tests", function () {
103114
});
104115

105116
it("test retry error", async function () {
106-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], undefined, "Big Bad");
117+
let inner = new (MockSenderWithStatusCodesAndHeaders as any)(["429"], undefined, "Big Bad");
107118
const sleeper = new MockSleeper();
108119

109120
const response = await sendWithRetry(10, inner, sleeper);
110121

111122
expect(response.error).to.equal("Big Bad");
112123
});
113-
});
124+
});

tsconfig.json

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,38 @@
11
{
2-
"compilerOptions": {
3-
"emitDeclarationOnly": true,
4-
"declaration": true,
5-
"outDir": "dist/types",
6-
"baseUrl": ".",
7-
"paths": {
8-
"@/*": ["./*"]
9-
},
10-
"allowJs": true,
11-
"alwaysStrict": true,
12-
"exactOptionalPropertyTypes": true,
13-
"noPropertyAccessFromIndexSignature": true,
14-
"noImplicitAny": true,
15-
"noImplicitReturns": true,
16-
"noImplicitOverride": true,
17-
"noFallthroughCasesInSwitch": true,
18-
"allowUnreachableCode": false,
19-
"allowUnusedLabels": false,
20-
"noImplicitThis": true,
21-
"noUnusedLocals": true,
22-
"noUnusedParameters": true,
23-
"forceConsistentCasingInFileNames": true,
24-
"skipLibCheck": true,
25-
"strict": true,
26-
"noEmit": true,
27-
"incremental": true,
28-
"module": "esnext",
29-
"esModuleInterop": true,
30-
"moduleResolution": "node",
31-
"resolveJsonModule": true,
32-
"isolatedModules": true,
33-
"jsx": "preserve",
34-
"types": ["mocha", "chai", "node"]
35-
},
36-
"include": ["src/**/*", "tests/**/*.ts"],
37-
"exclude": [
38-
"node_modules"
39-
]
2+
"compilerOptions": {
3+
"emitDeclarationOnly": true,
4+
"declaration": true,
5+
"outDir": "dist/types",
6+
"baseUrl": ".",
7+
"paths": {
8+
"@/*": ["./*"]
9+
},
10+
"allowJs": true,
11+
"alwaysStrict": true,
12+
"exactOptionalPropertyTypes": true,
13+
"noPropertyAccessFromIndexSignature": true,
14+
"noImplicitAny": true,
15+
"noImplicitReturns": true,
16+
"noImplicitOverride": true,
17+
"noFallthroughCasesInSwitch": true,
18+
"allowUnreachableCode": false,
19+
"allowUnusedLabels": false,
20+
"noImplicitThis": true,
21+
"noUnusedLocals": true,
22+
"noUnusedParameters": true,
23+
"forceConsistentCasingInFileNames": true,
24+
"skipLibCheck": true,
25+
"strict": true,
26+
"noEmit": true,
27+
"incremental": true,
28+
"module": "esnext",
29+
"esModuleInterop": true,
30+
"moduleResolution": "node",
31+
"resolveJsonModule": true,
32+
"isolatedModules": true,
33+
"jsx": "preserve",
34+
"types": ["mocha", "chai", "node"]
35+
},
36+
"include": ["src/**/*", "tests/**/*"],
37+
"exclude": ["node_modules"]
4038
}

0 commit comments

Comments
 (0)