Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@quenty/loader

Quenty23kMIT10.8.3

A simple module loader for Roblox

Roblox, Nevermore, Lua

readme

Loader

A simple module loader for Roblox

Installation

npm install @quenty/loader --save

Installation with NPM

Install via NPM like this:

npm install @quenty/loader --save

New features and requirements

  1. Convert between NPM and Wally format
    1. Replicate/build out correct models
    2. Preserve single script instance for debugging
    3. Create bounces
  2. Convert between Wally format and Nevermore original format
  3. Understand object values at the NPM level -> Wally format

Bootstrapping

local LoaderUtils = require(ServerScriptService.Modules:FindFirstChild("LoaderUtils", true))
LoaderUtils.toWallyFormat(ServerScriptService.Modules, {
    Client = ReplicatedStorage;
    Shared = ReplicatedStorage;
    Server = ServerScriptService;
})

Algorithm

We assume is a folder is a package if it contains a "dependencies" folder. For a given package folder, all packages underneath it shall have...

  1. Access to every other package that is not in the dependencies folder
  2. Access to every package in the dependency folder at the 1st level of recursion
  3. Access to every package in the dependency folder at each ancestor level at the 1st level of recursion
  4. Access to every sibling package (this is because we expect to be installed at a uniform level)

  • A module will be defined by a module script
  • A junction will be defined by a place with a "Dependencies" folder and will have access to its dependency folder, and all ancestors, but not siblings
  • A junction will give all modules underneath it access

  • Modules expect external dependencies to be at script.Parent

  • Modules will be split between client/server/shared based upon their parent
  • Dependencies will be any modules up to the root
  • For conflicts, the first copy available will be used (Start at a tree, go up one node, and look all the way down for a copy)
  • Modules will prefer to be parented directly, at a top level, without a bouncer

    • However, if a requirement is needed at a separate version, the module will be parented to its own folder, and a bounce script will point to it.
    • All required modules that it may need will point back to this module.
  • Discover junctions and

  • If there are no conflicts, then just link the shared modules for the server to consume, and we're done.
  • If there are conflicts, than we need to build 2 trees for each conflict.
    1. Identify junction
        A
    B        C
Maid1    Other    Maid2

changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

10.8.3 (2025-04-10)

Note: Version bump only for package @quenty/loader

10.8.2 (2025-04-07)

Bug Fixes

  • Add types to packages (2374fb2)
  • Bump package versions for republishing (ba47c62)

10.8.1 (2025-04-07)

Bug Fixes

10.8.0 (2025-02-18)

Bug Fixes

  • Support loading in plugins (d7799a4)

10.7.1 (2024-11-04)

Note: Version bump only for package @quenty/loader

10.7.0 (2024-10-06)

Bug Fixes

  • Replicator replicates attributes and tags properly (3c7f020)

10.6.0 (2024-10-04)

Bug Fixes

  • Maid:Add reports the correct method name in error (3d31b0d)

Performance Improvements

  • Order maid tasks by most common access scenarios and reduce query of typeof() calls (2f6c713)

10.5.0 (2024-09-25)

Bug Fixes

  • Rename :sub() to string.sub (6874e06)

10.4.0 (2024-09-12)

Bug Fixes

Features

10.3.0 (2024-05-09)

Bug Fixes

  • Fix .package-lock.json replicating in packages (75d0efe)
  • Fix hoarcekat asset addition logic (89e2c18)
  • Immediate replication mode for loader and ability to bootstrap stories faster (43967ec)

10.2.0 (2024-04-27)

Note: Version bump only for package @quenty/loader

10.1.0 (2024-03-09)

Note: Version bump only for package @quenty/loader

10.0.0 (2024-02-14)

Bug Fixes

  • Fix loader tracking going infinite (cd67bf3)

9.0.0 (2024-02-13)

Bug Fixes

  • Fix bootstrap of test environments and loader samples (441e4a9)

8.0.0 (2024-02-13)

Features

  • New loader (breaking changes), fixing loader issues (#439) (3534345)

BREAKING CHANGES

  • Standard loader

Adds new loader version which replicates full structure instead of some partial structure. This allows us to have hot-reloading (in the future), as well as generally do less computation, handle dependencies more carefully, and other changes.

This means you'll need to change you how require client-side modules, as we export a simple loader module instead of all modules available.

Signed-off-by: James Onnen jonnen0@gmail.com

  • fix: Fix missing dependency in ResetService

  • feat: Add RxPhysicsUtils.observePartMass

  • fix: Fix package discovery for games

  • feat: Add UIAlignmentUtils.verticalToHorizontalAlignment(verticalAlignment) and UIAlignmentUtils.horizontalToVerticalAlignment(horizontalAlignment)

  • feat: AdorneeData:InitAttributes() does not require data as a secondparameter

  • ci: Upgrade to new rojo 7.4.0

  • fix: Update loader to handle hoarcekat properly

  • docs: Fix spacing in Maid

  • fix: Add new ragdoll constants

  • fix: Compress influxDB sends

  • style: Errors use string.format

  • fix: Handle motor animations

  • ci: Upgrade rojo version

  • feat!: Maid no longer is includd in ValueObject.Changed event

  • docs: Fix docs

7.3.0 (2024-01-08)

Features

Performance Improvements

  • Cache loader require values (bab28c9)

7.1.0 (2023-12-14)

Features

  • Reduce duplicate __call() and __index code (422d019)
  • Return server, client, and shared folders so they can be renamed (8a12f42)

7.0.0 (2023-10-11)

Note: Version bump only for package @quenty/loader

6.3.0 (2023-08-23)

Features

  • Add Maid:Add() which returns the task you pass into the maid (bf9e3d6)

6.2.1 (2023-04-07)

Bug Fixes

  • Loader provides better error message (777f5eb)

6.2.0 (2023-03-05)

Bug Fixes

  • Maids would sometimes error while cancelling threads they were part of. This ensures full cancellation. (252fc3a)

6.1.0 (2023-02-21)

Note: Version bump only for package @quenty/loader

6.0.1 (2022-11-04)

Bug Fixes

  • Fix hoarcekat stories not loading correctly when installed in a flat version of the repository (for example, via normal npm install @quenty/blend) (02772ca)

6.0.0 (2022-09-27)

Bug Fixes

  • Add untested hot reloading loader replication logic (384a8f1)

Features

  • Support hiding server code behind the camera (afc0e0a)

5.0.1 (2022-08-16)

Note: Version bump only for package @quenty/loader

5.0.0 (2022-05-21)

Bug Fixes

  • Handle objectvalues linked in the actual package folder (as top-level packages) (b678f55)

4.1.0 (2022-03-27)

Note: Version bump only for package @quenty/loader

4.0.0 (2022-03-06)

Bug Fixes

  • Duplicate module info actually errors properly (d3d451f)

3.4.0 (2022-01-17)

Features

  • Allow plugins to be bootstrapped allowing access to both client and server code within the plugin. (6147051)

3.3.0 (2022-01-07)

Bug Fixes

  • Centralize loader constants (2bfd287)

3.2.0 (2022-01-03)

Bug Fixes

3.1.2 (2021-12-30)

Note: Version bump only for package @quenty/loader

3.1.1 (2021-10-30)

Bug Fixes

  • Allow NexusUnitTest to load packages for unit testing (4ea04fa)

3.1.0 (2021-10-02)

Features

  • Loader performance optimizations (5a99a48)

3.0.1 (2021-09-18)

Bug Fixes

  • Better warnings in loader and also allow multiple groups (7215ba4)
  • Handle deferred mode and loader in test mode in loader (514cd90)

3.0.0 (2021-09-11)

Bug Fixes

  • Misc loading issues fixed, including loading injection and other issues (8fc255b)

2.1.0 (2021-09-05)

Bug Fixes

  • Discover top level module scripts (23fc167)
  • Ensure loader injects itself (b5d9a83)
  • Loader allows container (988eefd)

2.0.0 (2021-09-05)

Bug Fixes

  • Remove peer dependencies. This is because lerna doesn't really support peer dependencies being linked and getting a new version on build, which is unfortunate. (5f5aeee)

1.2.0 (2021-07-31)

Bug Fixes

  • Add CI and CD (47513e9)
  • Adjust CI badge to show automatic build and release state (5a55d3f)
  • Fix selene linting (45fc074)

1.0.2 (2021-07-25)

1.0.1 (2021-07-25)

1.0.0 (2021-07-24)