@pureq/pureq 1.0.0 → 1.0.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pureq/pureq",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Functional, immutable, and type-safe HTTP client layer with middleware composition.",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -38,7 +38,8 @@
38
38
  "middleware",
39
39
  "retry",
40
40
  "circuit-breaker",
41
- "typescript"
41
+ "typescript",
42
+ "security"
42
43
  ],
43
44
  "author": "shiro-shihi",
44
45
  "license": "MIT",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.integration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.integration.d.ts","sourceRoot":"","sources":["../../tests/client.integration.ts"],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createClient, retry } from "../src/index";
3
- describe("integration: client flow", () => {
4
- afterEach(() => {
5
- vi.restoreAllMocks();
6
- });
7
- it("composes retry + hooks + json helper in a single request flow", async () => {
8
- let calls = 0;
9
- const retryEvents = [];
10
- const successRetryCounts = [];
11
- vi.spyOn(globalThis, "fetch").mockImplementation(async () => {
12
- calls += 1;
13
- if (calls === 1) {
14
- return new Response("temporary", { status: 500 });
15
- }
16
- return new Response(JSON.stringify({ id: "u1", name: "Alice" }), {
17
- status: 200,
18
- headers: { "content-type": "application/json" },
19
- });
20
- });
21
- const client = createClient({
22
- hooks: {
23
- onRequestSuccess: (event) => {
24
- successRetryCounts.push(event.retryCount);
25
- },
26
- },
27
- }).use(retry({
28
- maxRetries: 2,
29
- delay: 1,
30
- backoff: false,
31
- onRetry: (event) => {
32
- retryEvents.push(event.attempt);
33
- },
34
- }));
35
- const user = await client.getJson("https://example.com/users/:id", {
36
- params: { id: "u1" },
37
- });
38
- expect(user).toEqual({ id: "u1", name: "Alice" });
39
- expect(calls).toBe(2);
40
- expect(retryEvents).toEqual([1]);
41
- expect(successRetryCounts).toEqual([1]);
42
- });
43
- });
44
- //# sourceMappingURL=client.integration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.integration.js","sourceRoot":"","sources":["../../tests/client.integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,kBAAkB,GAAa,EAAE,CAAC;QAExC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YAC1D,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;gBAC/D,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,KAAK,EAAE;gBACL,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC1B,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;aACF;SACF,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC;YACJ,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;SACF,CAAC,CACH,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAA+B,+BAA+B,EAAE;YAC/F,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=public-api.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-api.contract.d.ts","sourceRoot":"","sources":["../../tests/public-api.contract.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import * as pureq from "../src/index";
3
- describe("contract: public api", () => {
4
- it("exports required stable surface", () => {
5
- expect(typeof pureq.createClient).toBe("function");
6
- expect(typeof pureq.retry).toBe("function");
7
- expect(typeof pureq.compose).toBe("function");
8
- expect(typeof pureq.execute).toBe("function");
9
- expect(typeof pureq.executeResult).toBe("function");
10
- expect(typeof pureq.HttpResponse).toBe("function");
11
- expect(typeof pureq.toPureqError).toBe("function");
12
- });
13
- });
14
- //# sourceMappingURL=public-api.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-api.contract.js","sourceRoot":"","sources":["../../tests/public-api.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=retry.stress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.stress.d.ts","sourceRoot":"","sources":["../../tests/retry.stress.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { createClient, retry } from "../src/index";
3
- describe("stress: retry loop", () => {
4
- afterEach(() => {
5
- vi.restoreAllMocks();
6
- });
7
- it("handles repeated request cycles without state leakage", async () => {
8
- vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response("ok", { status: 200 }));
9
- const client = createClient().use(retry({
10
- maxRetries: 1,
11
- delay: 0,
12
- backoff: false,
13
- }));
14
- const iterations = 200;
15
- for (let i = 0; i < iterations; i++) {
16
- const result = await client.getResult("https://example.com/ping");
17
- expect(result.ok).toBe(true);
18
- }
19
- });
20
- });
21
- //# sourceMappingURL=retry.stress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.stress.js","sourceRoot":"","sources":["../../tests/retry.stress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC,GAAG,CAC/B,KAAK,CAAC;YACJ,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}