@pie-players/tts-server-sc 0.3.28 → 0.3.30

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/README.md CHANGED
@@ -32,6 +32,108 @@ bun add @pie-players/tts-server-sc
32
32
  - `apiKey`: signing key used to mint bearer JWT
33
33
  - `issuer`: JWT `iss` claim
34
34
 
35
+ ## Asset fetch allow-list (SSRF defense)
36
+
37
+ The provider validates every upstream-returned asset URL (audio and speech
38
+ marks) before fetching. The allow-list has two modes:
39
+
40
+ ### Default: same-registrable-domain as `baseUrl` (zero config)
41
+
42
+ If `assetOrigins` is not supplied, the provider permits:
43
+
44
+ - Exact match of `baseUrl`'s origin, and
45
+ - Any URL whose hostname shares the same registrable domain (eTLD+1) as
46
+ `baseUrl`.
47
+
48
+ This matches the common "service at `x.vendor.tld`, CDN at `y.vendor.tld`"
49
+ deployment (e.g. `baseUrl = https://tts.svcdev.schoolcity.com` permits
50
+ `https://tts-cdn.svcdev.schoolcity.com` out of the box) without opening the
51
+ provider up to arbitrary external hosts. The registrable domain is computed
52
+ via the Public Suffix List (`tldts`), so it is correct for multi-label TLDs
53
+ (`.co.uk`, `.com.au`, etc.). If `baseUrl` is an IP literal or a hostname
54
+ without a recognised public suffix, the provider falls back to strict
55
+ single-origin behavior.
56
+
57
+ ### Explicit (recommended for production): exact-origin allow-list
58
+
59
+ Passing a non-empty `assetOrigins` switches the allow-list to strict
60
+ exact-origin matching and disables the registrable-domain fallback:
61
+
62
+ ```ts
63
+ await provider.initialize({
64
+ baseUrl: process.env.TTS_SCHOOLCITY_URL!,
65
+ apiKey: process.env.TTS_SCHOOLCITY_API_KEY!,
66
+ issuer: process.env.TTS_SCHOOLCITY_ISS!,
67
+ assetOrigins: [
68
+ "https://tts.svcdev.schoolcity.com",
69
+ "https://tts-cdn.svcdev.schoolcity.com",
70
+ ],
71
+ });
72
+ ```
73
+
74
+ This is recommended for production because it gives an auditable,
75
+ typo-resistant declaration of exactly which CDNs the provider is permitted
76
+ to reach, and it rejects a compromised sibling host on the same registrable
77
+ domain.
78
+
79
+ To force strict single-origin behavior without listing any extras, pass
80
+ `assetOrigins: [baseUrl]`.
81
+
82
+ ### Private-network deployments (internal CDN / K8s / VPC / air-gapped)
83
+
84
+ The private-host guard is intentionally opt-out-able for deployments where
85
+ the TTS service and its assets legitimately live on a private network —
86
+ on-prem CDN, in-cluster Kubernetes service, VPC endpoint, air-gapped
87
+ install, etc. Disable the guard and supply an explicit `assetOrigins`
88
+ allow-list covering every internal host that may appear in responses:
89
+
90
+ ```ts
91
+ await provider.initialize({
92
+ baseUrl: "https://tts.internal.corp.local",
93
+ apiKey: process.env.TTS_SCHOOLCITY_API_KEY!,
94
+ issuer: process.env.TTS_SCHOOLCITY_ISS!,
95
+ blockPrivateAssetHosts: false,
96
+ assetOrigins: [
97
+ "https://tts.internal.corp.local",
98
+ "https://cdn.internal.corp.local",
99
+ ],
100
+ });
101
+ ```
102
+
103
+ Always pair `blockPrivateAssetHosts: false` with an explicit
104
+ `assetOrigins` list. Without one, a compromised or malicious upstream
105
+ response could redirect the provider to arbitrary internal hosts inside
106
+ your network boundary — which is exactly the SSRF class the guard
107
+ defends against.
108
+
109
+ Cloud-metadata / IMDS endpoints are always blocked (see below), even
110
+ when `blockPrivateAssetHosts` is `false`.
111
+
112
+ ### Always-on hardening (not configurable)
113
+
114
+ - `http:` / `https:` schemes only.
115
+ - Cloud-metadata / IMDS endpoints are always rejected —
116
+ `169.254.169.254`, `fd00:ec2::254`, `metadata.google.internal`,
117
+ `metadata.azure.internal`, `metadata.packet.net`,
118
+ `metadata.oci.oraclecloud.com`. There is no legitimate TTS-asset use
119
+ case for these hosts and they return IAM credentials / provisioning
120
+ secrets.
121
+ - SSRF-resistant hostname normalization: IPv4-mapped IPv6
122
+ (`::ffff:…`), trailing-dot hostnames (`host.`), bare decimal / hex /
123
+ octal IPv4 encodings are all rewritten before matching so they cannot
124
+ be used to bypass the blocklists.
125
+ - Manual redirect handling with a bounded hop count; each redirect target
126
+ is re-validated against the same policy.
127
+ - Authorization / cookie headers are scrubbed for cross-origin asset fetches.
128
+
129
+ Symptom if a URL falls outside the policy:
130
+ `SchoolCity asset URL origin is not allow-listed: <url>`,
131
+ `SchoolCity asset URL resolves to a private/internal host`, or
132
+ `SchoolCity asset URL resolves to a cloud metadata endpoint`. Address by
133
+ adding the origin to `assetOrigins`, toggling `blockPrivateAssetHosts`
134
+ for private-network deployments, or investigating why an upstream
135
+ response is pointing at a metadata endpoint (that is never legitimate).
136
+
35
137
  ## Basic usage
36
138
 
37
139
  ```ts
@@ -10,6 +10,46 @@ export interface SchoolCityProviderConfig extends TTSServerConfig {
10
10
  defaultCache?: boolean;
11
11
  requestTimeoutMs?: number;
12
12
  fetchImpl?: FetchLike;
13
+ /**
14
+ * Explicit allow-list of origins that upstream-returned `audioContent`
15
+ * and `word` URLs may use. When provided, only exact origin matches
16
+ * are accepted — this is the tightest setting and recommended for
17
+ * production (gives an auditable, typo-resistant declaration of
18
+ * which CDNs the provider is permitted to reach).
19
+ *
20
+ * When omitted, the provider falls back to a zero-config default:
21
+ * allow `baseUrl`'s origin plus any hostname on the same registrable
22
+ * domain (eTLD+1) as `baseUrl`. This matches the common "service at
23
+ * `x.vendor.tld`, CDN at `y.vendor.tld`" deployment pattern without
24
+ * weakening the private-host / metadata / scheme / redirect defenses
25
+ * (all of which remain active regardless of this setting).
26
+ *
27
+ * To force strict single-origin behavior (no registrable-domain
28
+ * fallback), pass `assetOrigins: [baseUrl]`.
29
+ */
30
+ assetOrigins?: string[];
31
+ /**
32
+ * When true (default), asset URLs that resolve to RFC1918 / loopback /
33
+ * link-local / IPv6 unique-local hosts are rejected as a defense against
34
+ * SSRF. Set to `false` only for deployments where the SchoolCity
35
+ * service legitimately lives on a private network (on-prem CDN,
36
+ * in-cluster K8s service, VPC endpoint, air-gapped install). When you
37
+ * disable this guard, always also pass an explicit `assetOrigins`
38
+ * allow-list so a compromised upstream response cannot redirect the
39
+ * fetch to arbitrary internal hosts.
40
+ *
41
+ * Cloud-metadata / IMDS endpoints (169.254.169.254, fd00:ec2::254,
42
+ * metadata.google.internal, metadata.azure.internal,
43
+ * metadata.packet.net, metadata.oci.oraclecloud.com) are always
44
+ * blocked regardless of this flag — there is no legitimate TTS-asset
45
+ * use case for those, and they are the primary SSRF payoff target.
46
+ */
47
+ blockPrivateAssetHosts?: boolean;
48
+ /**
49
+ * Maximum number of HTTP redirects to follow when dereferencing
50
+ * upstream-returned asset URLs. Defaults to 2.
51
+ */
52
+ maxAssetRedirects?: number;
13
53
  }
14
54
  export interface SchoolCitySynthesizeAssetsResult {
15
55
  audioContent: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SchoolCityServerProvider.d.ts","sourceRoot":"","sources":["../src/SchoolCityServerProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGvB,KAAK,eAAe,EACpB,KAAK,KAAK,EACV,MAAM,8BAA8B,CAAC;AAEtC,KAAK,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAiBtD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC1B;AA+LD,qBAAa,wBAAyB,SAAQ,eAAe;IAC5D,QAAQ,CAAC,UAAU,oBAAoB;IACvC,QAAQ,CAAC,YAAY,oBAAoB;IACzC,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,SAAS,CAAoB;IAE/B,UAAU,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsCnD,aAAa;IAU3B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,WAAW;IASN,oBAAoB,CAChC,OAAO,EAAE,iBAAiB,GACxB,OAAO,CAAC,gCAAgC,CAAC;IAyEtC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BnE,SAAS,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAK9D,eAAe,IAAI,0BAA0B;CAqB7C"}
1
+ {"version":3,"file":"SchoolCityServerProvider.d.ts","sourceRoot":"","sources":["../src/SchoolCityServerProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGvB,KAAK,eAAe,EACpB,KAAK,KAAK,EACV,MAAM,8BAA8B,CAAC;AAEtC,KAAK,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAiBtD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC1B;AAieD,qBAAa,wBAAyB,SAAQ,eAAe;IAC5D,QAAQ,CAAC,UAAU,oBAAoB;IACvC,QAAQ,CAAC,YAAY,oBAAoB;IACzC,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,SAAS,CAAoB;IAE/B,UAAU,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsCnD,aAAa;IAU3B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,WAAW;IASN,oBAAoB,CAChC,OAAO,EAAE,iBAAiB,GACxB,OAAO,CAAC,gCAAgC,CAAC;IAoFtC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8CnE,SAAS,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAK9D,eAAe,IAAI,0BAA0B;CAqB7C"}
@@ -1,9 +1,211 @@
1
1
  import { SignJWT } from "jose";
2
+ import { getDomain } from "tldts";
2
3
  import { BaseTTSProvider, TTSError, TTSErrorCode, } from "@pie-players/tts-server-core";
3
4
  const DEFAULT_LANGUAGE = "en-US";
4
5
  const DEFAULT_SPEED_RATE = "medium";
5
6
  const DEFAULT_CACHE = true;
6
7
  const DEFAULT_REQUEST_TIMEOUT_MS = 15000;
8
+ const DEFAULT_MAX_ASSET_REDIRECTS = 2;
9
+ // Cloud-metadata / IMDS endpoints are ALWAYS blocked, even when
10
+ // `blockPrivateAssetHosts` is `false`. These have no legitimate TTS-asset
11
+ // use case and are the primary SSRF payoff target (they return IAM
12
+ // credentials, instance tokens, and provisioning secrets).
13
+ const CLOUD_METADATA_HOSTNAME_PATTERNS = [
14
+ /^169\.254\.169\.254$/,
15
+ /^fd00:ec2::254$/i,
16
+ /^metadata\.google\.internal$/i,
17
+ /^metadata\.azure\.internal$/i,
18
+ /^metadata\.packet\.net$/i,
19
+ /^metadata\.oci\.oraclecloud\.com$/i,
20
+ ];
21
+ // Private / internal-network patterns. Blocked by default, can be
22
+ // opted-out via `blockPrivateAssetHosts: false` for deployments where
23
+ // the TTS service legitimately runs on a private network.
24
+ const PRIVATE_HOSTNAME_PATTERNS = [
25
+ /^localhost$/i,
26
+ /^127(?:\.\d{1,3}){3}$/,
27
+ /^0(?:\.\d{1,3}){3}$/,
28
+ /^10(?:\.\d{1,3}){3}$/,
29
+ /^192\.168(?:\.\d{1,3}){2}$/,
30
+ /^172\.(?:1[6-9]|2\d|3[01])(?:\.\d{1,3}){2}$/,
31
+ /^169\.254(?:\.\d{1,3}){2}$/,
32
+ /^::1$/,
33
+ /^0:0:0:0:0:0:0:1$/,
34
+ /^fe80:/i,
35
+ /^fc00:/i,
36
+ /^fd[0-9a-f]{2}:/i,
37
+ ];
38
+ const ipv4BareToDotted = (hostname) => {
39
+ // Reject obviously non-numeric inputs fast; numeric IPv4 encodings
40
+ // (bare decimal, hex, or octal) are a classic SSRF bypass.
41
+ if (!/^(?:0x[0-9a-f]+|0[0-7]*|\d+)$/i.test(hostname))
42
+ return null;
43
+ let asInt;
44
+ try {
45
+ asInt = Number.parseInt(hostname, hostname.startsWith("0x") ? 16 : 10);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ if (!Number.isFinite(asInt) || asInt < 0 || asInt > 0xff_ff_ff_ff)
51
+ return null;
52
+ return [
53
+ (asInt >>> 24) & 0xff,
54
+ (asInt >>> 16) & 0xff,
55
+ (asInt >>> 8) & 0xff,
56
+ asInt & 0xff,
57
+ ].join(".");
58
+ };
59
+ const normalizeHostnameForSafetyCheck = (hostname) => {
60
+ let host = hostname.replace(/^\[|\]$/g, "").replace(/\.$/, "");
61
+ // Unmap IPv4-in-IPv6 (e.g. `::ffff:127.0.0.1` / `::ffff:7f00:1`).
62
+ const mapped = host.match(/^::ffff:([0-9a-f.]+)$/i);
63
+ if (mapped) {
64
+ const inner = mapped[1];
65
+ if (/^\d+\.\d+\.\d+\.\d+$/.test(inner)) {
66
+ host = inner;
67
+ }
68
+ }
69
+ return host;
70
+ };
71
+ const hostnameMatchesAny = (hostname, patterns) => {
72
+ const normalized = normalizeHostnameForSafetyCheck(hostname);
73
+ const numericDotted = ipv4BareToDotted(normalized);
74
+ const candidates = [normalized.toLowerCase()];
75
+ if (numericDotted)
76
+ candidates.push(numericDotted);
77
+ return candidates.some((candidate) => patterns.some((pattern) => pattern.test(candidate)));
78
+ };
79
+ const hostnameIsCloudMetadata = (hostname) => hostnameMatchesAny(hostname, CLOUD_METADATA_HOSTNAME_PATTERNS);
80
+ const hostnameIsPrivate = (hostname) => hostnameMatchesAny(hostname, PRIVATE_HOSTNAME_PATTERNS);
81
+ const resolveAssetPolicy = (config, baseUrl) => {
82
+ const explicitOrigins = new Set();
83
+ if (Array.isArray(config.assetOrigins)) {
84
+ for (const raw of config.assetOrigins) {
85
+ if (typeof raw !== "string" || raw.length === 0)
86
+ continue;
87
+ try {
88
+ explicitOrigins.add(new URL(raw).origin);
89
+ }
90
+ catch {
91
+ // Ignore malformed origins; they simply won't match.
92
+ }
93
+ }
94
+ }
95
+ let baseUrlOrigin = null;
96
+ let baseUrlHostname = null;
97
+ if (baseUrl) {
98
+ try {
99
+ const parsed = new URL(baseUrl);
100
+ baseUrlOrigin = parsed.origin;
101
+ baseUrlHostname = parsed.hostname;
102
+ }
103
+ catch {
104
+ // baseUrl validated at initialize(); unreachable in practice.
105
+ }
106
+ }
107
+ // Only derive a registrable-domain fallback when the host did NOT pass
108
+ // an explicit allow-list. Explicit config always wins and stays strict.
109
+ const baseUrlRegistrableDomain = explicitOrigins.size === 0 && baseUrlHostname
110
+ ? getDomain(baseUrlHostname)
111
+ : null;
112
+ return {
113
+ explicitOrigins,
114
+ baseUrlOrigin,
115
+ baseUrlRegistrableDomain,
116
+ };
117
+ };
118
+ const describePolicy = (policy) => {
119
+ const descriptions = [];
120
+ for (const origin of policy.explicitOrigins)
121
+ descriptions.push(origin);
122
+ if (policy.explicitOrigins.size === 0) {
123
+ if (policy.baseUrlOrigin)
124
+ descriptions.push(policy.baseUrlOrigin);
125
+ if (policy.baseUrlRegistrableDomain) {
126
+ descriptions.push(`*.${policy.baseUrlRegistrableDomain}`);
127
+ }
128
+ }
129
+ return descriptions;
130
+ };
131
+ const isUrlAllowedByPolicy = (parsed, policy) => {
132
+ if (policy.explicitOrigins.size > 0) {
133
+ return policy.explicitOrigins.has(parsed.origin);
134
+ }
135
+ if (policy.baseUrlOrigin && parsed.origin === policy.baseUrlOrigin) {
136
+ return true;
137
+ }
138
+ if (policy.baseUrlRegistrableDomain) {
139
+ const parsedRegistrable = getDomain(parsed.hostname);
140
+ if (parsedRegistrable !== null &&
141
+ parsedRegistrable === policy.baseUrlRegistrableDomain) {
142
+ return true;
143
+ }
144
+ }
145
+ // Fall back to "baseUrl origin only" when PSL lookup yields no
146
+ // registrable domain for baseUrl (e.g. IP literal, single-label host).
147
+ return (policy.explicitOrigins.size === 0 &&
148
+ policy.baseUrlOrigin !== null &&
149
+ policy.baseUrlRegistrableDomain === null &&
150
+ parsed.origin === policy.baseUrlOrigin);
151
+ };
152
+ const validateAssetUrl = (rawUrl, config, baseUrl) => {
153
+ let parsed;
154
+ try {
155
+ parsed = new URL(rawUrl);
156
+ }
157
+ catch {
158
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity returned a malformed asset URL", { url: rawUrl }, "schoolcity-tts");
159
+ }
160
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
161
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, `SchoolCity asset URL uses unsupported protocol: ${parsed.protocol}`, { url: rawUrl }, "schoolcity-tts");
162
+ }
163
+ // Cloud-metadata / IMDS is always blocked, even when the private-host
164
+ // guard is intentionally disabled for internal-network deployments.
165
+ if (hostnameIsCloudMetadata(parsed.hostname)) {
166
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity asset URL resolves to a cloud metadata endpoint", { url: rawUrl, hostname: parsed.hostname }, "schoolcity-tts");
167
+ }
168
+ if (config.blockPrivateAssetHosts !== false && hostnameIsPrivate(parsed.hostname)) {
169
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity asset URL resolves to a private/internal host", { url: rawUrl, hostname: parsed.hostname }, "schoolcity-tts");
170
+ }
171
+ const policy = resolveAssetPolicy(config, baseUrl);
172
+ if (!isUrlAllowedByPolicy(parsed, policy)) {
173
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, `SchoolCity asset URL origin is not allow-listed: ${parsed.origin}`, { url: rawUrl, allowed: describePolicy(policy) }, "schoolcity-tts");
174
+ }
175
+ return parsed;
176
+ };
177
+ const fetchAssetWithManualRedirects = async (initialUrl, config, baseUrl, fetchImpl, init) => {
178
+ const maxRedirects = Math.max(0, Math.floor(config.maxAssetRedirects ?? DEFAULT_MAX_ASSET_REDIRECTS));
179
+ let current = initialUrl;
180
+ for (let hop = 0; hop <= maxRedirects; hop += 1) {
181
+ const response = await fetchImpl(current.toString(), {
182
+ ...init,
183
+ redirect: "manual",
184
+ });
185
+ const status = response.status;
186
+ const isRedirect = status >= 300 && status < 400 && status !== 304;
187
+ if (!isRedirect) {
188
+ return response;
189
+ }
190
+ const location = response.headers.get("location");
191
+ if (!location) {
192
+ return response;
193
+ }
194
+ if (hop === maxRedirects) {
195
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity asset redirect chain exceeded limit", { limit: maxRedirects, lastUrl: current.toString() }, "schoolcity-tts");
196
+ }
197
+ let nextUrl;
198
+ try {
199
+ nextUrl = new URL(location, current);
200
+ }
201
+ catch {
202
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity asset redirect target is malformed", { from: current.toString(), location }, "schoolcity-tts");
203
+ }
204
+ current = validateAssetUrl(nextUrl.toString(), config, baseUrl);
205
+ }
206
+ // Unreachable: loop either returns or throws.
207
+ throw new TTSError(TTSErrorCode.PROVIDER_ERROR, "SchoolCity asset fetch terminated unexpectedly", undefined, "schoolcity-tts");
208
+ };
7
209
  const asFiniteNumber = (value) => {
8
210
  const next = Number(value);
9
211
  return Number.isFinite(next) ? next : null;
@@ -268,7 +470,8 @@ export class SchoolCityServerProvider extends BaseTTSProvider {
268
470
  }
269
471
  let speechMarks = [];
270
472
  if (request.includeSpeechMarks !== false) {
271
- const marksResponse = await this.fetchImpl(word, { signal: timeout.signal });
473
+ const marksUrl = validateAssetUrl(word, this.config, this.baseUrl);
474
+ const marksResponse = await fetchAssetWithManualRedirects(marksUrl, this.config, this.baseUrl, this.fetchImpl, { signal: timeout.signal });
272
475
  if (!marksResponse.ok) {
273
476
  throw new TTSError(TTSErrorCode.PROVIDER_ERROR, `SchoolCity marks fetch failed (${marksResponse.status})`, { word, status: marksResponse.status }, this.providerId);
274
477
  }
@@ -294,7 +497,15 @@ export class SchoolCityServerProvider extends BaseTTSProvider {
294
497
  async synthesize(request) {
295
498
  const startedAt = Date.now();
296
499
  const { audioContent, speechMarks } = await this.synthesizeWithAssets(request);
297
- const audioResponse = await this.fetchImpl(audioContent);
500
+ const audioUrl = validateAssetUrl(audioContent, this.config, this.baseUrl);
501
+ const audioTimeout = this.withTimeout();
502
+ let audioResponse;
503
+ try {
504
+ audioResponse = await fetchAssetWithManualRedirects(audioUrl, this.config, this.baseUrl, this.fetchImpl, { signal: audioTimeout.signal });
505
+ }
506
+ finally {
507
+ audioTimeout.clear();
508
+ }
298
509
  if (!audioResponse.ok) {
299
510
  throw new TTSError(TTSErrorCode.PROVIDER_ERROR, `Failed to fetch SchoolCity audio asset (${audioResponse.status})`, { audioContent, status: audioResponse.status }, this.providerId);
300
511
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchoolCityServerProvider.js","sourceRoot":"","sources":["../src/SchoolCityServerProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchoolCityServerProvider.js","sourceRoot":"","sources":["../src/SchoolCityServerProvider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-players/tts-server-sc",
3
- "version": "0.3.28",
3
+ "version": "0.3.30",
4
4
  "description": "SchoolCity-backed provider for server-side TTS with speech marks support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -38,12 +38,13 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@pie-players/tts-server-core": "0.3.28",
42
- "jose": "^6.2.2"
41
+ "@pie-players/tts-server-core": "0.3.30",
42
+ "jose": "^6.2.2",
43
+ "tldts": "^7.0.26"
43
44
  },
44
45
  "devDependencies": {
45
46
  "typescript": "^5.9.3",
46
- "vitest": "^1.0.4"
47
+ "vitest": "^4.1.4"
47
48
  },
48
49
  "sideEffects": false,
49
50
  "homepage": "https://github.com/pie-framework/pie-players/tree/master/packages/tts-server-sc#readme",