arol-ai 0.1.6 → 0.1.7
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/data.js +3 -0
- package/dist/scanner.js +9 -5
- package/package.json +1 -1
- package/src/data/deprecations.json +61 -22
package/dist/data.js
CHANGED
|
@@ -107,6 +107,9 @@ function coerceDeprecation(raw) {
|
|
|
107
107
|
return null;
|
|
108
108
|
if ((match === "sdk" || match === "version") && sdk.length === 0)
|
|
109
109
|
return null;
|
|
110
|
+
// INVARIANT: every array below is always defined here — detect.{sdk,patterns,
|
|
111
|
+
// models} default to [] and applies_to to ["*"] (above). scanner.ts depends on
|
|
112
|
+
// this and also guards with `?? []` as defense in depth. Don't drop the defaults.
|
|
110
113
|
return {
|
|
111
114
|
id: r.id,
|
|
112
115
|
vendor: r.vendor,
|
package/dist/scanner.js
CHANGED
|
@@ -105,7 +105,8 @@ function compileDeprecations(deprecations) {
|
|
|
105
105
|
return deprecations.map((deprecation) => {
|
|
106
106
|
const regexes = [];
|
|
107
107
|
// Raw patterns — code identifiers, endpoints, params.
|
|
108
|
-
|
|
108
|
+
// `?? []` guards against entries not produced by the loader (e.g. tests).
|
|
109
|
+
for (const pattern of deprecation.detect.patterns ?? []) {
|
|
109
110
|
try {
|
|
110
111
|
// Global so we can iterate every match and derive line numbers.
|
|
111
112
|
regexes.push(new RegExp(pattern, "g"));
|
|
@@ -115,7 +116,7 @@ function compileDeprecations(deprecations) {
|
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
// Model names — only matched inside string literals (quote-anchored).
|
|
118
|
-
for (const family of deprecation.detect.models) {
|
|
119
|
+
for (const family of deprecation.detect.models ?? []) {
|
|
119
120
|
try {
|
|
120
121
|
regexes.push(new RegExp(modelRegexSource(family), "g"));
|
|
121
122
|
}
|
|
@@ -123,7 +124,9 @@ function compileDeprecations(deprecations) {
|
|
|
123
124
|
// Defensive: a pathological family name must not crash the scan.
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
+
// Missing/empty applies_to means "applies everywhere" (["*"]), preserved here.
|
|
128
|
+
const declaredExts = deprecation.applies_to ?? [];
|
|
129
|
+
const appliesTo = new Set((declaredExts.length > 0 ? declaredExts : ["*"]).map((e) => e.toLowerCase()));
|
|
127
130
|
return { deprecation, regexes, appliesTo };
|
|
128
131
|
});
|
|
129
132
|
}
|
|
@@ -292,11 +295,12 @@ function scanContent(content, relPath, compiled, sink) {
|
|
|
292
295
|
function matchManifests(deprecations, refs) {
|
|
293
296
|
const byId = new Map();
|
|
294
297
|
for (const deprecation of deprecations) {
|
|
295
|
-
|
|
298
|
+
const sdks = deprecation.detect.sdk ?? [];
|
|
299
|
+
if (sdks.length === 0)
|
|
296
300
|
continue;
|
|
297
301
|
const matches = [];
|
|
298
302
|
const seen = new Set();
|
|
299
|
-
for (const sdk of
|
|
303
|
+
for (const sdk of sdks) {
|
|
300
304
|
for (const ref of refs) {
|
|
301
305
|
if (!(0, manifests_1.nameMatches)(sdk, ref.name))
|
|
302
306
|
continue;
|
package/package.json
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"detect": {
|
|
11
11
|
"sdk": ["openai"],
|
|
12
12
|
"patterns": [
|
|
13
|
-
"
|
|
14
|
-
"
|
|
13
|
+
"\\bbeta\\.assistants\\b",
|
|
14
|
+
"\\bbeta\\.threads\\b",
|
|
15
15
|
"/v1/assistants",
|
|
16
16
|
"/v1/threads"
|
|
17
17
|
]
|
|
@@ -180,13 +180,13 @@
|
|
|
180
180
|
"detect": {
|
|
181
181
|
"sdk": ["@stripe/stripe-js", "stripe"],
|
|
182
182
|
"patterns": [
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"createSource",
|
|
189
|
-
"retrieveSource"
|
|
183
|
+
"\\bhandleCardPayment\\b",
|
|
184
|
+
"\\bconfirmPaymentIntent\\b",
|
|
185
|
+
"\\bhandleFpxPayment\\b",
|
|
186
|
+
"\\bhandleCardSetup\\b",
|
|
187
|
+
"\\bconfirmSetupIntent\\b",
|
|
188
|
+
"\\bstripe\\.createSource\\b",
|
|
189
|
+
"\\bstripe\\.retrieveSource\\b"
|
|
190
190
|
]
|
|
191
191
|
},
|
|
192
192
|
"migration_url": "https://docs.stripe.com/changelog/dahlia/2026-03-25/remove-legacy-stripejs-methods",
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
"sunset_date": "2024-05-15",
|
|
204
204
|
"detect": {
|
|
205
205
|
"sdk": ["stripe"],
|
|
206
|
-
"patterns": ["\\.sources\\.create", "charges\\.create", "Charge\\.create"]
|
|
206
|
+
"patterns": ["\\bstripe\\.sources\\.create", "\\bstripe\\.charges\\.create", "\\bstripe\\.Charge\\.create"]
|
|
207
207
|
},
|
|
208
208
|
"migration_url": "https://docs.stripe.com/payments/older-apis",
|
|
209
209
|
"summary": "The Sources API is deprecated (local payment methods stopped being accepted May 15, 2024) and the Charges API is legacy. Migrate to the PaymentMethods + PaymentIntents APIs.",
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
"sunset_date": "2025-12-31",
|
|
220
220
|
"detect": {
|
|
221
221
|
"sdk": ["twilio"],
|
|
222
|
-
"patterns": ["
|
|
222
|
+
"patterns": ["\\bnotify\\.v1\\b", "\\.notify\\.services\\b"]
|
|
223
223
|
},
|
|
224
224
|
"migration_url": "https://support.twilio.com/hc/en-us/articles/9198083260571-Transitioning-off-Notify",
|
|
225
225
|
"summary": "Twilio Notify reached end of life December 31, 2025; Notify API requests now fail. No 1:1 replacement — rebuild with Programmable Messaging / Conversations.",
|
|
@@ -235,12 +235,28 @@
|
|
|
235
235
|
"sunset_date": "2022-07-25",
|
|
236
236
|
"detect": {
|
|
237
237
|
"sdk": ["twilio", "twilio-chat"],
|
|
238
|
-
"patterns": ["
|
|
238
|
+
"patterns": ["\\bchat\\.v2\\b", "\\bIpMessaging\\b"]
|
|
239
239
|
},
|
|
240
240
|
"migration_url": "https://www.twilio.com/docs/conversations/migrating-chat-conversations",
|
|
241
241
|
"summary": "The standalone Programmable Chat API was sunset July 25, 2022 (Programmable Chat in Flex ended June 1, 2026). Migrate to the Conversations API.",
|
|
242
242
|
"source": "https://www.twilio.com/en-us/changelog/programmable-chat-end-of-life-notice"
|
|
243
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"id": "twilio-chat-package-eol",
|
|
246
|
+
"vendor": "Twilio",
|
|
247
|
+
"title": "twilio-chat SDK package (Programmable Chat)",
|
|
248
|
+
"severity": "high",
|
|
249
|
+
"match": "sdk",
|
|
250
|
+
"applies_to": ["js", "ts", "jsx", "tsx", "mjs"],
|
|
251
|
+
"sunset_date": "2022-07-25",
|
|
252
|
+
"detect": {
|
|
253
|
+
"sdk": ["twilio-chat"],
|
|
254
|
+
"patterns": []
|
|
255
|
+
},
|
|
256
|
+
"migration_url": "https://www.twilio.com/docs/conversations/migrating-chat-conversations",
|
|
257
|
+
"summary": "The twilio-chat npm package is the client SDK for the retired Programmable Chat API (sunset July 25, 2022). Remove the dependency and migrate to @twilio/conversations.",
|
|
258
|
+
"source": "https://www.twilio.com/en-us/changelog/programmable-chat-end-of-life-notice"
|
|
259
|
+
},
|
|
244
260
|
{
|
|
245
261
|
"id": "aws-sdk-js-v2-eol",
|
|
246
262
|
"vendor": "AWS",
|
|
@@ -284,10 +300,10 @@
|
|
|
284
300
|
"detect": {
|
|
285
301
|
"sdk": ["openai"],
|
|
286
302
|
"patterns": [
|
|
287
|
-
"
|
|
288
|
-
"
|
|
289
|
-
"
|
|
290
|
-
"
|
|
303
|
+
"\\bopenai\\.ChatCompletion\\b",
|
|
304
|
+
"\\bopenai\\.Completion\\.create\\b",
|
|
305
|
+
"\\bopenai\\.Embedding\\.create\\b",
|
|
306
|
+
"\\bopenai\\.Moderation\\.create\\b"
|
|
291
307
|
]
|
|
292
308
|
},
|
|
293
309
|
"migration_url": "https://github.com/openai/openai-python/discussions/742",
|
|
@@ -307,9 +323,9 @@
|
|
|
307
323
|
"patterns": [
|
|
308
324
|
"from ['\"]ai/react['\"]",
|
|
309
325
|
"from ['\"]ai/openai['\"]",
|
|
310
|
-
"
|
|
311
|
-
"
|
|
312
|
-
"
|
|
326
|
+
"\\bexperimental_streamText\\b",
|
|
327
|
+
"\\bexperimental_generateText\\b",
|
|
328
|
+
"\\bStreamingTextResponse\\b"
|
|
313
329
|
]
|
|
314
330
|
},
|
|
315
331
|
"migration_url": "https://ai-sdk.dev/docs/migration-guides/migration-guide-5-0",
|
|
@@ -330,8 +346,8 @@
|
|
|
330
346
|
"from langchain\\.llms import",
|
|
331
347
|
"from langchain\\.chat_models import",
|
|
332
348
|
"from langchain\\.embeddings import",
|
|
333
|
-
"
|
|
334
|
-
"
|
|
349
|
+
"\\binitialize_agent\\b",
|
|
350
|
+
"\\bLLMChain\\b"
|
|
335
351
|
]
|
|
336
352
|
},
|
|
337
353
|
"migration_url": "https://python.langchain.com/docs/versions/v0_2/",
|
|
@@ -349,10 +365,33 @@
|
|
|
349
365
|
"sunset_date": null,
|
|
350
366
|
"detect": {
|
|
351
367
|
"sdk": ["resend"],
|
|
352
|
-
"patterns": ["\\.audiences\\.", "\\.Audiences\\."]
|
|
368
|
+
"patterns": ["\\bresend\\.audiences\\.", "\\bresend\\.Audiences\\."]
|
|
353
369
|
},
|
|
354
370
|
"migration_url": "https://resend.com/docs/dashboard/segments/migrating-from-audiences-to-segments",
|
|
355
371
|
"summary": "Resend's Audiences API is deprecated in favor of Segments. The endpoints still work but will be removed in the future (no date announced). Migrate the audiences.* calls to the Segments API.",
|
|
356
372
|
"source": "https://resend.com/docs/api-reference/audiences/create-audience"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"id": "clerk-redirect-to-user-profile-component",
|
|
376
|
+
"vendor": "Clerk",
|
|
377
|
+
"title": "<RedirectToUserProfile /> control component deprecated",
|
|
378
|
+
"severity": "low",
|
|
379
|
+
"match": "pattern",
|
|
380
|
+
"applies_to": ["jsx", "tsx", "js", "ts"],
|
|
381
|
+
"sunset_date": null,
|
|
382
|
+
"status": "deprecated",
|
|
383
|
+
"detect": {
|
|
384
|
+
"sdk": [
|
|
385
|
+
"@clerk/nextjs",
|
|
386
|
+
"@clerk/clerk-react",
|
|
387
|
+
"@clerk/nuxt",
|
|
388
|
+
"@clerk/vue"
|
|
389
|
+
],
|
|
390
|
+
"patterns": ["\\bRedirectToUserProfile\\b"],
|
|
391
|
+
"models": []
|
|
392
|
+
},
|
|
393
|
+
"migration_url": "https://clerk.com/docs/reference/objects/clerk#redirect-to-user-profile",
|
|
394
|
+
"summary": "Clerk's <RedirectToUserProfile /> control component is deprecated in favor of the redirectToUserProfile() method on the Clerk object. No removal date announced.",
|
|
395
|
+
"source": "https://clerk.com/docs/nextjs/reference/components/control/redirect-to-user-profile"
|
|
357
396
|
}
|
|
358
397
|
]
|