@ingram-tech/nk-marketing 0.2.4 → 0.3.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/dist/client.d.ts.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/wire.d.ts +35 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +63 -0
- package/dist/wire.js.map +1 -0
- package/package.json +5 -5
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAA+C,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAEN,KAAK,oBAAoB,EAGzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,eAAe,EAEf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC/B,+EAA+E;IAC/E,EAAE,EAAE,SAAS,CAAC;IACd,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAKD,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAA+C,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAEN,KAAK,oBAAoB,EAGzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,eAAe,EAEf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC/B,+EAA+E;IAC/E,EAAE,EAAE,SAAS,CAAC;IACd,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAKD,eAAO,MAAM,eAAe,WAAY,eAAe;wBAiBrB,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC;8BAmB5B,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAoBtC,gBAAgB,KAAG,OAAO,CAAC,YAAY,CAAC;yBA4CxC,MAAM,KAAG,OAAO,CAAC,iBAAiB,CAAC;6BA8F3D,gBAAgB,KACvB,OAAO,CAAC,eAAe,CAAC;6BA2FjB,gBAAgB,KACvB,OAAO,CAAC,eAAe,CAAC;CAgD3B,CAAC"}
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,SAAS;IAGzB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAC;CAC1B;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,SAAS;IAGzB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAC;CAC1B;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,MAAoC,CAAC;AAMpF,+EAA+E;AAC/E,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MAM5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAO,MAAyC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createMarketing, type MarketingConfig } from "./client.js";
|
|
2
2
|
export { type Queryable } from "./db.js";
|
|
3
3
|
export { derivePreviewText, type MarketingRenderInput, renderMarketingHtml, renderMarketingText, } from "./render.js";
|
|
4
|
+
export { subscribeToWire, type WireSubscribeOptions, type WireSubscribeStatus, } from "./wire.js";
|
|
4
5
|
export type { Audience, BroadcastOptions, BroadcastResult, Contact, Cta, IdentifyOptions, LifecycleOptions, LifecycleResult, Sender, SubscribeOptions, Subscription, UnsubscribeResult, } from "./types.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EACN,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,GAAG,EACH,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GACjB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EACN,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACxB,MAAM,WAAW,CAAC;AACnB,YAAY,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,GAAG,EACH,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAEpE,OAAO,EACN,iBAAiB,EAEjB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAEpE,OAAO,EACN,iBAAiB,EAEjB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,eAAe,GAGf,MAAM,WAAW,CAAC"}
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IACjB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IACjB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,UAAW,oBAAoB,KAAG,MAuBjE,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,UAAW,oBAAoB,KAAG,MAGgC,CAAC;AAEnG,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,MAUnD,CAAC"}
|
package/dist/wire.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client for Wire (wire.ingram.tech) — the central multi-tenant newsletter
|
|
3
|
+
* service. A site forwards a signup to Wire with its tenant API key
|
|
4
|
+
* (`WIRE_API_KEY`, server-side only); the key resolves the tenant, and the
|
|
5
|
+
* signup lands on that tenant's list. Zero-dependency (global `fetch`), so any
|
|
6
|
+
* consumer can call it without pulling Wire's own stack.
|
|
7
|
+
*
|
|
8
|
+
* Keep the send best-effort at the call site — a Wire outage must never break
|
|
9
|
+
* the site's own signup flow:
|
|
10
|
+
*
|
|
11
|
+
* import { subscribeToWire } from "@ingram-tech/nk-marketing";
|
|
12
|
+
* await subscribeToWire({ email, source: "ingram.tech" }).catch((e) =>
|
|
13
|
+
* console.error("Wire forward failed:", e));
|
|
14
|
+
*/
|
|
15
|
+
export interface WireSubscribeOptions {
|
|
16
|
+
email: string;
|
|
17
|
+
/** List slug within the tenant. Defaults to `WIRE_LIST`, then "newsletter". */
|
|
18
|
+
list?: string;
|
|
19
|
+
/** Attribution for where the signup came from. */
|
|
20
|
+
source?: string;
|
|
21
|
+
/** Hold the subscription pending an emailed confirm link (double opt-in). */
|
|
22
|
+
doubleOptIn?: boolean;
|
|
23
|
+
/** Tenant API key. Defaults to `process.env.WIRE_API_KEY`. */
|
|
24
|
+
apiKey?: string;
|
|
25
|
+
/** Wire base URL. Defaults to `WIRE_BASE_URL`, then https://wire.ingram.tech. */
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
}
|
|
28
|
+
export type WireSubscribeStatus = "subscribed" | "pending" | "already";
|
|
29
|
+
/**
|
|
30
|
+
* Forward a signup to Wire. Returns the resulting status, or `null` when no API
|
|
31
|
+
* key is configured (so a site with Wire unset simply no-ops). Throws on a
|
|
32
|
+
* transport/HTTP error — wrap at the call site to keep it best-effort.
|
|
33
|
+
*/
|
|
34
|
+
export declare function subscribeToWire(opts: WireSubscribeOptions): Promise<WireSubscribeStatus | null>;
|
|
35
|
+
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAevE;;;;GAIG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,oBAAoB,GACxB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA+BrC"}
|
package/dist/wire.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client for Wire (wire.ingram.tech) — the central multi-tenant newsletter
|
|
3
|
+
* service. A site forwards a signup to Wire with its tenant API key
|
|
4
|
+
* (`WIRE_API_KEY`, server-side only); the key resolves the tenant, and the
|
|
5
|
+
* signup lands on that tenant's list. Zero-dependency (global `fetch`), so any
|
|
6
|
+
* consumer can call it without pulling Wire's own stack.
|
|
7
|
+
*
|
|
8
|
+
* Keep the send best-effort at the call site — a Wire outage must never break
|
|
9
|
+
* the site's own signup flow:
|
|
10
|
+
*
|
|
11
|
+
* import { subscribeToWire } from "@ingram-tech/nk-marketing";
|
|
12
|
+
* await subscribeToWire({ email, source: "ingram.tech" }).catch((e) =>
|
|
13
|
+
* console.error("Wire forward failed:", e));
|
|
14
|
+
*/
|
|
15
|
+
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
16
|
+
/** Validate Wire's response body without a cast (this package stays
|
|
17
|
+
* zero-dependency, so no Zod): unknown shapes resolve to `null`. */
|
|
18
|
+
function parseWireStatus(body) {
|
|
19
|
+
if (!isRecord(body))
|
|
20
|
+
return null;
|
|
21
|
+
const { status } = body;
|
|
22
|
+
return status === "subscribed" || status === "pending" || status === "already"
|
|
23
|
+
? status
|
|
24
|
+
: null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Forward a signup to Wire. Returns the resulting status, or `null` when no API
|
|
28
|
+
* key is configured (so a site with Wire unset simply no-ops). Throws on a
|
|
29
|
+
* transport/HTTP error — wrap at the call site to keep it best-effort.
|
|
30
|
+
*/
|
|
31
|
+
export async function subscribeToWire(opts) {
|
|
32
|
+
const apiKey = opts.apiKey ?? process.env.WIRE_API_KEY;
|
|
33
|
+
if (!apiKey)
|
|
34
|
+
return null;
|
|
35
|
+
const baseUrl = opts.baseUrl ?? process.env.WIRE_BASE_URL ?? "https://wire.ingram.tech";
|
|
36
|
+
const res = await fetch(`${baseUrl}/api/subscribe`, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: {
|
|
39
|
+
authorization: `Bearer ${apiKey}`,
|
|
40
|
+
"content-type": "application/json",
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify({
|
|
43
|
+
email: opts.email,
|
|
44
|
+
list: opts.list ?? process.env.WIRE_LIST,
|
|
45
|
+
source: opts.source,
|
|
46
|
+
doubleOptIn: opts.doubleOptIn,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
if (!res.ok) {
|
|
50
|
+
const detail = await res.text().catch(() => "");
|
|
51
|
+
throw new Error(`Wire subscribe failed: ${res.status} ${detail}`.trim());
|
|
52
|
+
}
|
|
53
|
+
let body;
|
|
54
|
+
try {
|
|
55
|
+
body = await res.json();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// A 200 with a non-JSON body carries no status to report.
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return parseWireStatus(body);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=wire.js.map
|
package/dist/wire.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAkBH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACrE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE7C;qEACqE;AACrE,SAAS,eAAe,CAAC,IAAa;IACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,OAAO,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAC7E,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,CAAC;AACT,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,IAA0B;IAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GACZ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,0BAA0B,CAAC;IAEzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,gBAAgB,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,cAAc,EAAE,kBAAkB;SAClC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;YACxC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACJ,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,0DAA0D;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ingram-tech/nk-marketing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Postgres-backed marketing & lifecycle email: contacts, consent, newsletter audiences, and idempotent triggered campaigns with RFC 8058 one-click unsubscribe. Sends via @ingram-tech/nk-email.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"@ingram-tech/nk-email": "^0.3.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@ingram-tech/nk-dev": "0.
|
|
36
|
-
"@types/node": "^26.
|
|
37
|
-
"typescript": "^
|
|
38
|
-
"vitest": "^4.1.
|
|
35
|
+
"@ingram-tech/nk-dev": "0.5.0",
|
|
36
|
+
"@types/node": "^26.1.1",
|
|
37
|
+
"typescript": "^7.0.2",
|
|
38
|
+
"vitest": "^4.1.10"
|
|
39
39
|
}
|
|
40
40
|
}
|