
Research
/Security News
Shai Hulud Strikes Again (v2)
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.
@63pokupki/components
Advanced tools
node typescript base class
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅ΡΡ Π΄Π»Ρ forntend ΠΈ backend
const errorSys = new ErrorSys(); // Π Π΅ΠΆΠΈΠΌ ΠΏΡΠΎΠ΄Π°, Π΄Π»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΡ ErrorSys('dev')
try{
throw errorSys.throwAccess('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ°');
} catch(e){
errorSys.errorEx(e, 'throwAccess-Success', 'ΠΡΠΎΠ²ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°')
}
try{
throw errorSys.throwValidRoute('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠΎΡΡΠΈΠ½Π³Π°');
} catch(e){
errorSys.errorEx(e, 'throwValidRoute-Success', 'ΠΡΠΎΠ²ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠΎΡΡΠΈΠ½Π³Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°')
}
try{
throw errorSys.throwLogic('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ');
} catch(e){
errorSys.errorEx(e, 'throwLogic-Success', 'ΠΡΠΎΠ²ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°')
}
try{
throw errorSys.throwValidDB('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΠ');
} catch(e){
errorSys.errorEx(e, 'throwValidDB-Success', 'ΠΡΠΎΠ²ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΠ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°')
}
try{
throw errorSys.throwValid('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΠΠ©ΠΠ');
} catch(e){
errorSys.errorEx(e, 'throwValid-Success', 'ΠΡΠΎΠ²ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°')
}
errorSys.errorEx(new Error(), 'error', 'ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΡΡΠ΅ΠΉΡΠΎΠΌ')
errorSys.error('simple_error', 'ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ');
errorSys.notice('notice', 'Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ');
errorSys.devNotice('devNotice', 'Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½Π° ΠΏΡΠΎΠ΄Π΅ Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ΅Ρ');
errorSys.warning('warning', 'ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ');
errorSys.devWarning('devWarnig', 'ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½Π° ΠΏΡΠΎΠ΄Π΅ Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ΅Ρ');
let traceList = errorSys.getTraceList();
console.log('===trace-list>', traceList);
let errList = errorSys.getErrors();
console.log('===error>',errList);
console.log('===notice>',errorSys.getNotice());
console.log('===warning>',errorSys.getWarning());
const rules = new System.ModelRulesC();
// ===========================
// ID
rules.set(rules.tpl('id_require_true_1', true)
.tplID('ID ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ')
);
rules.set(rules.tpl('id_require_false_1', true)
.tplID('ID ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ')
);
rules.set(rules.tpl('id_true_1')
.tplID('ID Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ')
);
// ==========================-
// TEXT
rules.set(rules.tpl('text_true_1', true)
.tplStr('Π’Π΅ΠΊΡΡ true_1')
);
// ===========================
// STR
rules.set(rules.tpl('str_true_1', true)
.tplStr('Π‘ΡΡΠΎΠΊΠ° true_1')
);
rules.set(rules.tpl('str_regex_true_1', true)
.tplStr('Π‘ ΡΠ΅Π³ΡΠ»Π°ΡΡΠ½ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ true_1')
.if(/^Π°ΠΈΡΡ[ΠΎΠΈ]ΠΊ$/)
);
rules.set(rules.tpl('str_regex_false_1', true)
.tplStr('Π‘ ΡΠ΅Π³ΡΠ»Π°ΡΡΠ½ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ false_1')
.if(/^Π°ΠΈΡΡ[ΠΎΠΈ]ΠΊ$/)
);
// =============================
// ENUM
rules.set(rules.tpl('enum_number_true_1', true)
.tplEnum('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ - enum_number_true_1')
.if([1,2])
);
rules.set(rules.tpl('enum_string_true_1', true)
.tplEnum('Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ - enum_string_true_1')
.if(['s1','s2', '1'])
);
const validator = new System.ModelValidatorSys(new System.ErrorSys('dev'));
validator.fValid(rules.get(), data);
validator.getResult();
====
const rules = new System.ModelRulesC();
rules.set(rules.rule('enum_boolean_true_1')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_true_1', 'enum_boolean_true_1')
);
rules.set(rules.rule('enum_boolean_true_2')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_true_2', 'enum_boolean_true_2')
);
rules.set(rules.rule('enum_boolean_true_3')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_true_3', 'enum_boolean_true_3')
);
rules.set(rules.rule('enum_boolean_true_4')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_true_4', 'enum_boolean_true_4')
);
rules.set(rules.rule('enum_boolean_false_1')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_false_1', 'enum_boolean_false_1')
);
rules.set(rules.rule('enum_boolean_false_2')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_false_2', 'enum_boolean_false_2')
);
rules.set(rules.rule('enum_boolean_false_3')
.type(System.ModelRulesT.enum)
.require()
.if([1,0])
.errorEx('enum_boolean_false_3', 'enum_boolean_false_3')
);
// =============================================
// NUMBER
rules.set(rules.rule('enum_number_true_1')
.type(System.ModelRulesT.enum)
.require()
.if([1,2])
.errorEx('enum_number_true_1', 'enum_number_true_1')
);
rules.set(rules.rule('enum_number_true_2')
.type(System.ModelRulesT.enum)
.require()
.if([1,2])
.errorEx('enum_number_true_2', 'enum_number_true_2')
);
rules.set(rules.rule('enum_number_false_1')
.type(System.ModelRulesT.enum)
.require()
.if([1,2])
.errorEx('enum_number_false_1', 'enum_number_false_1')
);
rules.set(rules.rule('enum_number_false_1')
.type(System.ModelRulesT.enum)
.require()
.if([1,2])
.errorEx('enum_number_false_1', 'enum_number_false_1')
);
// =================================================
// STRING
rules.set(rules.rule('enum_string_true_1')
.type(System.ModelRulesT.enum)
.require()
.if(['s1','s2', '1'])
.errorEx('enum_string_true_1', 'enum_string_true_1')
);
rules.set(rules.rule('enum_string_false_1')
.type(System.ModelRulesT.enum)
.require()
.if(['s1','s2', '1'])
.errorEx('enum_string_false_1', 'enum_string_false_1')
);
rules.set(rules.rule('enum_string_false_2')
.type(System.ModelRulesT.enum)
.require()
.if(['s1','s2', '1'])
.errorEx('enum_string_false_2', 'enum_string_false_2')
);
rules.set(rules.rule('enum_string_false_3')
.type(System.ModelRulesT.enum)
.require()
.if(['s1','s2', '1'])
.errorEx('enum_string_false_3', 'enum_string_false_3')
);
const validator = new System.ModelValidatorSys(new System.ErrorSys('dev'));
validator.fValid(rules.get(), data);
validator.getResult();
// ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 1
import { FieldValidator, ErrorSys } from "@63pokupki/components/lib";
let data = '20d00';
const errorSys = new ErrorSys();
let myValidator = new FieldValidator(errorSys, data)
.fSetErrorString('multy')
.fInt()
.fMoreOrEqual(5000)
.fLess(5000);
assert.ok(!myValidator.fIsOk());
assert.ok(errorSys.getErrorCount() == 3);
ΠΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ
{
"multy.isNotInt": "isNotInt",
"multy.isNotMoreOrEqualThan": "isNotMoreOrEqualThan",
"multy.isNotLessThan": "isNotLessThan"
}
// ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 2
import { FieldValidator, ErrorSys } from "@63pokupki/components/lib";
let data = 10000;
const errorSys = new ErrorSys();
let iArg1 = 1000;
let iArg2 = 1000;
const tstFnc = (arg1: number, arg2: number) => {
iArg1 = arg1;
iArg2 = arg2;
};
let myValidator = new FieldValidator(errorSys, data)
.fSetErrorString('multy')
.fInt()
.fMoreOrEqual(5000)
.fDoIfOk(tstFnc, [2, 3])
;
assert.ok(myValidator.fIsOk());
assert.ok(iArg1 == 2);
assert.ok(iArg2 == 3);
// ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 3
import { FieldValidator, ErrorSys } from "@63pokupki/components/lib";
let data = 10000;
const errorSys = new ErrorSys();
let iArg1 = 1000;
let iArg2 = 1000;
const tstFnc = (arg1: number, arg2: number) => {
return new Promise((resolve, reject) => {
iArg1 = arg1;
iArg2 = arg2;
resolve('funcOk');
})
};
let myValidator = new FieldValidator(errorSys, data)
.fSetErrorString('multy')
.fInt()
.fMoreOrEqual(5000);
let resp = await myValidator.fDoIfOkAsync(tstFnc, [2, 3]);
assert.ok(myValidator.fIsOk());
assert.ok(iArg1 == 2);
assert.ok(iArg2 == 3);
// ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 4
import { FieldValidator, ErrorSys } from "@63pokupki/components/lib";
const errorSys = new ErrorSys();
let login = 'user';
let pass = 'test pass';
let passConfirm = 'test pass';
const loginFnc = (login: string, pass: string) => {
// Do login
}
new FieldValidator(errorSys, login)
.fSetErrorString('login')
.fExist()
.fText()
.fMinLen(5)
.fSetData(pass)
.fSetErrorString('pass')
.fExist()
.fText()
.fMinLen(7)
.fSetData(passConfirm)
.fSetErrorString('passConfirm')
.fExist()
.fText()
.fMinLen(7)
.fEqual(pass)
.fDoIfOk(loginFnc, [login, pass]);
// ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 5 - Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π°Ρ Ρ-Ρ
import { FieldValidator, ErrorSys } from "@63pokupki/components/lib";
const errorSys = new ErrorSys();
let login = 'user';
let pass = 'test pass';
let passConfirm = 'test pass';
const faLoginFnc = async (login: string, pass: string) => {
// Do login ...
}
const faAfterloginFnc = async (someData: any) => {
// Do something ...
}
const myValidator = new FieldValidator(errorSys, login)
.fSetErrorString('login')
.fExist()
.fText()
.fMinLen(5)
.fSetData(pass)
.fSetErrorString('pass')
.fExist()
.fText()
.fMinLen(7)
.fSetData(passConfirm)
.fSetErrorString('passConfirm')
.fExist()
.fText()
.fMinLen(7)
.fEqual(pass);
myValidator.faDoIfOkAsync(() => faLoginFnc(login, pass))
.then((data: any) => myValidator.faDoIfOkAsync(() => faAfterloginFnc(data)))
.then((data: any) => myValidator.faDoIfOkAsync(() => faAfterloginFnc(data)))
.then((data: any) => myValidator.faDoIfOkAsync(() => faAfterloginFnc(data)))
;
FAQs
node typescript base class
We found that @63pokupki/components demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.Β It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.