Socket
Socket
Sign inDemoInstall

@agyemanjp/auth

Package Overview
Dependencies
144
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.13 to 0.0.14

117

lib/client.d.ts
import * as express from 'express';
import { Obj } from "@agyemanjp/standard";
import { Method, RouteFinal } from "@agyemanjp/http";
import { User, UserAccessLevel } from "./types";
import { RouteObject, ObjEmpty } from "@agyemanjp/http";
import { User } from "./types";
export declare const clientRoutesFactory: (authBaseUrl: string, app: string) => {

@@ -9,66 +8,116 @@ middleware: express.Handler[];

readonly signup: {
readonly method: "post";
readonly url: "/register";
readonly handler: express.Handler;
readonly proxy: import("@agyemanjp/http").BodyProxy<import("../db/schema").T<"usersReadonly"> & {
accessLevel: UserAccessLevel;
readonly handlerFactory: () => express.Handler;
readonly url: "/signup";
readonly method: "post" | "put" | "patch";
readonly proxy: (args: Omit<{
app: string;
} & import("../db/schema").T<"usersReadonly"> & {
accessLevel: import("./types").UserAccessLevel;
} & {
password?: string | undefined;
verificationCode: string;
}, "//:app/register", Promise<{
} & ObjEmpty, "app">) => Promise<{
error: string;
} | {
data: User;
}>, {}>;
}>;
readonly proxyFactory: <A extends Partial<Omit<{
app: string;
} & import("../db/schema").T<"usersReadonly"> & {
accessLevel: import("./types").UserAccessLevel;
} & {
password?: string | undefined;
verificationCode: string;
} & ObjEmpty, "app">>>(baseUrl: string, args: A) => (args: Omit<Omit<{
app: string;
} & import("../db/schema").T<"usersReadonly"> & {
accessLevel: import("./types").UserAccessLevel;
} & {
password?: string | undefined;
verificationCode: string;
} & ObjEmpty, "app">, keyof A>) => Promise<{
error: string;
} | {
data: User;
}>;
};
readonly login: {
readonly method: "post";
readonly handlerFactory: () => express.Handler;
readonly url: "/login";
readonly handler: express.Handler;
readonly proxy: import("@agyemanjp/http").QueryProxy<{
readonly method: "delete" | "get";
readonly proxy: (args: Omit<{
app: string;
} & ObjEmpty & {
email: string;
pwd: string;
}, `${string}//:app/authenticate`, Promise<{
}, "app">) => Promise<{
error: string;
} | {
data: User;
}>, {
}>;
readonly proxyFactory: <A_1 extends Partial<Omit<{
app: string;
} & ObjEmpty & {
email: string;
pwd: string;
}, "app">>>(baseUrl: string, args: A_1) => (args: Omit<Omit<{
app: string;
} & ObjEmpty & {
email: string;
pwd: string;
}, "app">, keyof A_1>) => Promise<{
error: string;
} | {
data: User;
}>;
};
readonly logout: {
readonly method: "get";
readonly handlerFactory: () => express.Handler;
readonly proxyFactory: import("@agyemanjp/http").ProxyFactory<"/logout", ObjEmpty, void>;
readonly proxy: (args: Omit<ObjEmpty, never>) => Promise<void>;
readonly method: "delete" | "get" | "post" | "put" | "patch";
readonly url: "/logout";
readonly handler: express.Handler;
readonly proxy: any;
};
readonly verify: RouteFinal<Method, {
readonly verify: RouteObject<"POST" | "PATCH" | "PUT", Omit<{
app: string;
} & {
emailAddress: string;
verificationCode: string;
accessLevel: UserAccessLevel;
} & Omit<{
app: string;
}, "app">, User>;
readonly deactivate: RouteFinal<Method, Obj<never, string> & Omit<{
accessLevel: import("./types").UserAccessLevel;
} & ObjEmpty, "app">, {
error: string;
} | {
data: User;
}, any>;
readonly deactivate: RouteObject<"GET" | "DELETE", Omit<{
id: string;
app: string;
}, "id" | "app"> & Omit<{
id: string;
} & ObjEmpty, "app">, {
error: string;
} | {
data: ObjEmpty;
}, any>;
readonly logResourceAccess: RouteObject<"POST" | "PATCH" | "PUT", Omit<{
app: string;
}, "app">, null>;
readonly logResourceAccess: RouteFinal<Method, {
} & {
userId: string;
resourceCode: string;
resourceType: string;
} & Omit<{
} & ObjEmpty, "app">, {
error: string;
} | {
data: import("../db/schema").T<"resourceAccessCounts">;
}, any>;
readonly getResourceAccess: RouteObject<"GET" | "DELETE", Omit<{
app: string;
}, "app">, import("../db/schema").T<"resourceAccessCounts">>;
readonly getResourceAccess: RouteFinal<Method, {
} & {
user_id: string;
resource_code: string;
} & Omit<{
app: string;
}, "app">, import("../db/schema").T<"resourceAccessCounts">[]>;
} & ObjEmpty, "app">, {
error: string;
} | {
data: import("../db/schema").T<"resourceAccessCounts">[];
}, any>;
};
};
export declare function uid(): string;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -16,2 +39,5 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

exports.uid = exports.clientRoutesFactory = void 0;
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/ban-types */
const cuid_1 = __importDefault(require("cuid"));
const passport_1 = __importDefault(require("passport"));

@@ -21,5 +47,4 @@ const passport_local_1 = __importDefault(require("passport-local"));

const http_1 = require("@agyemanjp/http");
const cuid_1 = __importDefault(require("cuid"));
const types_1 = require("./types");
const server_1 = require("./server");
const server = __importStar(require("./server"));
const clientRoutesFactory = (authBaseUrl, app) => {

@@ -33,6 +58,3 @@ configurePassport();

routes: {
signup: {
method: "post",
url: "/register",
handler: ((req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
signup: Object.assign(Object.assign({}, (0, http_1.clientRoute)(server.routes.register, authBaseUrl, { app: app })), { handlerFactory: () => ((req, res, next) => {
// console.log(`Request body sent to signup post: ${stringify(req.body)}`)

@@ -66,9 +88,4 @@ passport_1.default.authenticate('local-signup', (errAuth, user, info) => {

})(req, res, next);
})),
proxy: server_1.serverRoutes.register.proxyFactory("", {})
},
login: {
method: "post",
url: "/login",
handler: ((req, res, next) => {
}), url: "/signup" }),
login: Object.assign(Object.assign({}, (0, http_1.clientRoute)(server.routes.authenticate, authBaseUrl, { app: app })), { handlerFactory: () => ((req, res, next) => {
// console.log(`Request body sent to login post: ${stringify(req.body)}`)

@@ -101,19 +118,17 @@ passport_1.default.authenticate('local-login', (errAuth, user, info) => {

})(req, res, next);
}),
proxy: server_1.serverRoutes.authenticate.proxyFactory(authBaseUrl, { app: app })
},
logout: {
method: "get",
url: "/logout",
handler: ((req, res, next) => {
}), url: "/login" }),
logout: Object.assign(Object.assign({}, (0, http_1.queryFactory)("get")
.url("/logout")
.queryType()
.headersType()
.responseType(void (0))
.proxy()), { handlerFactory: () => ((req, res, next) => {
// console.log(`Logging out via GET`)
req.logOut();
res.redirect('/');
}),
proxy: undefined
},
verify: (0, http_1.clientRoute)(server_1.serverRoutes.verify, authBaseUrl, { app: app }),
deactivate: (0, http_1.clientRoute)(server_1.serverRoutes.deactivate, authBaseUrl, { app: app }),
logResourceAccess: (0, http_1.clientRoute)(server_1.serverRoutes.logResourceAccess, authBaseUrl, { app: app }),
getResourceAccess: (0, http_1.clientRoute)(server_1.serverRoutes.getResourceAccess, authBaseUrl, { app: app })
}) }),
verify: (0, http_1.clientRoute)(server.routes.verify, authBaseUrl, { app: app }),
deactivate: (0, http_1.clientRoute)(server.routes.deactivate, authBaseUrl, { app: app }),
logResourceAccess: (0, http_1.clientRoute)(server.routes.logResourceAccess, authBaseUrl, { app: app }),
getResourceAccess: (0, http_1.clientRoute)(server.routes.getResourceAccess, authBaseUrl, { app: app })
}

@@ -127,3 +142,3 @@ };

try {
const userPromise = server_1.serverRoutes.findUser.proxyFactory(authBaseUrl, { app })({ id });
const userPromise = server.routes.findUser.proxyFactory(authBaseUrl, { app })({ id });
const userInfo = yield userPromise;

@@ -149,3 +164,3 @@ if ("data" in userInfo) {

try {
const userInfo = yield server_1.serverRoutes.authenticate.proxyFactory(authBaseUrl, { app })({ email, pwd });
const userInfo = yield server.routes.authenticate.proxyFactory(authBaseUrl, { app })({ email, pwd });
if ("data" in userInfo) {

@@ -179,3 +194,3 @@ return done(null, userInfo.data);

console.log(`New user verification url: ${verificationURL}`);
const result = yield server_1.serverRoutes.register.proxyFactory(authBaseUrl, { app })(Object.assign(Object.assign({}, user), { verificationCode }));
const result = yield server.routes.register.proxyFactory(authBaseUrl, { app })(Object.assign(Object.assign({}, user), { verificationCode }));
if ("error" in result) {

@@ -182,0 +197,0 @@ return done(result.error, null);

{
"name": "@agyemanjp/auth",
"version": "0.0.13",
"version": "0.0.14",
"description": "Authentication/Authorization library and micro-service",

@@ -21,4 +21,4 @@ "main": "index.js",

"dependencies": {
"@agyemanjp/http": "^0.1.25",
"@agyemanjp/standard": "^4.0.1",
"@agyemanjp/http": "^0.1.35",
"@agyemanjp/standard": "^4.0.3",
"@agyemanjp/storage": "^1.5.1",

@@ -70,3 +70,3 @@ "bcryptjs": "^2.4.3",

"rollup": "^2.64.0",
"typescript": "^4.4.2"
"typescript": "^4.6.4"
},

@@ -73,0 +73,0 @@ "scripts": {

@@ -1,104 +0,80 @@

import * as express from 'express';
import { Obj } from "@agyemanjp/standard";
import { ObjEmpty, RouteObject } from '@agyemanjp/http';
import { UserAccessLevel, User } from "./types";
export declare const serverRoutes: {
readonly findUser: {
method: "get";
url: "/:app/users/:id";
handler: express.Handler;
proxyFactory: <BaseUrl extends string, Prm extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl}//:app/users/:id`>>>(baseUrl: BaseUrl, params: Prm) => import("@agyemanjp/http").QueryProxy<{}, `${BaseUrl}//:app/users/:id`, Promise<{
error: string;
} | {
data: User;
}>, Prm>;
};
readonly verify: {
proxyFactory: <BaseUrl_4 extends string, Prm_4 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4}//:app/verify`>>>(baseUrl: BaseUrl_4, params: Prm_4) => import("@agyemanjp/http").BodyProxy<{
emailAddress: string;
verificationCode: string;
accessLevel: UserAccessLevel;
}, `${BaseUrl_4}//:app/verify`, Promise<{
error: string;
} | {
data: User;
}>, Prm_4>;
handler: express.Handler;
url: "/:app/verify";
method: "post";
};
readonly register: {
proxyFactory: <BaseUrl_4_1 extends string, Prm_4_1 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4_1}//:app/register`>>>(baseUrl: BaseUrl_4_1, params: Prm_4_1) => import("@agyemanjp/http").BodyProxy<import("./db/schema").T<"usersReadonly"> & {
accessLevel: UserAccessLevel;
} & {
password?: string | undefined;
verificationCode: string;
}, `${BaseUrl_4_1}//:app/register`, Promise<{
error: string;
} | {
data: User;
}>, Prm_4_1>;
handler: express.Handler;
url: "/:app/register";
method: "post";
};
readonly authenticate: {
method: "get";
url: "/:app/authenticate";
handler: express.Handler;
proxyFactory: <BaseUrl_1 extends string, Prm_1 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_1}//:app/authenticate`>>>(baseUrl: BaseUrl_1, params: Prm_1) => import("@agyemanjp/http").QueryProxy<{
email: string;
pwd: string;
}, `${BaseUrl_1}//:app/authenticate`, Promise<{
error: string;
} | {
data: User;
}>, Prm_1>;
};
readonly deactivate: {
method: "delete";
url: "/:app/deactivate/:id";
handler: express.Handler;
proxyFactory: <BaseUrl_2 extends string, Prm_2 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_2}//:app/deactivate/:id`>>>(baseUrl: BaseUrl_2, params: Prm_2) => import("@agyemanjp/http").QueryProxy<Obj<never, string>, `${BaseUrl_2}//:app/deactivate/:id`, Promise<{
error: string;
} | {
data: null;
}>, Prm_2>;
};
readonly logResourceAccess: {
proxyFactory: <BaseUrl_4_2 extends string, Prm_4_2 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4_2}//:app/res_access_counts`>>>(baseUrl: BaseUrl_4_2, params: Prm_4_2) => import("@agyemanjp/http").BodyProxy<{
userId: string;
resourceCode: string;
resourceType: string;
}, `${BaseUrl_4_2}//:app/res_access_counts`, Promise<{
error: string;
} | {
data: import("./db/schema").T<"resourceAccessCounts">;
}>, Prm_4_2>;
handler: express.Handler;
url: "/:app/res_access_counts";
method: "post";
};
readonly getResourceAccess: {
method: "get";
url: "/:app/res_access_counts";
handler: express.Handler;
proxyFactory: <BaseUrl_3 extends string, Prm_3 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_3}//:app/res_access_counts`>>>(baseUrl: BaseUrl_3, params: Prm_3) => import("@agyemanjp/http").QueryProxy<{
user_id: string;
resource_code: string;
}, `${BaseUrl_3}//:app/res_access_counts`, Promise<{
error: string;
} | {
data: import("./db/schema").T<"resourceAccessCounts">[];
}>, Prm_3>;
};
readonly default: {
method: "get";
url: "/*";
handler: express.Handler;
proxyFactory: <BaseUrl_5 extends string, Prm_5 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_5}//*`>>>(baseUrl: BaseUrl_5, params: Prm_5) => import("@agyemanjp/http").QueryProxy<Obj<never, string>, `${BaseUrl_5}//*`, Promise<{
error: string;
} | {
data: null;
}>, Prm_5>;
};
export declare const routes: {
readonly findUser: RouteObject<"GET" | "DELETE", {
id: string;
app: string;
} & ObjEmpty, {
error: string;
} | {
data: User;
}, unknown>;
readonly verify: RouteObject<"POST" | "PATCH" | "PUT", {
app: string;
} & {
emailAddress: string;
verificationCode: string;
accessLevel: UserAccessLevel;
} & ObjEmpty, {
error: string;
} | {
data: User;
}, unknown>;
readonly register: RouteObject<"POST" | "PATCH" | "PUT", {
app: string;
} & import("./db/schema").T<"usersReadonly"> & {
accessLevel: UserAccessLevel;
} & {
password?: string | undefined;
verificationCode: string;
} & ObjEmpty, {
error: string;
} | {
data: User;
}, unknown>;
readonly authenticate: RouteObject<"GET" | "DELETE", {
app: string;
} & ObjEmpty & {
email: string;
pwd: string;
}, {
error: string;
} | {
data: User;
}, unknown>;
readonly deactivate: RouteObject<"GET" | "DELETE", {
id: string;
app: string;
} & ObjEmpty, {
error: string;
} | {
data: ObjEmpty;
}, unknown>;
readonly logResourceAccess: RouteObject<"POST" | "PATCH" | "PUT", {
app: string;
} & {
userId: string;
resourceCode: string;
resourceType: string;
} & ObjEmpty, {
error: string;
} | {
data: import("./db/schema").T<"resourceAccessCounts">;
}, unknown>;
readonly getResourceAccess: RouteObject<"GET" | "DELETE", {
app: string;
} & {
user_id: string;
resource_code: string;
} & ObjEmpty, {
error: string;
} | {
data: import("./db/schema").T<"resourceAccessCounts">[];
}, unknown>;
readonly default: RouteObject<"GET" | "DELETE", ObjEmpty & Obj<never, string>, {
error: string;
} | {
data: never;
}, unknown>;
};

@@ -47,3 +47,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.serverRoutes = void 0;
exports.routes = void 0;
const srcMapSupport = __importStar(require("source-map-support"));

@@ -57,6 +57,6 @@ srcMapSupport.install({ environment: 'node' });

const standard_1 = require("@agyemanjp/standard");
const server_1 = require("@agyemanjp/http/server");
const http_1 = require("@agyemanjp/http");
const common_1 = require("@agyemanjp/http/common");
const repository_1 = require("./repository");
const utils_1 = require("./utils");
const repository_1 = require("./repository");
const mail_1 = require("./lib/mail");

@@ -68,22 +68,14 @@ const envKeys = ["DATABASE_URL", "SMTP_USERNAME", "SMTP_PASSWORD", "SMTP_HOST", "SMTP_PORT", "NODE_ENV"];

const db = new repository_1.PostgresRepository({ dbUrl: env.DATABASE_URL });
exports.serverRoutes = ({
findUser: server_1.route
.get
.url("/:app/users/:id")
exports.routes = ({
findUser: (0, http_1.queryFactory)("get")
.url(`/:app/users/:id`)
.queryType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
const users = yield db
.getAsync("usersReadonly", {
filters: [
{
fieldName: "userId",
operator: "equals",
value: args.id
},
{
fieldName: "app",
operator: "equals",
value: args.app
}
{ fieldName: "userId", operator: "equals", value: args.id },
{ fieldName: "app", operator: "equals", value: args.app }
]

@@ -95,10 +87,10 @@ });

throw `The requested resource could not be found but may be available in the future.`;
// statusCodes.NOT_FOUND
// statusCodes.NOT_FOUND)
})),
verify: server_1.route
.post
verify: (0, http_1.bodyFactory)("post")
.url("/:app/verify")
.bodyType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
const { emailAddress, verificationCode, accessLevel } = args;

@@ -121,8 +113,8 @@ const users = yield db.getAsync("users", {

})),
register: server_1.route
.post
register: (0, http_1.bodyFactory)("post")
.url("/:app/register")
.bodyType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
console.log(`Starting user registration for ${(0, standard_1.stringify)(args)} in auth service`);

@@ -146,8 +138,8 @@ try {

})),
authenticate: server_1.route
.get
authenticate: (0, http_1.queryFactory)("get")
.url("/:app/authenticate")
.queryType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
// console.log(`Handling API repo Find with body ${stringify()}`)

@@ -160,12 +152,12 @@ const user = yield db.extensions.auth.authenticateAsync({ email: String(args["email"]), pwd: String(args["pwd"]) }, args.app);

})),
deactivate: server_1.route
.delete
deactivate: (0, http_1.queryFactory)("delete")
.url("/:app/deactivate/:id")
.queryType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
// console.log(`Handling API repo DELETE with entity = ${entity} and id = ${stringify(req.params.id)}`)
return db
.deleteAsync("users", args.id)
.then(() => null)
.then(() => ({}))
.catch(err => {

@@ -176,8 +168,8 @@ console.error(err);

})),
logResourceAccess: server_1.route
.post
logResourceAccess: (0, http_1.bodyFactory)("post")
.url("/:app/res_access_counts")
.bodyType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
console.log(`Starting access logging for ${(0, standard_1.stringify)(args)}`);

@@ -198,8 +190,8 @@ try {

})),
getResourceAccess: server_1.route
.get
getResourceAccess: (0, http_1.queryFactory)("get")
.url("/:app/res_access_counts")
.queryType()
.headersType()
.returnType()
.handler((args) => __awaiter(void 0, void 0, void 0, function* () {
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () {
// console.log(`Starting access logging for ${stringify(req.body)}`)

@@ -232,8 +224,8 @@ try {

})),
default: server_1.route
.get
default: (0, http_1.queryFactory)("get")
.url('/*')
.queryType()
.headersType()
.returnType()
.handler((args) => {
.handler(() => (args) => {
console.warn(`Handling unknown API route ${args.url}`);

@@ -243,3 +235,4 @@ throw common_1.statusCodes.NOT_FOUND;

});
(0, server_1.startServer)({
// const u = routes.findUser.proxyFactory("", {})({ app: "", id: "" })
(0, http_1.startServer)({
name: "auth",

@@ -264,9 +257,10 @@ routes: [

// API
exports.serverRoutes.register,
exports.serverRoutes.verify,
exports.serverRoutes.authenticate,
exports.serverRoutes.deactivate,
exports.serverRoutes.logResourceAccess,
exports.routes.register,
exports.routes.verify,
exports.routes.authenticate,
exports.routes.deactivate,
exports.routes.logResourceAccess,
],
port: 49722
port: 49722,
context: db
});

@@ -319,2 +313,38 @@ // start server

*/
/*export const proxies = {
findUser: queryProxyFactory("get")
.url(`/:app/users/:id`)
.queryType<ObjEmpty>()
.returnType<User>(),
verify: queryRouteFactoryFluent("post")
.url("/:app/verify")
.bodyType<{ emailAddress: string, verificationCode: string, accessLevel: UserAccessLevel }>()
.returnType<User>(),
register: bodyProxyFactory("post")
.url("/:app/register")
.bodyType<User & { password?: string | undefined; verificationCode: string }>()
.returnType<User>(),
authenticate: queryProxyFactory("get")
.url("/:app/authenticate")
.headersType<{ email: string, pwd: string }>()
.returnType<User>(),
deactivate: queryProxyFactory("delete")
.url("/:app/deactivate/:id")
.queryType<Obj<never>>()
.returnType<null>(),
logResourceAccess: bodyProxyFactory("post")
.url("/:app/res_access_counts")
.bodyType<{ userId: string, resourceCode: string, resourceType: string }>()
.returnType<ResourceAccessCount>(),
getResourceAccess: queryProxyFactory("get")
.url("/:app/res_access_counts")
.queryType<{ user_id: string, resource_code: string }>()
.returnType<ResourceAccessCount[]>()
}*/
/*const prx = routes.verify[3]

@@ -321,0 +351,0 @@ const x = prx("auth.com/:cat/api")({

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc