Skip to content
/ OSU Public template

Unofficial and publicly-available NPM data-package about The Ohio State University.

License

Notifications You must be signed in to change notification settings

KemingHe/OSU

Repository files navigation

@keminghe/osu

Unofficial and publicly-available NPM data-package about The Ohio State University.

supports CommonJS (link to wiki) Β  suports ECMAScript (link to wiki) Β  supports node18+ (link to nodejs.org) Β  dynamic codcov percentage badge

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.

  • Publicly-available data about OSU undergrad majors here.
  • Publicly-available data about OSU student organizations here.

βš™οΈ Installation

Requires Node.js >= 18

# Using npm:
npm install @keminghe/osu

# Using yarn:
yarn add @keminghe/osu

# Using pnpm: (recommended)
pnpm add @keminghe/osu

πŸš€ Quickstart

Using Validators

// 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 RegExp Patterns

// 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

Accessing All Undergrad Majors

import { getUndergradMajors, type UndergradMajor } from "@keminghe/osu";

const majors: UndergradMajor[] = getUndergradMajors();
console.log(majors);

Accessing All Student Organizations

import { getStudentOrgs, type StudentOrg } from "@keminghe/osu";

const orgs: StudentOrg[] = getStudentOrgs();
console.log(orgs);

Accessing All Undergrad Research Postings

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

(DEPRECATED v1.1.0) Using Validators

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

(DEPRECATED v1.1.0) Accessing Undergraduate Majors and Degrees

import osu from "@keminghe/osu";

const majors = osu.undergrad.majors;
console.log(majors);

(DEPRECATED v1.1.0) Accessing Student Organizations

import osu from "@keminghe/osu";

const studentOrgs = osu.studentOrgs;
console.log(studentOrgs);

πŸ“˜ API

StudentOrg Type

/**
 * 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>;

UndergradMajor Type

/**
 * 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>;

ResearchPosting Type

/**
 * 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>;

πŸ”‘ License

Usage indicates agreement with the MIT license. More Info.

🌱 Community

Alt