New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

adria-forms

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

adria-forms - npm Package Compare versions

Comparing version 0.2.0 to 0.2.1

dist/form.d.ts

49

dist/index.d.ts

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

import "./types.js";
declare class Field<Attributes extends {
name: string;
rules: Rule[];
isRequired: {
error: string;
} | false;
}, FieldNames extends Readonly<string[]>> {
name: Attributes["name"];
fieldNames: FieldNames;
rules: Attributes["rules"];
isRequired: Attributes["isRequired"];
constructor(attributes: Attributes, fieldNames: FieldNames);
value: <Rule_1 extends ValueRuleType | ValueFieldRuleType | ArrayRuleType, Value extends Rule_1 extends ValueRuleType ? string : Rule_1 extends ValueFieldRuleType ? FieldNames[number] : readonly string[], ErrorMessage extends string>(rule: Rule_1, value: Value, errorMessage: ErrorMessage) => this;
number: <Rule_1 extends ArrayRuleType | NumberRuleType, Value extends Rule_1 extends NumberRuleType ? number : readonly number[], ErrorMessage extends string>(rule: Rule_1, value: Value, errorMessage: ErrorMessage) => this;
length: <Rule_1 extends NumberRuleType, Value extends number, ErrorMessage extends string>(rule: Rule_1, value: Value, errorMessage: ErrorMessage) => this;
type: <Rule_1 extends ArrayRuleType | TypeRuleType, Value extends Rule_1 extends TypeRuleType ? "string" | "number" : ("string" | "number")[], ErrorMessage extends string>(rule: Rule_1, value: Value, errorMessage: ErrorMessage) => this;
required: (errorMessage: string) => this;
}
declare type SerializedForm<F extends Field<{
name: string;
rules: any;
isRequired: any;
}, any>> = Partial<Record<F["name"], F["rules"]>>;
declare class Form<Fields extends Readonly<Field<{
name: string;
rules: Rule[];
isRequired: {
error: string;
} | false;
}, Readonly<string[]>>[]>> {
fields: Map<Fields[number]["name"], Fields[number]>;
constructor(...fields: Fields);
field: <Field_1 extends Fields[number]>(fieldName: Field_1["name"]) => Field_1;
serialize: () => SerializedForm<Fields[number]>;
validate: (formData: FormData) => Partial<Record<Fields[number]["name"], string>> | null;
}
export declare const createForm: <FieldNames extends readonly string[]>(...fieldNames: FieldNames) => Form<Field<{
name: FieldNames[number];
rules: [];
isRequired: false;
}, FieldNames>[]>;
export declare const parseForm: <S extends Partial<Record<any, any>>>(serializedForm: S) => Form<Field<{
name: Extract<keyof S, string>;
rules: [];
isRequired: any;
}, any>[]>;
export {};
export { Form } from "./form.js";

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

import { validate } from "./validate.js";
import "./types.js";
class Field {
name;
fieldNames;
rules;
isRequired;
constructor(attributes, fieldNames) {
this.name = attributes.name;
this.rules = attributes.rules;
this.isRequired = attributes.isRequired;
this.fieldNames = fieldNames;
}
value = (rule, value, errorMessage) => {
if (rule === "isField" || rule === "!isField") {
this.rules.push({
target: "value",
type: rule,
value: value,
error: errorMessage,
});
return this;
}
if (typeof value === "string") {
this.rules.push({
target: "value",
type: rule,
value,
error: errorMessage,
});
return this;
}
else {
this.rules.push({
target: "value",
type: rule,
value: value,
error: errorMessage,
});
return this;
}
};
number = (rule, value, errorMessage) => {
if (typeof value === "number") {
this.rules.push({
target: "number",
type: rule,
value,
error: errorMessage,
});
return this;
}
else {
this.rules.push({
target: "number",
type: rule,
value: value,
error: errorMessage,
});
return this;
}
};
length = (rule, value, errorMessage) => {
this.rules.push({
target: "length",
type: rule,
value,
error: errorMessage,
});
return this;
};
type = (rule, value, errorMessage) => {
if (value === "string" || value === "number") {
this.rules.push({
target: "type",
type: rule,
value,
error: errorMessage,
});
return this;
}
else {
this.rules.push({
target: "type",
type: rule,
value,
error: errorMessage,
});
return this;
}
};
required = (errorMessage) => {
this.isRequired = {
error: errorMessage,
};
return this;
};
}
class Form {
fields;
constructor(...fields) {
this.fields = new Map(fields.map((val) => [val.name, val]));
}
field = (fieldName) => {
return this.fields.get(fieldName);
};
serialize = () => {
const entries = Array.from(this.fields.entries());
return Object.fromEntries(entries.map(([key, value]) => {
return [key, value.rules];
}));
};
validate = (formData) => {
const errors = {};
this.fields.forEach((field, fieldName) => {
const formValue = formData.get(fieldName)?.toString();
if (formValue === undefined || formValue === "") {
if (field.isRequired !== false) {
errors[fieldName] = field.isRequired.error;
}
return;
}
let errorMessage = null;
field.rules.every((rule) => {
const valid = validate(rule, formValue, formData);
if (!valid) {
errorMessage = rule.error;
}
return valid;
});
if (!errorMessage)
return;
errors[fieldName] = errorMessage;
});
return Object.keys(errors).length > 0
? errors
: null;
};
}
export const createForm = (...fieldNames) => {
return new Form(...fieldNames.map((val) => new Field({
name: val,
rules: [],
isRequired: false,
}, fieldNames)));
};
export const parseForm = (serializedForm) => {
return new Form(...Object.entries(serializedForm).map(([key, value]) => new Field({
name: key,
rules: value,
isRequired: false,
}, [])));
};
export { Form } from "./form.js";
{
"name": "adria-forms",
"version": "0.2.0",
"version": "0.2.1",
"description": "A super simple form validation library",

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc