open-index/open-npm huggingface dataset:
npm package: @ibr/buffy
Description: Structured data decoder / encoder
Author: Michal Blaha
Latest version: 0.2.0

# @ibr/buffy
> Structured data decoder / encoder

```typescript
import { Encoder, Decoder, DefinitionRegistry, PropertiesConfig, NumberSize } from '@ibr/buffy';

const config: PropertiesConfig = ([
  {
    reserved: NumberSize.UInt8,
    fixed: 1,
  },
  {
    name: 'simple',
    value: { size: NumberSize.UInt8 },
  },
  {
    name: 'nested',
    properties: [
      {
        name: 'prop',
        value: { size: NumberSize.UInt8 },
      },
    ],
  },
  {
    name: 'array',
    value: [
      { size: NumberSize.UInt4 },
      { size: NumberSize.UInt2 },
      { size: NumberSize.UInt2 },
      { size: NumberSize.UInt16 },
    ],
  },
  {
    name: 'nestedArray',
    value: [
      { size: NumberSize.UInt2 },
      [
        { size: NumberSize.UInt2 },
        { size: NumberSize.UInt4 },
        {
          properties: [
            {
              name: 'value',
              value: { size: NumberSize.UInt16 },
            },
          ],
        },
      ],
    ],
  },
]);

const data = {
  simple: null,
  nested: { prop: 1 },
  array: [1, 1, 1, 1],
  nestedArray: [1, [1, 1, { value: 97 }]],
};

const buff = Buffer.from([
  0b00000001,
  0b11111111,
  0b00000001,
  0b00010101,
  0b00000001,
  0b00000000,
  0b01010001,
  0b01100001,
  0b00000000,
]);

const encoder = new Encoder([config]);
const decoder = new Decoder(new DefinitionRegistry(), config);

encoder.resultSize // => 9 (bytes)
encoder.encode(data) // => is equal to buff
decoder.decode(buff) // => is equal to data
```
npm package: @ibr/state-machine
Description: State machine for processing of data streams
Author: Michal Blaha
Latest version: 2.0.0-beta.5

# @ibr/state-machine
State machine for generating events from data streams

## Installation

```bash
$ yarn add @ibr/state-machine
```

## Using

```javascript
// javascript
const {StateMachine} = require('@ibr/state-machine');
```

```typescript
// typescript
import {StateMachine} from '@ibr/state-machine';
```

... more in examples
npm package: @ibracob.dev/odtu-cli
Description: ODTU CLI - access your METU courses from the terminal. Interactive, fun, arrow-key driven.
Author: ibracob.dev
Latest version: 1.0.0

# odtu-cli

Access your METU courses right from the terminal. Interactive, fun, arrow-key driven.

```
                          :
 :                       ::          ___       ___       ___       ___
 ::          :          ::          /\  \     /\  \     /\  \     /\__\
:::  ::     ::         :::         /::\  \   /::\  \    \:\  \   /:/ _/_
:::::::    :::::::::::::::        /:/\:\__\ /:/\:\__\   /::\__\ /:/_/\__\
 ::::::::::::::::::::::::         \:\/:/  / \:\/:/  /  /:/\/__/ \:\/:/  /
 :::::::::::::::::::::             \::/  /   \::/  /   \/__/     \::/  /
         :::::                      \/__/     \/__/               \/__/
         :::
         :::
        ::::
        :::     welcome to odtu cli v1.0         built with <3 by ibracob.dev
```

## Install

```bash
npm install -g odtu-cli
```

## Usage

```bash
odtu                    # show banner + help
odtu login              # interactive login wizard
odtu courses            # list enrolled courses
odtu grades             # grades overview
odtu grades <id>        # detailed grades for a course
odtu assignments        # all assignments
odtu deadlines          # upcoming events (next 14 days)
odtu announcements      # announcements across all courses
odtu announcements <id> # announcements for one course
odtu contents <id>      # course sections & activities
odtu forums <id>        # forums in a course
odtu dashboard          # full overview
odtu switch             # change semester
odtu status             # check session
odtu logout             # clear session
```

## Features

- Arrow-key semester & year selection
- Dithering ASCII banner animation
- Auto re-login when session expires (credentials saved locally)
- Gradient-colored UI with spinners and boxed panels
- Supports Fall, Spring & Summer semesters
- Academic year display (e.g. 2025-2026)
- Grades via HTML scraping (Moodle doesn't expose them via API)
- Assignment fallback scraping when API fails

## How it works

Authenticates against METU's Moodle instance (`odtuclass{year}{semester}.metu.edu.tr`) using session-based auth. Calls the Moodle AJAX API for courses, calendar, forums, and scrapes HTML for grades and assignments.

Session is saved to `~/.odtuclass/session.json` with `0600` permissions.

## License

MIT