Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

opencode-deepseek-auth

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

opencode-deepseek-auth - npm Package Compare versions

Package was removed
Sorry, it seems this package was removed from the registry
Comparing version
1.0.2
to
1.0.3
+1
-1
dist/plugin.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,aAAa,EACb,YAAY,EAGb,MAAM,SAAS,CAAC;AAqGjB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,aAAa,KACxB,OAAO,CAAC,YAAY,CA2HrB,CAAC"}
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,aAAa,EACb,YAAY,EAGb,MAAM,SAAS,CAAC;AAqGjB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,aAAa,KACxB,OAAO,CAAC,YAAY,CAuJrB,CAAC"}

@@ -93,3 +93,4 @@ "use strict";

const auth = await getAuth();
if (!isOAuthAuth(auth)) {
// Handle both OAuth-based auth and API key formatted credentials
if (!isOAuthAuth(auth) && !auth.apiKey) {
return null;

@@ -105,4 +106,48 @@ }

}
// Handle the case where API key contains email:password
let resolvedAccessToken = "";
if (auth.apiKey) {
// Check if API key contains email:password or phone:password format
const credentialParts = auth.apiKey.split(':');
if (credentialParts.length === 2) {
const [identifier, password] = credentialParts;
// Try to login with these credentials
const result = await (0, auth_1.loginDeepSeek)(identifier, password);
if (result.type === "success") {
resolvedAccessToken = result.access;
// Cache this for potential future use
tokenCache.set(identifier, {
token: result.access,
expires: result.expires,
email: result.email || identifier
});
}
else {
throw new Error(`Failed to authenticate with provided credentials: ${result.error}`);
}
}
else {
// If it's not in email:password format, assume it's already a valid access token
resolvedAccessToken = auth.apiKey;
}
}
else if (isOAuthAuth(auth)) {
// Handle normal OAuth flow
let authRecord = auth;
// Check if token has expired and refresh if possible
if (accessTokenExpired(authRecord)) {
const refreshed = await refreshAccessToken(authRecord, client);
if (!refreshed) {
console.warn("Could not refresh DeepSeek access token");
return null;
}
authRecord = refreshed;
}
resolvedAccessToken = authRecord.access;
if (!resolvedAccessToken) {
return null;
}
}
return {
apiKey: "",
apiKey: resolvedAccessToken || "",
async fetch(input, init) {

@@ -113,23 +158,4 @@ // If this isn't a DeepSeek request, pass through normally

}
// Get current auth state
const latestAuth = await getAuth();
if (!isOAuthAuth(latestAuth)) {
return fetch(input, init);
}
let authRecord = latestAuth;
// Check if token has expired and refresh if possible
if (accessTokenExpired(authRecord)) {
const refreshed = await refreshAccessToken(authRecord, client);
if (!refreshed) {
console.warn("Could not refresh DeepSeek access token");
return fetch(input, init);
}
authRecord = refreshed;
}
const accessToken = authRecord.access;
if (!accessToken) {
return fetch(input, init);
}
// Prepare the request with proper headers
const { request, init: transformedInit } = prepareDeepSeekRequest(input, init, accessToken);
const { request, init: transformedInit } = prepareDeepSeekRequest(input, init, resolvedAccessToken);
// Make the API call

@@ -194,2 +220,7 @@ const response = await fetch(request, transformedInit);

},
{
provider: constants_1.DEEPSEEK_PROVIDER_ID,
label: "Enter credentials (email:password or phone:password)",
type: "api",
},
],

@@ -196,0 +227,0 @@ },

@@ -1,1 +0,1 @@

{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AAEA,2CAAiG;AACjG,0CAIyB;AAYzB,8BAA8B;AAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6D,CAAC;AAExF;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAe;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,yBAAyB;AAC5F,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAS;IAC5B,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,UAAe,EAAE,MAAW;IAC5D,uEAAuE;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAErC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,gCAAgC;QAChC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;YAC5B,QAAQ,EAAE,QAAQ,CAAE,6BAA6B;SAClD,CAAC;QAEF,eAAe;QACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;YACpB,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;SAC7B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,KAAkC,EAClC,IAA6B,EAC7B,WAAmB;IAEnB,+CAA+C;IAC/C,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAEpC,2BAA2B;IAC3B,eAAe,CAAC,OAAO,GAAG;QACxB,GAAG,eAAe,CAAC,OAAO;QAC1B,GAAG,iCAAqB;QACxB,eAAe,EAAE,UAAU,WAAW,EAAE;KACzC,CAAC;IAEF,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAoB,EAAE,eAAe,CAAC,CAAC;IAEnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,QAAkB;IAElB,0CAA0C;IAC1C,uDAAuD;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAkC;IAC3D,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,KAAiB,CAAC,GAAG,IAAI,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACI,MAAM,kBAAkB,GAAG,KAAK,EACrC,EAAE,MAAM,EAAiB,EACF,EAAE,CAAC,CAAC;IAC3B,IAAI,EAAE;QACJ,QAAQ,EAAE,gCAAoB;QAC7B,MAAM,EAAE,KAAK,EAAE,OAAgB,EAAE,QAAkB,EAAgC,EAAE;YACnF,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;YAE7B,iEAAiE;YACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,8EAA8E;YAC9E,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wDAAwD;YACxD,IAAI,mBAAmB,GAAG,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,oEAAoE;gBACpE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC;oBAC/C,sCAAsC;oBACtC,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC9B,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;wBACpC,sCAAsC;wBACtC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE;4BACzB,KAAK,EAAE,MAAM,CAAC,MAAM;4BACpB,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,UAAU;yBAClC,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,qDAAqD,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,iFAAiF;oBACjF,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,2BAA2B;gBAC3B,IAAI,UAAU,GAAG,IAAI,CAAC;gBAEtB,qDAAqD;gBACrD,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;wBACxD,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,UAAU,GAAG,SAAS,CAAC;gBACzB,CAAC;gBAED,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC;gBACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,mBAAmB,IAAI,EAAE;gBACjC,KAAK,CAAC,KAAK,CAAC,KAAkC,EAAE,IAAkB;oBAChE,0DAA0D;oBAC1D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC,KAAoB,EAAE,IAAI,CAAC,CAAC;oBAC3C,CAAC;oBAED,0CAA0C;oBAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAC/D,KAAK,EACL,IAAI,EACJ,mBAAmB,CACpB,CAAC;oBAEF,oBAAoB;oBACpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;oBAEvD,+BAA+B;oBAC/B,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,6BAA6B;gBACpC,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,KAAK,IAAI,EAAE;oBACpB,uEAAuE;oBACvE,MAAM,IAAI,GAAe;wBACvB,MAAM,EAAE;4BACN;gCACE,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,OAAO;gCACd,IAAI,EAAE,OAAO;gCACb,QAAQ,EAAE,IAAI;6BACf;4BACD;gCACE,IAAI,EAAE,UAAU;gCAChB,KAAK,EAAE,UAAU;gCACjB,IAAI,EAAE,UAAU;gCAChB,QAAQ,EAAE,IAAI;6BACf;yBACF;qBACF,CAAC;oBAEF,OAAO;wBACL,GAAG,EAAE,2BAA2B;wBAChC,YAAY,EAAE,sHAAsH;wBACpI,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,KAAK,EAAE,QAAgC,EAAwC,EAAE;4BACzF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;4BAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;4BAEnC,kBAAkB;4BAClB,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACxB,OAAO;oCACL,IAAI,EAAE,QAAQ;oCACd,KAAK,EAAE,6DAA6D;iCACrE,CAAC;4BACJ,CAAC;4BAED,mDAAmD;4BACnD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;4BAEpD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gCAC9B,kBAAkB;gCAClB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;oCACpB,KAAK,EAAE,MAAM,CAAC,MAAM;oCACpB,OAAO,EAAE,MAAM,CAAC,OAAO;oCACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;iCAC7B,CAAC,CAAC;4BACL,CAAC;4BAED,OAAO,MAAM,CAAC;wBAChB,CAAC;qBACF,CAAC;gBACJ,CAAC;aACF;YACD;gBACE,QAAQ,EAAE,gCAAoB;gBAC9B,KAAK,EAAE,sDAAsD;gBAC7D,IAAI,EAAE,KAAK;aACZ;SACF;KACH;CACF,CAAC,CAAC;AAzJU,QAAA,kBAAkB,sBAyJ5B"}
{
"name": "opencode-deepseek-auth",
"version": "1.0.2",
"version": "1.0.3",
"description": "Authenticate the Opencode CLI with your DeepSeek account credentials",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -128,63 +128,86 @@ import { spawn } from "node:child_process";

provider: DEEPSEEK_PROVIDER_ID,
loader: async (getAuth: GetAuth, provider: Provider): Promise<LoaderResult | null> => {
const auth = await getAuth();
if (!isOAuthAuth(auth)) {
return null;
}
// If models are defined in the provider, set cost to 0 to indicate free usage
if (provider.models) {
for (const model of Object.values(provider.models)) {
if (model) {
model.cost = { input: 0, output: 0 };
}
}
}
return {
apiKey: "",
async fetch(input: Parameters<typeof fetch>[0], init?: RequestInit) {
// If this isn't a DeepSeek request, pass through normally
if (!isDeepSeekRequest(input)) {
return fetch(input as RequestInfo, init);
}
// Get current auth state
const latestAuth = await getAuth();
if (!isOAuthAuth(latestAuth)) {
return fetch(input as RequestInfo, init);
}
let authRecord = latestAuth;
// Check if token has expired and refresh if possible
if (accessTokenExpired(authRecord)) {
const refreshed = await refreshAccessToken(authRecord, client);
if (!refreshed) {
console.warn("Could not refresh DeepSeek access token");
return fetch(input as RequestInfo, init);
}
authRecord = refreshed;
}
const accessToken = authRecord.access;
if (!accessToken) {
return fetch(input as RequestInfo, init);
}
// Prepare the request with proper headers
const { request, init: transformedInit } = prepareDeepSeekRequest(
input,
init,
accessToken
);
// Make the API call
const response = await fetch(request, transformedInit);
// Transform response if needed
return transformDeepSeekResponse(response);
},
};
},
loader: async (getAuth: GetAuth, provider: Provider): Promise<LoaderResult | null> => {
const auth = await getAuth();
// Handle both OAuth-based auth and API key formatted credentials
if (!isOAuthAuth(auth) && !auth.apiKey) {
return null;
}
// If models are defined in the provider, set cost to 0 to indicate free usage
if (provider.models) {
for (const model of Object.values(provider.models)) {
if (model) {
model.cost = { input: 0, output: 0 };
}
}
}
// Handle the case where API key contains email:password
let resolvedAccessToken = "";
if (auth.apiKey) {
// Check if API key contains email:password or phone:password format
const credentialParts = auth.apiKey.split(':');
if (credentialParts.length === 2) {
const [identifier, password] = credentialParts;
// Try to login with these credentials
const result = await loginDeepSeek(identifier, password);
if (result.type === "success") {
resolvedAccessToken = result.access;
// Cache this for potential future use
tokenCache.set(identifier, {
token: result.access,
expires: result.expires,
email: result.email || identifier
});
} else {
throw new Error(`Failed to authenticate with provided credentials: ${result.error}`);
}
} else {
// If it's not in email:password format, assume it's already a valid access token
resolvedAccessToken = auth.apiKey;
}
} else if (isOAuthAuth(auth)) {
// Handle normal OAuth flow
let authRecord = auth;
// Check if token has expired and refresh if possible
if (accessTokenExpired(authRecord)) {
const refreshed = await refreshAccessToken(authRecord, client);
if (!refreshed) {
console.warn("Could not refresh DeepSeek access token");
return null;
}
authRecord = refreshed;
}
resolvedAccessToken = authRecord.access;
if (!resolvedAccessToken) {
return null;
}
}
return {
apiKey: resolvedAccessToken || "",
async fetch(input: Parameters<typeof fetch>[0], init?: RequestInit) {
// If this isn't a DeepSeek request, pass through normally
if (!isDeepSeekRequest(input)) {
return fetch(input as RequestInfo, init);
}
// Prepare the request with proper headers
const { request, init: transformedInit } = prepareDeepSeekRequest(
input,
init,
resolvedAccessToken
);
// Make the API call
const response = await fetch(request, transformedInit);
// Transform response if needed
return transformDeepSeekResponse(response);
},
};
},
methods: [

@@ -247,4 +270,9 @@ {

},
{
provider: DEEPSEEK_PROVIDER_ID,
label: "Enter credentials (email:password or phone:password)",
type: "api",
},
],
},
});