Important
Async accessors depend on jsdom
and are node
-only. For example: import { getResearchPostingsAsync } from "@keminghe/osu/async";
Use import from the synchronous @keminghe/osu
if you are working in a browswer environment.
Note
Build by students, for students, with ❤️. NOT affiliated by official OSU.
Requires Node.js >= 8.1.0 (es2017)
# 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("[email protected]"); // true
isBuckeyemail("[email protected]"); // true
isOSUEmail("[email protected]"); // 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("[email protected]"); // true
BUCKEYEMAIL_PATTERN.test("[email protected]"); // true
import {
getUndergradMajors,
type UndergradMajor,
UndergradMajorSchema,
} from "@keminghe/osu";
const majors: UndergradMajor[] = getUndergradMajors();
UndergradMajorSchema.array().parse(majors);
console.log(majors);
import {
getStudentOrgs,
type StudentOrg,
StudentOrgSchema,
} from "@keminghe/osu";
const orgs: StudentOrg[] = getStudentOrgs();
StudentOrgSchema.array().parse(orgs);
console.log(orgs);
import { ResearchPostingSchema, type ResearchPosting } from "@keminghe/osu";
// IMPORTANT: note the different async import path.
import { getResearchPostingsAsync } from "@keminghe/osu/async";
getResearchPostingsAsync()
.then((researchPostings) => {
ResearchPostingSchema.array().parse(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("[email protected]"); // true
const flag4 = isBuckeyemail("[email protected]"); // true
const flag5 = isOSUOrBuckeyemail("[email protected]"); // 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.
*/
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.