Skip to content

Commit

Permalink
🤖 Merge PR DefinitelyTyped#52261 [@types/parse] Add Parse Cloud Valid…
Browse files Browse the repository at this point in the history
…ators by @dblythy

* add parse cloud validators

* fix tests

* Update index.d.ts
  • Loading branch information
dblythy committed Apr 9, 2021
1 parent a0d1851 commit c8999e4
Show file tree
Hide file tree
Showing 4 changed files with 137 additions and 21 deletions.
43 changes: 36 additions & 7 deletions types/parse/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1305,6 +1305,27 @@ declare global {
user?: User;
}

interface ValidatorField {
type?: any;
constant?: boolean;
default?: any;
options?: any[]|Function;
error?: String;
}
interface ValidatorFields {
[field: string]: ValidatorField;
}
interface Validator {
requireUser?: boolean;
requireMaster?: boolean;
validateMasterKey?: boolean;
skipWithMasterKey?: boolean;
requireAnyUserRoles?: String[]|Function;
requireAllUserRoles?: String[]|Function;
fields?: ValidatorFields|String[];
requireUserKeys?: ValidatorFields|String[];
}

interface Cookie {
name?: string;
options?: CookieOptions;
Expand Down Expand Up @@ -1361,45 +1382,53 @@ declare global {
function afterDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeFindRequest<T>) => Promise<Query<T>> | Promise<void> | Query<T> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterFindRequest<T>) => any,
validator?: Validator|((request: FunctionRequest) => any),
): void;

function beforeLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function define(name: string, func: (request: FunctionRequest) => any): void;
function define(name: string, func: (request: FunctionRequest) => any, validator?: Validator|((request: FunctionRequest) => any)): void;
function define<T extends () => any>(
name: string,
func: (request: FunctionRequest<{}>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function define<T extends (param: { [P in keyof Parameters<T>[0]]: Parameters<T>[0][P] }) => any>(
name: string,
func: (request: FunctionRequest<Parameters<T>[0]>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
/**
* Gets data for the current set of cloud jobs.
Expand Down
29 changes: 29 additions & 0 deletions types/parse/parse-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,35 @@ async function test_cloud_functions() {
return 'Some result';
});

Parse.Cloud.define('AFunc', (request: Parse.Cloud.FunctionRequest) => {
return 'Some result';
}, {
requireUser: true,
requireMaster: true,
validateMasterKey: true,
skipWithMasterKey: true,
requireAnyUserRoles: ['a'],
requireAllUserRoles: ['a'],
fields: {
name: {
type: String,
constant: true,
default: true,
options: [],
error: 'invalid field.'
}
},
requireUserKeys: {
name: {
type: String,
constant: true,
default: true,
options: [],
error: 'invalid field.'
}
}
});

Parse.Cloud.define('AFunc', request => {
// $ExpectType Params
request.params;
Expand Down
43 changes: 36 additions & 7 deletions types/parse/ts3.6/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1265,6 +1265,27 @@ declare global {
user?: User;
}

interface ValidatorField {
type?: any;
constant?: boolean;
default?: any;
options?: any[]|Function;
error?: String;
}
interface ValidatorFields {
[field: string]: ValidatorField;
}
interface Validator {
requireUser?: boolean;
requireMaster?: boolean;
validateMasterKey?: boolean;
skipWithMasterKey?: boolean;
requireAnyUserRoles?: String[]|Function;
requireAllUserRoles?: String[]|Function;
fields?: ValidatorFields|String[];
requireUserKeys?: ValidatorFields|String[];
}

interface Cookie {
name?: string;
options?: CookieOptions;
Expand Down Expand Up @@ -1321,45 +1342,53 @@ declare global {
function afterDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeFindRequest<T>) => Promise<Query<T>> | Promise<void> | Query<T> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterFindRequest<T>) => any,
validator?: Validator|((request: FunctionRequest) => any),
): void;

function beforeLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function define(name: string, func: (request: FunctionRequest) => any): void;
function define(name: string, func: (request: FunctionRequest) => any, validator?: Validator|((request: FunctionRequest) => any)): void;
function define<T extends () => any>(
name: string,
func: (request: FunctionRequest<{}>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function define<T extends (param: { [P in keyof Parameters<T>[0]]: Parameters<T>[0][P] }) => any>(
name: string,
func: (request: FunctionRequest<Parameters<T>[0]>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
/**
* Gets data for the current set of cloud jobs.
Expand Down
43 changes: 36 additions & 7 deletions types/parse/ts4.0/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1268,6 +1268,27 @@ declare global {
user?: User;
}

interface ValidatorField {
type?: any;
constant?: boolean;
default?: any;
options?: any[]|Function;
error?: String;
}
interface ValidatorFields {
[field: string]: ValidatorField;
}
interface Validator {
requireUser?: boolean;
requireMaster?: boolean;
validateMasterKey?: boolean;
skipWithMasterKey?: boolean;
requireAnyUserRoles?: String[]|Function;
requireAllUserRoles?: String[]|Function;
fields?: ValidatorFields|String[];
requireUserKeys?: ValidatorFields|String[];
}

interface Cookie {
name?: string;
options?: CookieOptions;
Expand Down Expand Up @@ -1324,45 +1345,53 @@ declare global {
function afterDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeDelete<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeDeleteRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeSave<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeSaveRequest<T>) => Promise<void> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function beforeFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: BeforeFindRequest<T>) => Promise<Query<T>> | Promise<void> | Query<T> | void,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function afterFind<T extends Object = Object>(
arg1: { new (): T } | string,
func?: (request: AfterFindRequest<T>) => any,
validator?: Validator|((request: FunctionRequest) => any),
): void;

function beforeLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void): void;
function afterLogin(func?: (request: TriggerRequest<User>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterLogout(func?: (request: TriggerRequest<Session>) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void): void;
function beforeSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<File> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterSaveFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function beforeDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;
function afterDeleteFile(func?: (request: FileTriggerRequest) => PromiseLike<void> | void, validator?: Validator|((request: FunctionRequest) => any)): void;

function define(name: string, func: (request: FunctionRequest) => any): void;
function define(name: string, func: (request: FunctionRequest) => any, validator?: Validator|((request: FunctionRequest) => any)): void;
function define<T extends () => any>(
name: string,
func: (request: FunctionRequest<{}>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
function define<T extends (param: { [P in keyof Parameters<T>[0]]: Parameters<T>[0][P] }) => any>(
name: string,
func: (request: FunctionRequest<Parameters<T>[0]>) => Promise<ReturnType<T>> | ReturnType<T>,
validator?: Validator|((request: FunctionRequest) => any),
): void;
/**
* Gets data for the current set of cloud jobs.
Expand Down

0 comments on commit c8999e4

Please sign in to comment.