open-index/open-npm huggingface dataset:
npm package: @scaffold.js/scaffold
Description: Generating test fixtures made easy
Author: Sreekar
Latest version: 0.1.0

# Scaffold.js

Creating test fixtures has never been so easy

### Installation

```npm install @scaffold.js/scaffold```

### Usage

```js
const scaffold = require('@scaffold.js/scaffold');
const pure = {
    functions: {
        email: function (firstName, lastName) {
            return firstName + '_' + lastName + '@gmail.com'
        }
    }
}
const schema = {
    types: {
        Employee: {
            id: 'id',
            name: 'string',
            contact: 'string',
            department: 'string',
            manager: 'Employee',
            email: {
                _func: [pure.functions.email, 'scaffold', 'awesome'],
            },
        },
    },
};
const {employeeGenerator} = scaffold({
    hasManyMin: 1,
    schema,
});
const employee = employeeGenerator();
const manager = employee.manager;
console.log(employee);
// {
//     id: 1,
//     name: 'non',
//     contact: 'sapien',
//     department: 'nec',
//     manager: [Getter],
//     email: 'scaffold_awesome@gmail.com'
// }
console.log(manager);
// {
//     id: 2,
//     name: 'nisi',
//     contact: 'adipiscing',
//     department: 'sapien',
//     manager: [Getter],
//     email: 'scaffold_awesome@gmail.com'
// }
```

Supports multiple in-built primitive types

```js
[
    boolean,
    date,
    float,
    id, // generates unique id
    number, // generates a random integer
    string, // generates a random word
    text, // generates a sentence
]
```

If the in built primitives are not sufficient you can always pass a pure function for a field like this

```js
const pure = {
    functions: {
        email: function (firstName, lastName) {
            return firstName + '_' + lastName + '@gmail.com'
        }
    }
}

{
    email: {
        _func: [pure.functions.email, 'scaffold', 'awesome']
    }
}
```

where the first element is a pure function where-as the rest of the elements are arguments to this function

### Relations in schema

A fixture in general will have one-many relation or one-one relation scaffold.js makes it easy to manage such relations
without any state dependency between them

#### One-Many

one-many relationship is made possible through _hasMany field within a type

```js
{
    User: {
        _hasMany: {
            friends: ['User']
        }
    }
}
// this will add a friends getter in the generated user fixture
{
    Student: {
        _hasMany: ['Course', 'Project']
    }
}
// this will pluralize 'Course', 'Project' to courses and projects and add them as getters to the generated Student fixture
```

### One-One

one-one relationship doesn't require a special field within a type

```js
{
    Employee: {
        manager: 'Employee'
    }
}
// scaffold.js will check if the 'Employee' type exist and attaches a manager getter to the generated employee fixture
```

check out an elaborate example [here](https://github.com/sreekar2307/scaffold.js/blob/master/examples/scaffold-git.js)
npm package: @scaffoldme/cli
Description: The Scaffoldme command line interface (CLI)
Latest version: 1.0.19

# scaffoldme-cli

The Scaffoldme command line interface (CLI)

**Documentation**: [https://github.com/scaffoldme/scaffoldme-cli](https://github.com/scaffoldme/scaffoldme-cli)

**Github Project**: [https://github.com/scaffoldme/scaffoldme-cli](https://github.com/scaffoldme/scaffoldme-cli)
npm package: @scaffs/angular
Description: Scaffs for quickly generating files for angular (2+)
Author: Lenny Urbanowski
Latest version: 1.0.2

# Angular Scaffs

A collection of scaffs for generating common files for angular. All scaffs are based directly off of the angular-cli blueprints.

### Why Scaffs instead of angular cli?

Scaffs adds the flexibility to generate files by right clicking in vs-code. It also allows for adjusting file indention and specifying a header for your files.

**Included Scaffs**

* class
* component
* directive
* enum
* interface
* module
* module (with routing)
* pipe
* service
npm package: @scaffscript/core
Description: A minimal superset language of GML with TypeScript-like module system
Latest version: 0.3.2

# ScaffScript

![ScaffScript Banner](./assets/Banner/banner1-4-1.webp)

A minimal superset language of **GameMaker Language** (GML) for creating module-based GameMaker source codes. This minimal language is mainly used for developing GML libraries, but can also be used for other purposes.

> [!CAUTION]
> ScaffScript is **not** affiliated with or endorsed by YoYo Games Ltd. GameMaker and GML are trademarks of YoYo Games Ltd. 

> [!WARNING]
> This project is still in early development. The syntax and features are subject to change. Use at your own risk.

---

## Key Features

- **TypeScript-like Module System**. Use `export`, `import`, and `include` to organize code across `.scaff` files, fully resolved at compile-time.
- **Class Syntax**. Define classes with constructors, properties, and methods that compile to GML struct constructors. Extend classes across files with `impl`.
- **Content Directives**. Inline compiled GML content (`@content`, `@valueof`, `@:`, etc.) directives for dynamic code insertion.
- **Special Values**. Access compile-time tokens like `@now`, `@today`, `@version`, `@file`, and `@line` for metadata and debugging.
- **Code Generation Blocks**. Use `#[blockName]` to define named content sections and `intg` to map them to GameMaker asset paths.
- **GameMaker Integration**. Automatically writes `.gml` files, generates `.yy` metadata, and updates your `.yyp` project file for scripts and objects.
- **File Scanning & Processing**. Recursive scanning of `.scaff` and `.gml` files with dependency-aware processing order.

---

## Installation & Documentation

For more information, please refer to the official [documentation](https://scaffscript.lefinitas.com).

---

## Questions & Feature Requests

Feel free to start a [discussion](https://github.com/undervolta/scaffscript/discussions) or open an [issue](https://github.com/undervolta/scaffscript/issues) for any questions or feature requests.

---

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

1. Fork the [repository](https://github.com/undervolta/scaffscript).
2. Clone the forked repository to your local machine.
3. Make and test your changes.
4. Commit your changes and push it to your forked repository.
5. Open a pull request to the main repository.

---

## Support

If you like this project, or this project helped you in any way, please consider supporting me on [Ko-fi](https://ko-fi.com/undervolta) or [Trakteer](https://trakteer.id/undervolta). Don't forget to leave a star! Your support is greatly appreciated!

---

## License

ScaffScript is **free** and **open-source**. It's licensed under the [MIT License](./LICENSE).
npm package: @scaffscript/create-project
Description: ScaffScript project initializer
Author: Undervolta
Latest version: 0.2.2

# @scaffscript/create-project

A CLI tool for initializing a new **ScaffScript** project.

> [!WARNING]
> This project is still in early development. The syntax and features are subject to change. Use at your own risk.

## Documentation

For more information, please refer to the official [documentation](https://scaffscript.lefinitas.com).

## Usage

```bash
bun create @scaffscript/project@latest

npm create @scaffscript/project@latest

pnpm create @scaffscript/project@latest
```

## Installation (Development)

1. Make sure you have [Bun](https://bun.sh) installed.
2. Clone this repository.
3. Install dependencies: 

```bash
bun install
```

4. Build the project:

```bash
bun run build
```

5. Link the project:

```bash
bun link
```

6. Use the CLI tool as described in the [Usage](#usage) section.

## License

MIT License

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.