@traffical/node 0.9.0 → 0.10.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.
@@ -1 +1 @@
1
- {"version":3,"file":"event-logger.test.js","sourceRoot":"","sources":["../src/event-logger.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-logger.test.js","sourceRoot":"","sources":["../src/event-logger.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Malformed-bundle DISCARD (S8).
3
+ *
4
+ * A 200 response can still carry a structurally invalid bundle (truncated CDN
5
+ * write, partial deploy). Serving it would corrupt every bucket assignment, so
6
+ * `_fetchConfig` validates the hashing/shape and, on failure, discards the body,
7
+ * logs a rate-limited warning, and KEEPS the previous last-good bundle. These
8
+ * tests initialize against a good bundle, then feed a malformed 200 on refresh
9
+ * and assert the good bundle is still served.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=malformed-bundle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"malformed-bundle.test.d.ts","sourceRoot":"","sources":["../src/malformed-bundle.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Malformed-bundle DISCARD (S8).
3
+ *
4
+ * A 200 response can still carry a structurally invalid bundle (truncated CDN
5
+ * write, partial deploy). Serving it would corrupt every bucket assignment, so
6
+ * `_fetchConfig` validates the hashing/shape and, on failure, discards the body,
7
+ * logs a rate-limited warning, and KEEPS the previous last-good bundle. These
8
+ * tests initialize against a good bundle, then feed a malformed 200 on refresh
9
+ * and assert the good bundle is still served.
10
+ */
11
+ import { describe, test, expect, afterEach, mock } from "bun:test";
12
+ import { TrafficalClient } from "./client.js";
13
+ const originalFetch = globalThis.fetch;
14
+ const originalWarn = console.warn;
15
+ const goodBundle = {
16
+ version: "2024-01-01T00:00:00Z",
17
+ orgId: "org_test",
18
+ projectId: "proj_test",
19
+ env: "production",
20
+ hashing: { unitKey: "userId", bucketCount: 1000 },
21
+ parameters: [
22
+ { key: "ui.color", type: "string", default: "#AAA", layerId: "layer_1", namespace: "ui" },
23
+ ],
24
+ layers: [],
25
+ };
26
+ // bucketCount 0 is invalid (must be an integer >= 1).
27
+ const malformedBucketCount = {
28
+ version: "2024-09-09T00:00:00Z",
29
+ orgId: "org_test",
30
+ projectId: "proj_test",
31
+ env: "production",
32
+ hashing: { unitKey: "userId", bucketCount: 0 },
33
+ parameters: [
34
+ { key: "ui.color", type: "string", default: "#ZZZ", layerId: "layer_1", namespace: "ui" },
35
+ ],
36
+ layers: [],
37
+ };
38
+ // unitKey missing entirely.
39
+ const malformedMissingUnitKey = {
40
+ version: "2024-09-09T00:00:00Z",
41
+ orgId: "org_test",
42
+ projectId: "proj_test",
43
+ env: "production",
44
+ hashing: { bucketCount: 1000 },
45
+ parameters: [
46
+ { key: "ui.color", type: "string", default: "#ZZZ", layerId: "layer_1", namespace: "ui" },
47
+ ],
48
+ layers: [],
49
+ };
50
+ const clientOpts = {
51
+ orgId: "org_test",
52
+ projectId: "proj_test",
53
+ env: "production",
54
+ apiKey: "traffical_sk_test",
55
+ refreshIntervalMs: -1, // Disable background refresh; drive refetch manually.
56
+ trackDecisions: false,
57
+ };
58
+ /** Fetch mock that returns `bodies[callIndex]` (last body sticks) as a 200. */
59
+ function queuedFetch(bodies) {
60
+ let call = 0;
61
+ const fetchMock = mock(async () => {
62
+ const body = bodies[Math.min(call, bodies.length - 1)];
63
+ call++;
64
+ return {
65
+ ok: true,
66
+ status: 200,
67
+ statusText: "OK",
68
+ json: async () => body,
69
+ headers: new Headers({ ETag: `"v${call}"` }),
70
+ };
71
+ });
72
+ globalThis.fetch = fetchMock;
73
+ return fetchMock;
74
+ }
75
+ afterEach(() => {
76
+ globalThis.fetch = originalFetch;
77
+ console.warn = originalWarn;
78
+ });
79
+ describe("Node malformed-bundle DISCARD", () => {
80
+ test("bucketCount 0 on refresh is discarded; last-good bundle is still served", async () => {
81
+ const warnings = [];
82
+ console.warn = (...args) => warnings.push(args.map(String).join(" "));
83
+ queuedFetch([goodBundle, malformedBucketCount]);
84
+ const client = new TrafficalClient(clientOpts);
85
+ await client.initialize();
86
+ expect(client.getConfigVersion()).toBe("2024-01-01T00:00:00Z");
87
+ await client.refreshConfig();
88
+ // Malformed 200 discarded: version + resolved value stay on the good bundle.
89
+ expect(client.getConfigVersion()).toBe("2024-01-01T00:00:00Z");
90
+ const params = client.getParams({ userId: "user-1" }, { "ui.color": "#000" });
91
+ expect(params["ui.color"]).toBe("#AAA");
92
+ expect(warnings.some((w) => w.includes("malformed config bundle"))).toBe(true);
93
+ await client.destroy();
94
+ });
95
+ test("missing unitKey on refresh is discarded; last-good bundle is still served", async () => {
96
+ const warnings = [];
97
+ console.warn = (...args) => warnings.push(args.map(String).join(" "));
98
+ queuedFetch([goodBundle, malformedMissingUnitKey]);
99
+ const client = new TrafficalClient(clientOpts);
100
+ await client.initialize();
101
+ expect(client.getConfigVersion()).toBe("2024-01-01T00:00:00Z");
102
+ await client.refreshConfig();
103
+ expect(client.getConfigVersion()).toBe("2024-01-01T00:00:00Z");
104
+ const params = client.getParams({ userId: "user-1" }, { "ui.color": "#000" });
105
+ expect(params["ui.color"]).toBe("#AAA");
106
+ expect(warnings.some((w) => w.includes("malformed config bundle"))).toBe(true);
107
+ await client.destroy();
108
+ });
109
+ });
110
+ //# sourceMappingURL=malformed-bundle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"malformed-bundle.test.js","sourceRoot":"","sources":["../src/malformed-bundle.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tests for the Node SDK exposure path (enh #3 — parity with the browser SDK):
3
+ * - trackExposure() skips `attributionOnly` layers (experiments the user was
4
+ * assigned to for attribution but not actually shown).
5
+ * - trackExposure() deduplicates per (unit, policy, allocation) within a session.
6
+ * - getUnitKeyField() / getParameterLayerId() read the loaded bundle.
7
+ *
8
+ * Uses a two-layer bundle where every unit matches a policy in both layers.
9
+ * Requesting only `flagA` (layer_a) leaves layer_b resolved attribution-only.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=track-exposure.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-exposure.test.d.ts","sourceRoot":"","sources":["../src/track-exposure.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Tests for the Node SDK exposure path (enh #3 — parity with the browser SDK):
3
+ * - trackExposure() skips `attributionOnly` layers (experiments the user was
4
+ * assigned to for attribution but not actually shown).
5
+ * - trackExposure() deduplicates per (unit, policy, allocation) within a session.
6
+ * - getUnitKeyField() / getParameterLayerId() read the loaded bundle.
7
+ *
8
+ * Uses a two-layer bundle where every unit matches a policy in both layers.
9
+ * Requesting only `flagA` (layer_a) leaves layer_b resolved attribution-only.
10
+ */
11
+ import { describe, test, expect } from "bun:test";
12
+ import { TrafficalClient } from "./client.js";
13
+ const bundle = {
14
+ version: "2026-01-01T00:00:00Z",
15
+ orgId: "org_1",
16
+ projectId: "proj_1",
17
+ env: "production",
18
+ hashing: { unitKey: "userId", bucketCount: 1000 },
19
+ parameters: [
20
+ { key: "flagA", type: "string", default: "a-default", layerId: "layer_a", namespace: "" },
21
+ { key: "flagB", type: "string", default: "b-default", layerId: "layer_b", namespace: "" },
22
+ ],
23
+ layers: [
24
+ {
25
+ id: "layer_a",
26
+ policies: [
27
+ {
28
+ id: "pol_a",
29
+ state: "running",
30
+ kind: "static",
31
+ conditions: [],
32
+ allocations: [
33
+ { id: "alloc_a", name: "treatment", bucketRange: [0, 999], overrides: { flagA: "a-treatment" } },
34
+ ],
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ id: "layer_b",
40
+ policies: [
41
+ {
42
+ id: "pol_b",
43
+ state: "running",
44
+ kind: "static",
45
+ conditions: [],
46
+ allocations: [
47
+ { id: "alloc_b", name: "control", bucketRange: [0, 999], overrides: { flagB: "b-control" } },
48
+ ],
49
+ },
50
+ ],
51
+ },
52
+ ],
53
+ };
54
+ const baseOpts = {
55
+ orgId: "org_1",
56
+ projectId: "proj_1",
57
+ env: "production",
58
+ apiKey: "traffical_sk_test",
59
+ refreshIntervalMs: -1,
60
+ trackDecisions: false, // keep captured events to exposures only
61
+ disableCloudEvents: true,
62
+ localConfig: bundle,
63
+ };
64
+ describe("Node bundle accessors", () => {
65
+ test("getUnitKeyField / getParameterLayerId read from the bundle", () => {
66
+ const client = new TrafficalClient(baseOpts);
67
+ expect(client.getUnitKeyField()).toBe("userId");
68
+ expect(client.getParameterLayerId("flagA")).toBe("layer_a");
69
+ expect(client.getParameterLayerId("flagB")).toBe("layer_b");
70
+ expect(client.getParameterLayerId("nope")).toBeNull();
71
+ });
72
+ });
73
+ describe("Node trackExposure", () => {
74
+ test("skips attribution-only layers", async () => {
75
+ const events = [];
76
+ const client = new TrafficalClient({ ...baseOpts, eventLogger: (e) => events.push(e) });
77
+ // Request only flagA → layer_b resolves attribution-only.
78
+ const decision = client.decide({ context: { userId: "u1" }, defaults: { flagA: "x" } });
79
+ // sanity: the decision saw layer_b as attribution-only
80
+ expect(decision.metadata.layers.some((l) => l.attributionOnly)).toBe(true);
81
+ client.trackExposure(decision);
82
+ const exposures = events.filter((e) => e.type === "exposure");
83
+ expect(exposures).toHaveLength(1);
84
+ const policyIds = exposures[0].layers.map((l) => l.policyId);
85
+ expect(policyIds).toContain("pol_a"); // shown
86
+ expect(policyIds).not.toContain("pol_b"); // attribution-only → skipped
87
+ await client.destroy();
88
+ });
89
+ test("deduplicates repeated exposures for the same unit+policy+allocation", async () => {
90
+ const events = [];
91
+ const client = new TrafficalClient({ ...baseOpts, eventLogger: (e) => events.push(e) });
92
+ const decision = client.decide({ context: { userId: "u1" }, defaults: { flagA: "x" } });
93
+ client.trackExposure(decision);
94
+ client.trackExposure(decision); // duplicate → no second exposure event
95
+ expect(events.filter((e) => e.type === "exposure")).toHaveLength(1);
96
+ await client.destroy();
97
+ });
98
+ test("deduplicateExposures: false emits every exposure", async () => {
99
+ const events = [];
100
+ const client = new TrafficalClient({
101
+ ...baseOpts,
102
+ deduplicateExposures: false,
103
+ eventLogger: (e) => events.push(e),
104
+ });
105
+ const decision = client.decide({ context: { userId: "u1" }, defaults: { flagA: "x" } });
106
+ client.trackExposure(decision);
107
+ client.trackExposure(decision);
108
+ expect(events.filter((e) => e.type === "exposure")).toHaveLength(2);
109
+ await client.destroy();
110
+ });
111
+ });
112
+ //# sourceMappingURL=track-exposure.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-exposure.test.js","sourceRoot":"","sources":["../src/track-exposure.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,GAAiB;IAC3B,OAAO,EAAE,sBAAsB;IAC/B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,QAAQ;IACnB,GAAG,EAAE,YAAY;IACjB,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;IACjD,UAAU,EAAE;QACV,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QACzF,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;KAC1F;IACD,MAAM,EAAE;QACN;YACE,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE;wBACX,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;qBACjG;iBACF;aACF;SACF;QACD;YACE,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE;wBACX,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;qBAC7F;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,QAAQ;IACnB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,mBAAmB;IAC3B,iBAAiB,EAAE,CAAC,CAAC;IACrB,cAAc,EAAE,KAAK,EAAE,yCAAyC;IAChE,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,MAAM;CACpB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAExF,0DAA0D;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxF,uDAAuD;QACvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3E,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAClF,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;QAEvE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAExF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,uCAAuC;QAEvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,GAAG,QAAQ;YACX,oBAAoB,EAAE,KAAK;YAC3B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION = "0.9.0";
1
+ export declare const SDK_VERSION = "0.10.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,WAAW,CAAC"}
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Auto-generated from package.json — do not edit manually.
2
- export const SDK_VERSION = "0.9.0";
2
+ export const SDK_VERSION = "0.10.0";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traffical/node",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Traffical SDK for Node.js - HTTP client with caching and event tracking",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,12 +19,12 @@
19
19
  "build": "bun run generate-version && tsc",
20
20
  "generate-version": "bun run ../../scripts/generate-version.ts",
21
21
  "dev": "tsc --watch",
22
- "test": "bun test",
23
- "typecheck": "tsc --noEmit"
22
+ "test": "bun run generate-version && bun test",
23
+ "typecheck": "bun run generate-version && tsc --noEmit"
24
24
  },
25
25
  "dependencies": {
26
- "@traffical/core": "0.10.0",
27
- "@traffical/core-io": "0.6.0"
26
+ "@traffical/core": "0.11.0",
27
+ "@traffical/core-io": "0.6.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/bun": "latest",