@llmgateway/models 1.194.0 → 1.195.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.
@@ -0,0 +1,136 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { getOrganizationEnvVariant, getProviderEnvValue, getRegionSpecificEnvVarName, getVariantEnvVarName, getVariantEnvVarNameFor, } from "./provider.js";
3
+ const BASE = "LLM_ALIBABA_API_KEY";
4
+ const ENTERPRISE = `${BASE}__ENTERPRISE`;
5
+ const PLANS = `${BASE}__PLANS`;
6
+ const REGIONAL = `${BASE}__US_VIRGINIA`;
7
+ const ENTERPRISE_REGIONAL = `${BASE}__ENTERPRISE__US_VIRGINIA`;
8
+ const PLANS_REGIONAL = `${BASE}__PLANS__US_VIRGINIA`;
9
+ const VERTEX_PROJECT = "LLM_GOOGLE_CLOUD_PROJECT";
10
+ describe("variant env var helpers", () => {
11
+ beforeEach(() => {
12
+ for (const name of [
13
+ BASE,
14
+ ENTERPRISE,
15
+ PLANS,
16
+ REGIONAL,
17
+ ENTERPRISE_REGIONAL,
18
+ PLANS_REGIONAL,
19
+ VERTEX_PROJECT,
20
+ `${VERTEX_PROJECT}__ENTERPRISE`,
21
+ `${VERTEX_PROJECT}__PLANS`,
22
+ ]) {
23
+ vi.stubEnv(name, undefined);
24
+ }
25
+ });
26
+ afterEach(() => {
27
+ vi.unstubAllEnvs();
28
+ });
29
+ describe("getVariantEnvVarName", () => {
30
+ it("returns the variant var name only when it is set", () => {
31
+ expect(getVariantEnvVarName("alibaba", "enterprise")).toBeUndefined();
32
+ expect(getVariantEnvVarName("alibaba", "plans")).toBeUndefined();
33
+ vi.stubEnv(ENTERPRISE, "sk-ent");
34
+ vi.stubEnv(PLANS, "sk-dev");
35
+ expect(getVariantEnvVarName("alibaba", "enterprise")).toBe(ENTERPRISE);
36
+ expect(getVariantEnvVarName("alibaba", "plans")).toBe(PLANS);
37
+ });
38
+ it("returns undefined without a variant or for unknown providers", () => {
39
+ vi.stubEnv(ENTERPRISE, "sk-ent");
40
+ expect(getVariantEnvVarName("alibaba", undefined)).toBeUndefined();
41
+ expect(getVariantEnvVarName("not-a-provider", "enterprise")).toBeUndefined();
42
+ });
43
+ });
44
+ describe("getVariantEnvVarNameFor", () => {
45
+ it("applies to arbitrary env var names", () => {
46
+ vi.stubEnv(`${VERTEX_PROJECT}__PLANS`, "plans-project");
47
+ expect(getVariantEnvVarNameFor(VERTEX_PROJECT, "plans")).toBe(`${VERTEX_PROJECT}__PLANS`);
48
+ expect(getVariantEnvVarNameFor(VERTEX_PROJECT, "enterprise")).toBeUndefined();
49
+ });
50
+ });
51
+ describe("getProviderEnvValue with variant", () => {
52
+ it("reads the variant list at the config index", () => {
53
+ vi.stubEnv(VERTEX_PROJECT, "base-project-a,base-project-b");
54
+ vi.stubEnv(`${VERTEX_PROJECT}__ENTERPRISE`, "ent-project-a,ent-project-b");
55
+ expect(getProviderEnvValue("google-vertex", "project", 1)).toBe("base-project-b");
56
+ expect(getProviderEnvValue("google-vertex", "project", 1, undefined, "enterprise")).toBe("ent-project-b");
57
+ expect(getProviderEnvValue("google-vertex", "project", 0, undefined, "plans")).toBe("base-project-a");
58
+ });
59
+ it("returns the default when neither variant nor base var is set", () => {
60
+ expect(getProviderEnvValue("google-vertex", "region", 0, "global", "plans")).toBe("global");
61
+ });
62
+ });
63
+ describe("getRegionSpecificEnvVarName with variant", () => {
64
+ it("prefers the variant-regional var for matching orgs", () => {
65
+ vi.stubEnv(REGIONAL, "sk-region");
66
+ vi.stubEnv(ENTERPRISE_REGIONAL, "sk-ent-region");
67
+ vi.stubEnv(PLANS_REGIONAL, "sk-dev-region");
68
+ expect(getRegionSpecificEnvVarName("alibaba", "us-virginia", "enterprise")).toBe(ENTERPRISE_REGIONAL);
69
+ expect(getRegionSpecificEnvVarName("alibaba", "us-virginia", "plans")).toBe(PLANS_REGIONAL);
70
+ });
71
+ it("falls back to the shared regional var when no variant-regional var is set", () => {
72
+ vi.stubEnv(REGIONAL, "sk-region");
73
+ expect(getRegionSpecificEnvVarName("alibaba", "us-virginia", "enterprise")).toBe(REGIONAL);
74
+ });
75
+ it("never returns a variant-regional name without a variant", () => {
76
+ vi.stubEnv(REGIONAL, "sk-region");
77
+ vi.stubEnv(ENTERPRISE_REGIONAL, "sk-ent-region");
78
+ expect(getRegionSpecificEnvVarName("alibaba", "us-virginia")).toBe(REGIONAL);
79
+ });
80
+ it("returns undefined when no regional var is set, even with a plain variant var", () => {
81
+ vi.stubEnv(ENTERPRISE, "sk-ent");
82
+ expect(getRegionSpecificEnvVarName("alibaba", "us-virginia", "enterprise")).toBeUndefined();
83
+ });
84
+ });
85
+ describe("getOrganizationEnvVariant", () => {
86
+ it("maps enterprise-plan orgs to the enterprise variant", () => {
87
+ expect(getOrganizationEnvVariant({
88
+ plan: "enterprise",
89
+ kind: "default",
90
+ devPlan: "none",
91
+ })).toBe("enterprise");
92
+ });
93
+ it("maps DevPass orgs to the plans variant", () => {
94
+ expect(getOrganizationEnvVariant({
95
+ plan: "free",
96
+ kind: "devpass",
97
+ devPlan: "pro",
98
+ })).toBe("plans");
99
+ });
100
+ it("maps Chat plan orgs to the plans variant", () => {
101
+ expect(getOrganizationEnvVariant({
102
+ plan: "free",
103
+ kind: "chat",
104
+ devPlan: "none",
105
+ chatPlan: "plus",
106
+ })).toBe("plans");
107
+ });
108
+ it("prefers enterprise when an org matches both", () => {
109
+ expect(getOrganizationEnvVariant({
110
+ plan: "enterprise",
111
+ kind: "devpass",
112
+ devPlan: "pro",
113
+ })).toBe("enterprise");
114
+ });
115
+ it("returns undefined for regular orgs, inactive plans, and missing orgs", () => {
116
+ expect(getOrganizationEnvVariant({
117
+ plan: "pro",
118
+ kind: "default",
119
+ devPlan: "none",
120
+ })).toBeUndefined();
121
+ expect(getOrganizationEnvVariant({
122
+ plan: "free",
123
+ kind: "devpass",
124
+ devPlan: "none",
125
+ })).toBeUndefined();
126
+ expect(getOrganizationEnvVariant({
127
+ plan: "free",
128
+ kind: "chat",
129
+ chatPlan: "none",
130
+ })).toBeUndefined();
131
+ expect(getOrganizationEnvVariant(null)).toBeUndefined();
132
+ expect(getOrganizationEnvVariant(undefined)).toBeUndefined();
133
+ });
134
+ });
135
+ });
136
+ //# sourceMappingURL=provider.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.spec.js","sourceRoot":"","sources":["../src/provider.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llmgateway/models",
3
- "version": "1.194.0",
3
+ "version": "1.195.1",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",