Important
Now requires Node 18 and up! Please upgrade your node version.
Versions 1.1.0 and below are DEPRECATED! Please upgrade to the latest version.
Note
Build by students, for students, with β€οΈ. NOT affiliated nor endorsed by official OSU.
Requires Node.js >= 18
# Using npm:
npm install @keminghe/osu
# Using yarn:
yarn add @keminghe/osu
# Using pnpm: (recommended)
pnpm add @keminghe/osu
// Using OSU email validator functions.
import {
isNameDotNum,
isOSUDotEduEmail,
isBuckeyemail,
isOSUEmail,
} from "@keminghe/osu";
isNameDotNum("buckeye.1"); // true
isOSUDotEduEmail("buckeye.1@osu.edu"); // true
isBuckeyemail("buckeye.1@buckeyemail.osu.edu"); // true
isOSUEmail("non-osu@gmail.com"); // false
// Using OSU name dot num and email RegExp patterns.
import {
NAME_DOT_NUM_PATTERN,
OSU_DOT_EDU_EMAIL_PATTERN,
BUCKEYEMAIL_PATTERN
} from "@keminghe/osu";
NAME_DOT_NUM_PATTERN.test("buckeye.1"); // true
OSU_DOT_EDU_EMAIL_PATTERN.test("buckeye.1@osu.edu"); // true
BUCKEYEMAIL_PATTERN.test("buckeyemail.1@buckeyemail.osu.edu"); // true
import { getUndergradMajors, type UndergradMajor } from "@keminghe/osu";
const majors: UndergradMajor[] = getUndergradMajors();
console.log(majors);
import { getStudentOrgs, type StudentOrg } from "@keminghe/osu";
const orgs: StudentOrg[] = getStudentOrgs();
console.log(orgs);
import { getResearchPostingsAsync } from "@keminghe/osu";
getResearchPostingsAsync()
.then((researchPostings) => {
console.log(researchPostings);
})
.catch((error) => {
console.error(error);
});
// Or use with async/await.
DEPRECATED v1.1.0 Documentation
import { isNameDotNumber, isOSUEmail, isBuckeyemail, isOSUOrBuckeyemail } from "@keminghe/osu";
const flag1 = isNameDotNumber("brutus.1"); // true
const flag2 = isNameDotNumber("adams-brown-catlyn.3"); // true
const flag3 = isOSUEmail("brutus.1@osu.edu"); // true
const flag4 = isBuckeyemail("brutus.1@buckeyemail.osu.edu"); // true
const flag5 = isOSUOrBuckeyemail("non-osu@email.com"); // false
import osu from "@keminghe/osu";
const majors = osu.undergrad.majors;
console.log(majors);
import osu from "@keminghe/osu";
const studentOrgs = osu.studentOrgs;
console.log(studentOrgs);
/**
* TypeScript type inferred from the `StudentOrg` Zod schema.
*
* This type represents the structure of a student organization object as defined by the `StudentOrg` schema.
*
* @typedef {Object} StudentOrg
* @property {string} name - Name of the student organization, represented by a non-empty string.
* @property {string | null} purposeStatement - Purpose statement of the student organization, represented by a non-empty string, or null if not applicable or missing data.
* @property {Campus[] | null} campuses - Campuses where the student organization is active, represented by a non-empty array of `Campus` objects, or null if not applicable or missing data.
* @property {StudentOrgCategory[] | null} categories - Categories of the student organization, represented by a non-empty array of `StudentOrgCategory` objects, or null if not applicable or missing data.
*/
export type StudentOrg = z.infer<typeof StudentOrgSchema>;
/**
* TypeScript type inferred from the `UndergradMajor` Zod schema.
*
* This type represents the structure of an undergraduate major object as defined by the `UndergradMajor` schema.
*
* @typedef {Object} UndergradMajor
* @property {string} major - Name of the major, represented by a non-empty string.
* @property {UndergradDegree[] | null} degrees - Array of undergraduate degrees associated with the major, represented by a non-empty array of `UndergradDegree` objects, or null if not applicable or missing data.
* @property {Campus[] | null} campuses - Campuses where the major is offered, represented by a non-empty array of `Campus` objects, or null if not applicable or missing data.
* @property {College | null} college - College where the major belongs, represented by a `College` object, or null if not applicable or missing data.
*
* @see {@link UndergradMajorInterface} for the equivalent native TypeScript interface.
*/
export type UndergradMajor = z.infer<typeof UndergradMajorSchema>;
/**
* TypeScript type inferred from the `ResearchPosting` Zod schema.
*
* This type represents the structure of a research posting object as defined by the `ResearchPosting` schema.
*
* @typedef {Object} ResearchPosting
* @property {string} title - Title of the research posting, represented by a non-empty string.
* @property {string} link - URL linking to the research posting, represented by a valid URL string.
* @property {string | null} applicationDeadline - Application deadline, represented by a non-empty string, or null if not applicable or missing data.
* @property {string | null} department - Department offering the research posting, represented by a non-empty string, or null if not applicable or missing data.
* @property {string | null} publicOrPrivate - Indicates whether the posting is public or private, represented by a non-empty string, or null if not applicable or missing data.
* @property {string | null} hoursPerWeek - Number of hours per week required, represented by a non-empty string, or null if not applicable or missing data.
* @property {string[] | null} compensationTypes - Types of compensation offered, represented by a non-empty array of non-empty strings, or null if not applicable or missing data.
*/
export type ResearchPosting = z.infer<typeof ResearchPostingSchema>;
Usage indicates agreement with the MIT license. More Info.