Documentation index
1550 entries across 13 libraries: every namespace, class, function and element, and every guide. Methods are listed on their class's page, and the search box finds them.
Namespaces106
MMO.editor.ALLOWED_STYLESjs The css properties an allowed
styleattribute keeps.MMO.editor.ALLOWED_TAGSjs The html the editor produces and accepts:
tag => allowed attributes.MMO\core\arrays 21 functions.
MMO\core\attributes 8 classes.
MMO\admin\classes 2 abstract classes.
MMO\client\classes 1 classes.
MMO\core\classes 13 abstract classes, 1 classes, 13 traits.
MMO\git\classes 2 abstract classes.
MMO\oauth\classes 2 abstract classes, 4 traits.
MMO\pdo\classes 1 abstract classes.
MMO\client 8 classes, 3 functions.
MMO\core\code 8 functions.
MMO\core\colors 5 functions.
MMO.configjs This class is a mockup of the php entity
MMO\client\entities\JSConfigit should be replaced by the server configMMO\admin\controllers 3 classes.
MMO\client\controllers 6 classes.
MMO\core\controllers 6 classes.
MMO\doc\controllers 4 classes.
MMO\edms\controllers 2 classes.
MMO\git\controllers 1 classes.
MMO\oauth\controllers 1 classes.
MMO\rpg\controllers 1 classes.
MMO\core 9 classes.
MMO.customElementsjs MMO\core\dates 19 functions.
MMO.schemas.DATE_FORMATjs MMO\core\debug 16 functions.
MMO\doc 16 functions, 9 classes.
MMO\core\documents 6 classes.
MMO\edms 1 classes.
MMO\admin\entities 4 classes.
MMO\client\entities 10 classes.
MMO\core\entities 3 enums, 10 classes.
MMO\edms\entities 2 classes.
MMO\oauth\entities 7 classes.
MMO\rpg\entities 3 classes, 1 enums.
MMO\math\enums 6 enums.
MMO\client\events 1 classes.
MMO\core\events 12 classes.
MMO\edms\events 1 classes.
MMO\oauth\events 2 classes.
MMO\client\exceptions 2 exceptions.
MMO\core\exceptions 14 exceptions.
MMO\edms\exceptions 1 exceptions.
MMO\oauth\exceptions 13 exceptions.
MMO\pdf\exceptions 4 exceptions.
MMO\pdo\exceptions 1 exceptions.
MMO\core\files 33 functions.
MMO.inputs.GESTURESjs MMO\git 2 classes.
MMO\oauth\google 3 classes, 1 interfaces, 1 traits.
MMO\admin\helpers 18 classes.
MMO\core\helpers 2 abstract classes, 27 classes, 4 enums.
MMO\doc\helpers 2 classes.
MMO\edms\helpers 3 classes.
MMO\git\helpers 9 classes.
MMO\math\helpers 9 classes.
MMO\oauth\helpers 1 classes.
MMO\pdf\helpers 1 classes.
MMO\pdo\helpers 3 classes.
MMO.core.HTMLColorsjs MMO.core.htmlentitiesReplacementsjs MMO.schemas.IDSjs List of all external schemas
MMO\client\interfaces 2 interfaces.
MMO\core\interfaces 33 interfaces.
MMO\edms\interfaces 1 interfaces.
MMO\git\interfaces 1 interfaces.
MMO\math\interfaces 12 interfaces.
MMO\oauth\interfaces 12 interfaces.
MMO\pdo\interfaces 1 interfaces.
MMO\math\iterators 2 classes.
MMO\doc\js 3 classes.
MMO\oauth\keys 4 classes.
MMO\math 18 functions.
MMO.schemas.MESSAGESjs Annotation error messages
MMO\doc\models 6 classes.
MMO\mongodb 1 functions, 3 classes.
MMO.core.dom.NAMESPACE_URISjs MMO\client\scs\nodes 32 classes, 1 abstract classes.
MMO\oauth 23 functions, 2 classes.
MMO\core\objects 18 functions.
MMO\math\operations 4 classes.
MMO\core\packages 3 functions.
MMO\core\paths 24 functions.
MMO\pdf 1 classes.
MMO\pdo 5 classes.
MMO\doc\php 1 classes.
MMO\core\printers 8 classes.
MMO.core.transitions.profilesjs MMO.editor.registeredToolsjs The tools
<mmo-editor>can show, by name.MMO.core.ResponsiveTablejs MMO.core.ResponsiveTable
MMO\rpg 4 functions.
MMO\core\schemas 1 abstract classes, 7 functions, 13 classes.
MMO\client\scs 19 classes, 1 enums.
MMO\core\server 32 functions, 1 enums, 21 classes.
MMO\edms\server 1 classes.
MMO\core\shell 64 functions.
MMO\pdo\statements 9 classes.
MMO\edms\storages 1 classes.
MMO.core.stringsjs MMO\core\strings 50 functions.
MMO\admin\tasks 10 classes.
MMO\core\uris 16 functions.
MMO.schemas.VALIDATORSjs Schema vocabulary validators
MMO\core\versions 15 functions.
MMO\rpg\xp 15 classes, 1 interfaces.
Classes418
MMO\edms\helpers\Access Who can do what with a file or a label: the one place edms answers it, for its routes and for its listings.
MMO\oauth\controllers\AccessController MMO\oauth\entities\AccessToken MMO.core.history.Actionjs MMO\admin\tasks\ActivateTask The deploy itself: point
currentat the new release.MMO\core\classes\aDataController A controller specialized for JSON data APIs backed by one or more iRepository instances.
MMO\rpg\xp\AddictionCurve Addiction (inverted).
MMO\core\controllers\AdminController CLI admin commands (status, phpinfo, package listing/building, cron management), run via the shell request dispatcher (aShellController) -- each
route_*method backs one#[Command]/`#[Inte…MMO.editor.tools.Alignjs The alignment of the current block: a button showing it, which opens the four choices.
MMO.schemas.Annotationjs The result of validating one value against a schema: whether it passed, and why not.
MMO.edms.Apijs The api of mmo.edms (
controllers/FileController.phpon the server)MMO.core.APIRequesterjs Wrapper to query any API implementing JSON API
MMO\core\attributes\APIRoute Class to use to match a route in the router.
MMO\core\Application This is the main module of the framework: - listen on the php signals : shutdown, error, exception, autoload - route request and send response to the server - log everything - plan jobs (CRON like)
MMO\math\operations\ArithmeticOperation MMO.schemas.ArrayAnnotationjs The annotation of an array: one child annotation per item.
MMO\core\attributes\ArrayProperty Declares a single named property of a \MMO\core\classes\tArrayProperties-using class: how to read it (getter), write it (setter), persist it (store), and its JSON-Schema.
MMO\core\schemas\ArrayValidator Validator for a PHP array value -- which, per JSON Schema, can be EITHER the 'array' type (a list) or the 'object' type (a map): $testArray/$testObject decide which, from the value's own …
MMO.schemas.aSchemajs Base class for all schemas
MMO\admin\tasks\AssertArtifactTask Read the finished artifact back and refuse to ship it if it contains anything that must never leave a developer's machine.
MMO\client\scs\nodes\AtRuleNode A css at-rule the language does not interpret (
@media,@supports,@keyframes,@font-face, ...).MMO\edms\events\Attach A client attaches a file to an entity of the application (an upload's
attachment): edms cannot know who may, the application answers.MMO\oauth\entities\AuthCode MMO\core\events\Autoload Dispatched when an unknown class is referenced, giving listeners a chance to load/register it (a PSR-4-autoloader-style hook built on the event system instead of
spl_autoload_register).MMO\admin\tasks\BackupTask Dump the target's database into its own
backups/, and optionally bring the dump back here.MMO\client\scs\nodes\BinaryNode A binary operation:
$base * 3,$a == $b,$a and $b.MMO\pdo\statements\Binds The ordered list of values a render actually emitted a
?placeholder for.MMO\admin\controllers\BoardController The kanban boards a release follows: each one a
<mmo-kanban>'s data, and its tickets' discussions, kept in a JSON file of its own,{folder}/{board}.json(KanbanBoard for the file).MMO\admin\helpers\BoardFileRepository A board file (
boards/{board}.json, KanbanBoard, served by \MMO\admin\controllers\BoardController) as a repository of mmo.client's kanban entities: oneKanbanBoard, itsKanbanTickets…MMO\git\helpers\BoardSync Merge two repositories of mmo.client's kanban entities (
KanbanBoard,KanbanTicket,KanbanComment) into each other, when asked: a local one -- aJsonRepository, mmo.mongodb's `MongoRepositor…MMO\git\controllers\BoardSyncShellController kanban sync, from the command line of an application listing it in its routes: merge a local repository of kanban entities (aJsonRepository, aMongoRepository) with GitHub (a `GitHubReposito…MMO\core\schemas\BooleanValidator Validator for a bool value -- adds no keywords of its own beyond Validator::KEYS.
MMO\core\helpers\BQuoteDomain Backticks
MMO\core\helpers\BracketsDomain Square brackets []
MMO\admin\tasks\BuildTask Turn a git commit into ONE immutable, versioned artifact:
build/{name}-{version}-{commit}-{libraries}.tar.gzplus its sha256.MMO\client\scs\Builtins The standard library of Simple CSS (the spec, 41).
MMO\client\entities\CalendarEvent MMO\doc\CallGraphAnalyzer Best-effort static call-graph scanner.
MMO\client\scs\nodes\CallNode A function call.
MMO\admin\helpers\Checklist A release checklist: everything to look at before a version is committed or shipped, one box per item -- or one per item and per member, when the team checks it together.
MMO\admin\helpers\ChecklistBuilder Builds the items of a release checklist (Checklist) from its recipe: what changed in the repositories, what the board's tickets say to check, and what no ticket covers.
MMO\admin\controllers\ChecklistController The release checklists: what to look at before a version is committed or shipped, each one a JSON file of
MMO.editor.tools.Clearjs Remove the text formatting of the selection: bold, italic, colours, code ...
MMO\oauth\entities\Client Any object that can exchange credential with an oauth server
MMO\oauth\ClientRepository User storage interface.
MMO.editor.tools.Codejs Inline code: wraps the selection in
<code>, or takes it out.MMO\oauth\entities\CodeAuthentifier Represent a configuration to use with the oauth code authentification
MMO\core\schemas\Coercer Converter from one type to another.
MMO\core\entities\Collection Entity container.
MMO.core.Colorjs MMO.editor.tools.Colorjs The text colour, or its highlight, chosen among the theme's colours.
MMO\core\attributes\Command An APIRoute specialized for CLI subcommands (method 'SHELL', matching any path via '**') -- see
MMO.editor.CommandTooljs A tool that runs one of the browser's editing commands (
document.execCommand).MMO\core\events\Commit Dispatched (via
\MMO\commit()) to persist a batch of entity changes -- each listening iRepository (\MMO\core\classes\aRepository::onCommit) picks out and stores the entities that belong…MMO\client\scs\CompilationContext The values a php application injects into a compilation, read from scs as
context::name.MMO\client\scs\Compiler The Simple CSS compiler: one instance compiles one stylesheet.
MMO\client\scs\nodes\ComponentNode `@component button { ...
MMO\client\scs\nodes\ConfigNode @config @screen.tablet = 768px-- sets a compiler option from the source.MMO\core\Configuration The framework's central configuration/DI container: a nested array of settings and lazily-instantiated objects (\MMO\core\objects\unserialize's
'$' => ClassNameconvention), addressable by p…MMO\math\operations\ConstraintOperation MMO\core\helpers\Container Implementation of PSR ContainerInterface: a nested, json-path-addressable data container (backed by
MMO\client\entities\Content Content to be shown by the page controller.
MMO\client\entities\ContentEditable MMO\client\entities\ContentEditableBlock MMO\admin\helpers\Context Everything one task needs to act on one target, and the place tasks hand results to each other:
MMO\client\scs\nodes\ContextNode context::density,context::design.spacing.md-- a value injected by the php application.MMO\core\server\Cookie An HTTP cookie, with import/export helpers for the common cookie-jar text formats (Netscape/cURL's classic tab-separated format -- NetscapeLine/toNetscapeLine/Netscape/ExportNet…
MMO\core\events\Create Dispatched to build an instance of $class, letting a listener answer with
$event->setReturn($instance)instead of a plainnew $class(...)-- e.g.MMO\pdo\statements\CreateStatement Ex1: $stmt = new CreateStatement($handler); $stmt->ifNotExists(); $stmt->temporary(); $stmt->table('test'); $stmt->fields(['id' => 'INT(3) UNSIGNED NOT NULL PRIMARY KEY', 'name' => 'VARCHAR(255) NO…
MMO\admin\helpers\Credentials The secrets a deployment needs, read from a file in the project that git never sees.
MMO\core\Cron Manage the current user's real system crontab (via the
crontabcommand).MMO\core\helpers\CronExp A parsed 5-field cron expression (
minute hour dayOfMonth month dayOfWeek), used by \MMO\core\Cron to schedule jobs.MMO\oauth\Crypt Configuration for the cryptographic functions
MMO\client\scs\CssRule One generated css rule, before emission.
MMO\core\printers\CsvPrinter A XlsxPrinter that renders to CSV text instead of xlsx cell values: same row/column flattening, but plain-text/RFC-4180-style quoting (exportString) instead of Excel formulas for repeated…
MMO\core\server\Curl A
curlextension wrapper: builds up request options fluently (setHeaders/setCookies/...), thenMMO\core\helpers\CurlyBracketsDomain Curly brackets {}
MMO\rpg\xp\CurveFactory MMO\rpg\entities\DailyEvent MMO\client\DartSass MMO\admin\helpers\Dashboard php scripts/admin.phpwith no command: one screen showing the project, its targets, its servers and what was deployed where -- beside the list of what can be done from here, one key each.MMO.core.Datejs MMO\admin\helpers\Declaration What every key of
deploy.jsonmeans, and a declaration that says it: every key of every server and target written, at its default when nobody chose it, each one with a comment saying what it does.MMO\client\scs\nodes\DeclarationNode property: value-- a css declaration.MMO.core.history.DeleteActionjs MMO\pdo\statements\DeleteStatement DELETE FROM table [WHERE …] [ORDER BY …] [LIMIT …]MMO\admin\entities\Deployment One line of a target's deployment journal (\MMO\admin\helpers\Journal), stored on the target itself in
deploy/deployments.json, and mirrored into the local store by \MMO\admin\tasks\Syn…MMO\doc\helpers\DocComment MMO\doc\controllers\DocController The generator's control panel: pick libraries, pick languages, (re)generate.
MMO\client\DocGenerator Generates the complete HTML documentation from a JSON file
MMO\doc\DocIndex Everything the documentation can point a reader at, in one list: what the index page lists and what the search box searches (\MMO\doc\controllers\DocPageController::routeIndex, \MMO\doc\c…
MMO\doc\models\DocMember One member of a symbol: a constant, a property, a method, a plain function, a custom element's attribute, a css hook or a slot.
MMO\doc\models\DocNode Base of every node of the documentation model (DocPage, DocSymbol, DocMember, DocParam).
MMO\doc\models\DocPage One generated documentation page: the unit both renderers work on.
MMO\doc\controllers\DocPageController Renders a generated documentation page as real html, instead of dropping its markdown into an
<mmo-markdown>.MMO\doc\models\DocParam One parameter of a function/method, or one attribute of a custom element -- whatever the language, a name, a type, an optional default and a description.
MMO\doc\models\DocSymbol One top-level documented thing: a php class/interface/trait/enum/function, a javascript class/function/ namespace, or a
.jhscustom element/view.MMO\doc\helpers\DocTag MMO\doc\models\DocType One rendered type expression, already resolved: the display text plus, for every atom of it, where that atom is documented.
MMO\core\documents\Document A renderable container for a controller/response's output data (its "body"), plus metadata: HTTP-style
Links (LinkProviderInterface), request/responselogs(\MMO\core\events\Log), fre…MMO\core\events\DocumentInit Dispatched whenever a document's body is (re)set (from
Document::__constructorDocument::setBody), letting listeners inspect or react to the new body (e.g.MMO\core\documents\DocumentOptions A document's options as named arguments, for its constructor:
new HtmlDocument(null, new DocumentOptions(...))stands fornew HtmlDocument(null, ['raw' => true, ...]), and a misspelled option i…MMO\doc\Documentor MMO\core\events\DocumentRender Dispatched by
Document::render(), letting a listener supply the rendered output itself (via setReturn) instead of the document's default printer -- e.g.MMO.math.Domainjs A set of numbers, held as a sorted list of disjoint MMO.math.Interval
MMO\math\helpers\Domain MMO\math\iterators\DomainIterator MMO\core\helpers\DQuoteDomain Double quotes
MMO.inputs.Dragjs Drag gesture Options: - button: the button type to use when starting to drag (MMO.inputs.BUT_LEFT| MMO.inputs.BUT_WHEEL| MMO.inputs.BUT_RIGHT) - ghost: a selector or an HTMLElement that is used to …
MMO\pdo\statements\DropStatement DROP TABLE [IF EXISTS] tableMMO\client\controllers\EditorController MMO\edms\controllers\EdmsShellController The upkeep of edms, from the command line of the application (listed in its routes): -
edms gc [--dry-run]: the garbage collector (FileManager::collectGarbage), to run every day or so; - `ed…MMO\core\entities\EmbeddedEntity An entity that lives embedded inside another entity's property ($parent/$key) instead of its own collection -- has no collection/repository of its own (getCollection/getReposito…
MMO\client\scs\Emitter Collects the generated CssRule and turns them into css: resolves
@order, groups the rules of a same at-rule (@media,@supports,@keyframes) together and formats the output.MMO\oauth\keys\EncryptionKey MMO.elements.Entityjs MMO\core\entities\Entity The framework's standard, storable entity: an id, a label/title, and creation/modification timestamps on top of \MMO\core\classes\aEntity's schema/property/change-tracking machinery, plus the …
MMO\client\scs\EvaluationContext Everything an authorized php function may need to know about where it is being called from: the injected compilation context, the css selector currently being emitted, the compile-time scope and th…
MMO\client\scs\Evaluator Evaluates expressions and renders css values.
MMO\core\events\Event Base class for every event/signal in the framework: just an $origin (whoever dispatched it) plus the
MMO\math\helpers\Event MMO.core.EventBindingjs MMO.core.EventEmitterjs MMO\doc\controllers\ExampleController Runs an
@examplesnippet from a symbol's own doc comment, in a sandbox (ExampleRunner), and returns its output as JSON.MMO\doc\ExampleRunner Runs an
@examplePHP snippet in an isolated, sandboxed subprocess.MMO\rpg\xp\ExponentialCurve XP(n) = base * rate^n — steep, long-horizon aspirational climb.
MMO.schemas.FalseSchemajs False schema (always invalidate the value)
MMO\core\schemas\FalseSchema The
falseJSON Schema: no value is valid, and coercion always fails.MMO\core\events\Fetch Dispatched to resolve a URL into a value: any registered listener that can answer it calls
$event->setReturn($value)(Signal), and the caller reads it back via Signal::getReturn.MMO\pdo\helpers\Field MMO.core.Filejs MMO\client\entities\File MMO\edms\entities\File A stored file: its name is the entity's
label, its bytes are kept by the storage (FileManager::getStorage) under getStorageKey.MMO\git\helpers\File One file inside a Repository, as
git statusreported it.MMO\edms\controllers\FileController The files over http, for the logged-in user (FileManager does the work, and checks the rights).
MMO\edms\FileManager The files and their labels: what edms does, whoever asks (its routes, controllers\FileController, or the application's code).
MMO\edms\server\FileResponse A stored file, sent as it is read: a download can be bigger than PHP's memory, which StreamResponse::render reads the whole stream into.
MMO\core\helpers\Filter A single filter: a set of path => condition pairs, ALL of which must match (an implicit AND) for test to pass.
MMO\core\helpers\FilterGroup A group of filters (or nested groups) combined with GroupOperator (AND/OR/NOR).
MMO\core\helpers\FilterPath A reference to another path in the SAME data being tested, e.g.
MMO\pdo\statements\FilterStatement MMO\core\helpers\FilterValue A single
operator + valuecondition, e.g.MMO\oauth\events\FlagsUpdate Event to notify that the client's flag has been updated.
MMO.editor.tools.Formatjs The kind of the current block -- paragraph, heading, code block -- as a drop-down list.
MMO\client\scs\nodes\ForNode `@for $i in 1..6 { ...
MMO\client\scs\Frame The css generation state at one point of the compilation: which selectors are being emitted, inside which at-rules, and at which
@orderpriority.MMO\client\scs\nodes\FunctionNode `@fn name($param) { return ...
MMO.inputs.Gesturejs Gesture Options: - allow_move: {Boolean} true to capture mouse move - allow_out: {Boolean} true to allow mouse to go out of the element Events : - fail - done - start - stop - update
MMO\git\Git The package's configuration: where the
gitbinary is, whether it has to run throughsudo, and how long a single command may take.MMO\git\GitHubAPI A thin client for the GitHub REST API, for the things a repository cannot answer on its own: pull requests, issues, releases and the state of a branch on the server.
MMO\git\helpers\GitHubRepository A GitHub project, or a repository's issues, as a repository of mmo.client's kanban entities: one
KanbanBoard, itsKanbanTickets, and theirKanbanComments.MMO\rpg\xp\GompertzCurve Gompertz (asymmetric mastery curve).
MMO\oauth\google\GoogleAPI MMO\oauth\google\GoogleController Controller to authenticate user with Google.
MMO\oauth\google\GoogleUser MMO\doc\Graphviz MMO\core\helpers\GroupDomain A generic group domain delimited by two ALREADY-REGISTERED tokens (referenced by their id, e.g.
MMO\rpg\xp\HabitCurve Habit (S-curve). Same shape as Logistic — slow to get going while the routine feels unnatural, a fast middle stretch as it becomes automatic, then a plateau once it's just "what you do" — but tuned…
MMO.editor.Historyjs The undo/redo stack of one editable region.
MMO.core.dom.Htmljs Markup to parse rather than text to show.
MMO\core\documents\HtmlDocument An HTML XmlDocument (rendered via HtmlPrinter), with a ready-made
<html><head>...</head><body>...</body></html>skeleton (createBody): a charset/viewport meta, an<base href>set…MMO\core\printers\HtmlPrinter A TextPrinter for HTML output: the same templates as HTML markup instead of plain text -- used both for a document's inline "server console" log block (\MMO\core\documents\HtmlDocument) a…
MMO\doc\HtmlPrinter Renders a documentation page (\MMO\doc\models\DocPage) as html, for \MMO\doc\controllers\DocPageController.
MMO.core.HTMLSearchjs MMO\core\I18n Internationalization module.
MMO\client\scs\nodes\IfNode `@if cond { ... } @else { ...
MMO.editor.tools.Imagejs Insert an image: a file from the computer, or an address.
MMO\core\entities\Importer Class used to import a list of raw data (organized in a map) into a list of entities.
MMO\client\scs\nodes\ImportNode @import "file.scs"-- resolved at compile time.MMO\core\ImportSocket Import data using a socket.
MMO\core\events\Inc Dispatched when a package's manifest configuration is being included (see PackageManifest's own hooks).
MMO\client\scs\nodes\IndexNode An index access:
$sizes[0],$map["md"].MMO.inputs.Inputjs Input
MMO.core.history.InsertActionjs MMO\pdo\statements\InsertStatement INSERT INTO table (cols) VALUES (…), (…) [ON DUPLICATE/CONFLICT …]MMO\admin\tasks\InstallTask Create the target's folder layout, so every later task can assume it exists.
MMO\core\schemas\InstanceValidator Validator for a PHP object value: 'instanceOf' (this framework's own extension keyword, not part of the JSON Schema spec).
MMO\core\schemas\IntegerValidator Same keywords as NumberValidator, but requires the JSON Schema 'integer' type instead of 'number'.
MMO\core\attributes\InteractiveCommand A Command exposed in \MMO\core\classes\aShellController's built-in interactive REPL: $cmd is what the user types to select it (matched as a required, constant first "argument" of the unde…
MMO\client\scs\nodes\InterpolationNode ${...}/#{...}-- an expression evaluated inside a css value or a selector.MMO.math.Intervaljs A one dimensional interval
[start,end], each bound open or closed, infinities allowed.MMO\math\helpers\Interval MMO\git\helpers\IssueBoard A repository's GitHub issues seen as the data of a kanban board (mmo.client's
<mmo-kanban>), and the changes made on the board written back to the issues.MMO\git\helpers\IssueDiscussion The discussion of a GitHub issue (or pull request) as mmo.client's
<mmo-kanban>shows it: comments with their author, which can answer one another.MMO\client\JHSCompiler Specific attribute - jhs-compile: (html): will render the node without using open().
MMO\doc\js\JHSParser Extracts documentation from a
.jhsfile -- mmo.client's one-file format holding an element's markup, its javascript class and its styles together (\MMO\client\JHSCompiler).MMO\admin\helpers\Journal A target's deployment history, stored ON the target (
deploy/deployments.json) rather than on whoever's laptop ran the deploy -- so it survives a fresh clone of the project, and describes the trut…MMO\client\JSCompiler Bundle the package's javascript into a single file.
MMO\client\entities\JSConfig JS Configuration for the mmo-app
MMO\doc\JSDocumentor Generates the javascript documentation of a package, exactly the way Documentor generates its php one.
MMO\core\documents\JsonDocument A JSON Document.
MMO\admin\helpers\JsonEditor Change a JSON file the way a person would: only the values that change, where they are, keeping every comment, the order of the keys and the layout of everything else.
MMO\core\JsonParser A hand-written, tolerant JSON parser (Decode/DecodeFile): accepts standard JSON, plus a few lenient extensions with a warning logged (not thrown) -- single-quoted strings, and unquoted ba…
MMO\core\printers\JsonPrinter Converts any value into a plain,
json_encode()-ready structure (see Encode/EncodeFile).MMO\core\entities\JsonRepository Collections container.
MMO\core\helpers\JSVariable Represents a
name = <json>;JavaScript variable assignment, to embed server-side data into an HTML document's inline<script>(used by \MMO\core\documents\HtmlDocument).MMO\oauth\helpers\JWT MMO\admin\helpers\KanbanBoard A
<mmo-kanban>board kept in a JSON file: its data (statuses, labels, categories, people, tickets) and each ticket's discussion.MMO\client\entities\KanbanBoard A board of
<mmo-kanban>: its settings -- the statuses its columns are, its labels, its categories and the people a ticket can be assigned to.MMO\client\entities\KanbanComment A comment of a
<mmo-kanban>ticket's discussion (KanbanTicket): who wrote it, what (markdown), and which comment it answers.MMO\client\controllers\KanbanController The JSON API of
<mmo-kanban>boards, over any repository holding KanbanBoard, KanbanTicket andMMO\client\classes\KanbanPrompts The AI prompts of
<mmo-kanban>tickets: fenced code blocks of a ticket's description whose language is an AI agent's name, so the agent (or whoever drives it) can pick up the tickets meant for it.MMO\client\entities\KanbanTicket A ticket of a
<mmo-kanban>board (KanbanBoard, named byboard).MMO\edms\entities\Label A node of the label tree: the tree is at the same time the folders of the files (under
_FILESYSTEM) and their tags (under_TAGS, a client's own ones under{client}/_TAGS, \MMO\edms\FileM…MMO\rpg\xp\LearningCurve Learning (step-stair).
MMO\client\scs\Lexer Turns a .scs source into a flat list of Token.
MMO\doc\js\Lexer A small, tolerant javascript lexer -- just enough to let Parser walk a source file without ever mistaking a brace, a quote or a slash inside a string/comment/regular expression for real code.
MMO\rpg\xp\LinearCurve XP(n) = base * n — steady, predictable difficulty growth.
MMO.editor.tools.Linkjs Add, change or remove a link: a small form under the button, filled with the link under the caret.
MMO\core\server\Link A PSR-7 web link (RFC 5988/8288's
Link:header entries, e.g.MMO\core\attributes\Listen This attribute is used to auto connect a class to events.
MMO.editor.tools.ListIndentjs Indent or outdent a list item: only offered inside a list, where it nests the list.
MMO\client\scs\nodes\ListNode An array literal:
[4, 8, 16].MMO\client\scs\nodes\LiteralNode A literal value: a number, a string, an identifier, a color, a boolean...
MMO\edms\storages\LocalStorage The bytes of the files, in a local folder ($folder): a key is a path in it.
MMO\core\events\Log A single log entry -- carries a level (one of the iLogLevel flags), a printf-style message + context, where it originated (file/line, and an optional call stack), and renders itself either as …
MMO\rpg\xp\LogarithmicCurve XP(n) = base * k * ln(n + 1) — big early rewards, flattens later.
MMO\math\operations\LogicOperation MMO\rpg\xp\LogisticCurve XP(n) = max / (1 + e^(-steepness * (n - midpoint))) — slow/fast/slow S-curve.
MMO\core\entities\LogQuery A repository operation, recorded (and dispatchable as an event, so a listener can inspect/veto it via
MMO\core\server\Mail Build and send a MIME email via PHP's
mail()(which shells out tosendmail), with support for HTML/plain alternative bodies, attachments, inline (data-URI) images, and DKIM signing.MMO\core\controllers\MailController Send templated HTML emails (mail/Send), rendering a template file (via \MMO\core\documents\Document::import) into an HtmlDocument and passing its output as the body of a Mail.
MMO\core\entities\MailLog The journal of a mail sent through \MMO\core\controllers\MailController: who sent what to whom, and whether it left.
MMO.core.history.Managerjs MMO.core.Mapjs Extension of a javascript Map with events.
MMO\client\scs\nodes\MapNode A map literal:
(sm: 8px, md: 16px).MMO\doc\MarkdownParser MMO\doc\MarkdownPrinter Renders a documentation page (\MMO\doc\models\DocPage) as markdown.
MMO\core\controllers\MCPController MCPController — a Model Context Protocol (https://modelcontextprotocol.io) server that exposes the MMOFramework itself to any MCP-compatible AI agent (Claude, or any other client speaking the proto…
MMO\admin\tasks\MigrateTask Apply the database patches a target has not run yet -- exactly once each, in order.
MMO\client\scs\Minifier The optional optimization step of the pipeline (the spec, 49 -- step 12): duplicate selector merging and duplicate declaration removal.
MMO\git\helpers\Module A submodule: a full Repository that also happens to be an entry of another one.
MMO\mongodb\MongoController MMO\mongodb\MongoExporter MMO\mongodb\MongoRepository Mongodb bridge
MMO\rpg\entities\MoodEvent MMO.inputs.Mousejs Mouse
MMO\pdo\MysqlHandler MMO\client\scs\nodes\NamespaceNode @namespace ui-- the name the definitions of this file answer to.MMO\core\attributes\NoDump Marker attribute: excludes a property from what \MMO\core\printers\TextPrinter (HtmlPrinter...) prints of an object, dumped (
\MMO\dump()/\MMO\idump()) or not (`HtmlPrinter::Print($object…MMO\core\schemas\NullValidator Validator for a null value -- adds no keywords of its own beyond Validator::KEYS.
MMO\math\helpers\Number MMO\core\schemas\NumberValidator Validator for a numeric value: 'multipleOf'/'maximum'/'minimum'/'exclusiveMaximum'/'exclusiveMinimum'.
MMO.schemas.ObjectAnnotationjs The annotation of an object: one child annotation per property.
MMO\rpg\entities\Objective A personal-development objective: a unit of progress, a level curve (pluggable, see MMO\rpg\xp\CurveFactory), and the running total of XP logged against it.
MMO\math\operations\Operation MMO\client\scs\nodes\OrderNode @order -1 { ... }-- sets the emission priority of everything inside.MMO\core\helpers\OutputCapture Capture everything echoed/printed (via PHP's own output buffering,
ob_start()) so it can be inspected, filtered, or discarded instead of being sent to the real output.MMO\core\PackageManager ## Structure of the manifest: mmo.json the packages manager will try to find a mmo.json in the current folder or one of its parent in auto mode.
MMO\core\helpers\PackageManifest Store mmoframework package informations
MMO\client\events\PageContents Event to request content for a page
MMO\client\controllers\PageController MMO\core\helpers\ParenthesisDomain Parenthesis ()
MMO\client\scs\Parser Turns the tokens of a .scs source into an ast (nodes\StylesheetNode).
MMO\doc\js\Parser Extracts documentation from javascript sources, the way reflection extracts it from php.
MMO\oauth\keys\Password MMO\core\helpers\Path MMO\pdf\PDFTK WARNING: Need Module PHP IMagick PHP wrapper for the pdftk command line utility using fdf standard https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf
MMO\pdo\helpers\PDOEntity Base class for an entity backed by a SQL row -- used by Table to generate one class per table from its columns (Table::toPHP), and usable directly as the parent of a hand-written table en…
MMO\pdo\PDOExporter Converts an entity's property values into values a SQL column can actually hold.
MMO\pdo\PDOPrinter MMO\pdo\PDORepository A aRepository backed by a SQL database: one Table per collection.
MMO\core\helpers\PeriodStatistic Accumulates counters (e.g.
MMO\admin\helpers\PhpConfigEditor Change values of one class's configuration in a PHP file -- the
\MMO\config([...])a project'sscripts/bootstrap.phpholds -- where they are written, leaving the rest of the file as a person wr…MMO\client\scs\PhpFunctionRegistry The php callables an scs source is allowed to invoke through
php::name(...).MMO.inputs.Pointerjs Pointer
MMO\math\helpers\Polynome Represents a polynome made of one or more variable
MMO\rpg\xp\PolynomialCurve XP(n) = base * n^exponent — cheap early levels, expensive mastery.
MMO.editor.PopoverTooljs A tool whose button opens a panel under it (a colour grid, a link form, a table menu ...).
MMO.inputs.Pressjs Press gesture: a click, a multi-click or a long press, depending on its options.
MMO.core.Printerjs Printer: render any value to text.
MMO\client\scs\Printer Prints an ast (Parser) back as Simple CSS source.
MMO\core\printers\PrintOptions A printer's options as named arguments:
new PrintOptions(escape: true)stands for['escape' => true].MMO\oauth\keys\PrivateKey MMO\core\server\Process Process is a thin wrapper around proc_* functions to easily start independent PHP processes.
MMO\admin\controllers\ProductionController The command-line surface of mmo.admin: build, ship, activate, roll back, back up, restore and migrate one or more deployment targets.
MMO\admin\entities\Project One deployable codebase: where it lives, how it is built, and which patches belong to it.
MMO\git\helpers\ProjectBoard A GitHub project (Projects v2:
github.com/users/<login>/projects/<n>, ororgs/<login>/...) seen as the data of a kanban board (mmo.client's<mmo-kanban>), and the changes made on the board wr…MMO\admin\tasks\PruneTask Keep the last N releases on the target and delete the rest, so immutable releases do not fill the disk.
MMO\oauth\keys\PublicKey MMO\core\entities\Query Generic way to query a collection of entities.
MMO.editor.tools.Quotejs Put the current block in a quote, or take it out.
MMO\client\scs\nodes\RawNode A chunk of css kept verbatim (punctuation, combinators,
!important, ...).MMO\admin\helpers\Readiness Whether a project is set up to deploy, read from its files alone: what the dashboard shows before offering anything, and what decides whether it offers deploying at all.
MMO\doc\php\Reflector Builds the documentation model (\MMO\doc\models\DocSymbol) for php symbols, out of reflection.
MMO\oauth\entities\RefreshToken MMO\rpg\xp\RegressionCurve Regression (extinction curve).
MMO\admin\helpers\RemoteLock A mutual-exclusion lock held ON the target, so two people (or a person and a cron) cannot deploy to the same machine at the same time.
MMO\core\entities\Repository Collections container.
MMO\git\helpers\Repository A local git repository, driven by the
gitcommand line.MMO\core\controllers\RepositoryController Controller used to handle entities through the repositories
MMO\core\server\Request PSR-7-style HTTP request.
MMO\core\server\Response Psr Response with a body as an object.
MMO\admin\tasks\RestoreTask Replace the target's database with the content of a dump.
MMO\client\scs\Result The outcome of a compilation: the generated css, plus the compile-time variables it evaluated.
MMO\client\scs\nodes\ReturnNode return expression-- only valid inside a@fnbody.MMO\math\iterators\ReverseDomainIterator MMO\oauth\entities\Role MMO\admin\tasks\RollbackTask Go back to a previously shipped release, on purpose (as opposed to ActivateTask::rollback, which the runner calls automatically when a deployment fails half-way).
MMO\core\server\Route # API json api
MMO\client\scs\nodes\RuleNode selector { ... }-- a css rule, possibly nested.MMO\admin\helpers\Runner Runs a list of aDeployTask against a list of Target, and is the only place that decides what happens when something goes wrong.
MMO\client\SassParser Singleton class that parses sass variables
MMO\rpg\xp\SaturationCurve Saturation (diminishing returns).
MMO.schemas.Schemajs A JSON-Schema (draft 2020-12) document, loaded and ready to validate values.
MMO\core\schemas\Schema Implementation of JSON Schema
MMO\client\scs\Scope A chain of compile-time variables (
@let).MMO\oauth\events\ScopesList Event to request the list of existing scopes
MMO\client\scs\nodes\ScreenNode `@screen tablet { ...
MMO\client\SCSCompiler Compiles Simple CSS (
.scs) into css.MMO\doc\controllers\SearchController Looks up anything documented across every installed package's documentation, reading the
index.jsonsearch index \MMO\doc\Documentor::buildIndex writes alongside each library's markdown (bui…MMO.core.SearchNodejs MMO\core\attributes\SearchProperty Declares a named, user-facing search field on a \MMO\core\classes\tArrayProperties-using class: a title/view for the UI, and a filter-expression template (buildFilters) that turns a user'…
MMO.core.SearchWordjs MMO\pdo\statements\SelectStatement MMO\core\attributes\Serialize This attribute is used to alter the serialization process.
MMO\admin\entities\Server A machine deployment targets live on -- declared once, and referenced by every Target it hosts.
MMO\admin\helpers\SetupWizard php scripts/admin.php setup: the questions whose answers are a project's deployment, asked in the order deploying needs them, each one explained -- then the files those answers make, shown before…MMO\core\server\Shell Run local shell commands via Process, exposing just the latest run's output/exit code.
MMO\core\server\ShellArguments Parsed command-line arguments (options/flags), as used by ShellRequest's body.
MMO\core\printers\ShellPrinter A TextPrinter for an ANSI-color-capable terminal: the same templates, restyled with
SHELL_*color/style escape codes (seefunctions.php's SHELL_* constants).MMO\core\server\ShellRequest Command Request used to create a simple request from a string Models a CLI invocation as a PSR-7-style Request: the script's own path becomes the URI, and the rest of
$argvbecomes the body (@see…MMO\core\server\ShellResult The outcome of one command: stdout, stderr and -- crucially -- a real exit code.
MMO\core\server\ShellRunner A uniform command runner on top of any iShell -- the local Shell or a remote SSH -- giving every command the same result object with a real exit code, plus dry-run support and the ha…
MMO\admin\tasks\ShipTask Put the artifact on the target and extract it into
releases/{version}-- beside the running release, never over it.MMO\core\events\Shutdown The shutdown event.
MMO\core\events\Signal An Event that a listener can answer with a return value (a request/response style event, as opposed to a plain notification) -- the dispatching code calls Send then reads getReturn.
MMO\core\events\SingleSignal Signal that is sent only one time during the application lifecycle.
MMO.editor.tools.Sourcejs Show the html of the text, to edit it by hand.
MMO\client\scs\SourceLocation Where a token/node/value came from in a .scs source.
MMO\client\scs\SourceMap A source map v3 for the generated css: it tells a browser which
.scsfile, line and column each piece of css came from, so devtools showslib.scs:91instead…MMO\pdo\SqliteHandler MMO\core\helpers\SQuoteDomain Simple quotes
MMO\core\server\SSH A remote shell over SSH (wraps the
ssh2PECL extension).MMO\admin\helpers\SshConfig The bits of an ssh config a deployment needs, so a server can be declared as an ALIAS rather than as a host, a port, a user and a key path committed with the project.
MMO\core\server\SSHJob A command started on a remote host and *detached* from the SSH session that started it (SSH::execBackground): it keeps running after the command returns, after the SSH session is closed, and a…
MMO\git\helpers\SSHRepository A Repository living on another host: every command is run over an existing SSH connection instead of as a local process.
MMO\core\server\SSHStream A Stream wrapping the stdout of a command started via SSH::openExec, with the matching stderr stream and exit code alongside it.
MMO\pdo\statements\Statement Wrapper on query to pdo.
MMO\core\controllers\StatisticController Compute statistics shaped as mmo-chart's
config(counts/sums per dataset, optionally as a percentage, over one or more comparison periods) over an entity collection, exposed both as an API (…MMO.core.Storagejs Persist entities in
localStorage/sessionStorage, namespaced by their schema id.MMO\admin\helpers\Store Everything the deployment tooling knows, as entities: which projects exist, which machines they run on, which targets live on those machines, and what has actually been deployed to each.
MMO\core\server\Stream PHP stream implementation.
MMO\core\server\StreamResponse Psr Response that reads a stream Used to retrieve files The application sends it as it reads it, a chunk at a time (render's
outputoption): a download is not limited by php's memory.MMO\client\scs\nodes\StringNode A quoted string containing interpolations:
"btn-${$name}".MMO\core\schemas\StringValidator Validator for a string value: 'maxLength'/'minLength'/'pattern'/'format'.
MMO\client\scs\nodes\StyleNode `@style name($param = default) { ...
MMO\client\scs\nodes\StylesheetNode The root node of a parsed .scs file.
MMO\rpg\xp\SustainCurve Sustain (cyclical). For goals that aren't about escalating mastery but about holding a stable standard over time, with natural ebb and flow (a harder week, an easier week) rather than a monotonic t…
MMO.svg.Svgjs MMO\math\helpers\System Represents a set of equations for which a common solution is looked for.
MMO.editor.tools.Tablejs Insert a table, then add or remove its rows and columns from the same menu.
MMO\pdo\helpers\Table Helper to create PDO query on Table
MMO\core\entities\Tag Used by entities to create searchable term or filters for them.
MMO\core\helpers\TagDomain Tag <>. Unlike the other group domains, defaults to NOT recursive (a
<inside a tag is not treated as opening a nested tag).MMO\admin\entities\Target One deployment target: a folder, on a Server, that a release is shipped to.
MMO\admin\helpers\Targets Selecting which targets a command acts on -- a thin, deliberately boring facade over Store's
targetscollection.MMO.core.Templatejs Base class for View
MMO\core\controllers\TestController The test runner's page: every installed package that ships a test suite, and a button to run each one.
MMO\core\TestRunner Runs a package's phpunit suite and reports the result as data.
MMO\client\controllers\TestsController The http face of the javascript test suite: lists what can be run, and runs it.
MMO\core\documents\TextDocument A plain-text Document (rendered via TextPrinter by default) that appends any recorded
MMO\core\printers\TextPrinter Converter to string for any value's type, driven by a per-type/per-log-level $templates table (each a
strtr()-style string with{placeholder}tokens -- see renderTemplate/setTemp…MMO\client\Theme MMO\client\ThemeConfigurator Reads the theme's token layer, lets an application change any value in it, and writes the result back as Simple CSS.
MMO\client\controllers\ThemeController The http face of ThemeConfigurator: reads the theme's customizable surface, and writes a new one.
MMO\client\scs\nodes\ThemeNode @theme [scope] { group { key: value } }-- runtime design tokens, emitted as css custom properties.MMO\client\scs\Token A single lexical token.
MMO\core\helpers\Token A single lexed unit: either a "known" token from its domain's token list (id = the key it was registered under), or a run of plain, unrecognized text (id = TEXT_ID, i.e.
MMO\core\helpers\TokenDomain A "grammar": a list of recognized literal tokens (each a plain string, e.g.
MMO\core\helpers\Tokenizer A generic, hand-rollable lexer: split text into a stream of Token instances, driven by a stack of
MMO.editor.Tooljs A button of the
<mmo-editor>toolbar, and what it does.MMO.inputs.Touchjs Touch
MMO.inputs.TouchMousejs Touch
MMO.schemas.TrueSchemajs True schema (always validate the value)
MMO\core\schemas\TrueSchema The
trueJSON Schema: every value is valid, and coercion is a no-op.MMO\pdf\helpers\TTFFile MMO.core.history.UIActionjs This action is used to encapsulate Update/Delete/Insert action and do something when the action has been executed or undoed.
MMO\client\scs\nodes\UnaryNode A unary operation:
-$spacing,not $rounded.MMO.editor.tools.Undojs Undo, or redo with
redo: true.MMO\math\helpers\UnitNumber Unit used by polynome.
MMO\math\helpers\Units Holds a list of UnitVector
MMO\math\helpers\UnitVector Represent a unit with its power and its factor: {factor} * ({unit}^{power})
MMO\core\server\UnixPipes UnixPipes implementation uses unix pipes as handles.
MMO.core.history.UpdateActionjs MMO\pdo\statements\UpdateStatement `UPDATE table SET col=?
MMO.edms.Uploadjs A file sent a chunk at a time: the server says where it stopped, the next chunk goes from there.
MMO\edms\helpers\Upload An upload in progress, as Uploads keeps it: what the first request said about the file, and its bytes so far (
{id}.part, next to its description{id}.json).MMO\edms\helpers\Uploads The uploads in progress, in a folder of their own ($folder), which only the server's account reads: the server keeps what an upload is and where its bytes are, a client only knows the upload's id.
MMO\core\helpers\Uri A Path extended with scheme/host/user/password/port/query/fragment -- a full PSR-7 UriInterface, plus the same ArrayAccess/basepath machinery as Path (accessed via string keys: 'scheme', 'host…
MMO.core.URLSearchParamsjs Extension of URLSearchParams that can handle arrays of the form
xxx[yyy][zzz]orxxx[]MMO\client\scs\nodes\UseNode @use lib::center/@use size(48px, 48px)-- expands a@stylein place.MMO.oauth.Userjs MMO\oauth\entities\User Model for user
MMO\core\schemas\Validator Validates one value against one Schema (JSON Schema 2020-12 semantics), keyword by keyword.
MMO\core\schemas\ValidatorError One validation failure: which schema keyword ($keywordLocation) rejected which part of the value (Validator::getPath), and why ($message).
MMO\client\scs\Value A compile-time Simple CSS value.
MMO\client\scs\nodes\ValueListNode A css value, a selector or an at-rule prelude: an ordered list of terms, each one remembering whether it was preceded by whitespace so the emitted css looks like the source that produced it.
MMO\client\scs\nodes\VariableNode @let $name = value-- a compile-time variable declaration.MMO\client\scs\nodes\VariableRefNode $name,$map.key,$colors.primaryor$tokens::palette.n50.MMO\client\scs\nodes\VariantNode `@variant primary { ...
MMO.elements.Viewjs Template synchronized with a Map of data Views content is as follow: - contentRoot: {MMO.core.Map} that contains the root of the data.
MMO\core\server\Websocket A hand-rolled RFC 6455 WebSocket server: a single instance listens for one TCP connection (listen), performs the HTTP-Upgrade handshake, then exchanges framed messages over it (readMessag…
MMO\rpg\xp\WeibullCurve Weibull (flexible/tunable S-curve).
MMO.core.Windowjs window
MMO\core\server\WindowsPipes WindowsPipes implementation uses temporary files as handles.
MMO\client\entities\Workflow MMO\client\controllers\WorkflowController Controller used to dispatch workflow events and get parcours configuration
MMO\core\printers\XlsxPrinter Flattens arbitrary rows of data (arrays, entities, nested structures) into a plain
[row][column] => stringgrid suitable for \MMO\core\documents\xlsx\Sheet cells -- e.g.MMO\core\documents\XmlDocument A Document whose body is an XML tree (XmlNodes/XmlNode) instead of a plain array, rendered via XmlPrinter.
MMO\core\helpers\XMLElement SimpleXMLElement wrapper, adding: namespace-prefixed attribute/child access (
'ns:name'), parent/sibling navigation, a self-contained toXML serializer, and various convenience mutators Simple…MMO\core\helpers\XmlNode An XmlNodes with a tag name and attributes -- an actual XML/HTML element.
MMO\core\helpers\XmlNodes A lightweight, mutable DOM-like tree: a list of "child nodes" that are each either a plain string (text) or another XmlNodes/XmlNode instance.
MMO\core\XmlParser A tolerant HTML/XML parser: unlike JsonParser, it never throws on malformed markup -- an invalid tag or mismatched closing tag just logs a warning (\MMO\core\classes\aParser::addError, no…
MMO\core\printers\XmlPrinter A TextPrinter for XML output: the same templates as XML markup instead of plain text -- used for a document's inline "server console" log block (\MMO\core\documents\XmlDocument, rendered …
MMO\core\helpers\XmlText A text node of an XmlNodes tree.
MMO\rpg\xp\XPCalculator Ties an objective's configuration (curve type + params, level cap, tiers) to the design doc's formulas: level cost, cumulative XP, starting level from a 0-1 skill score, and per-action XP with stre…
MMO\rpg\controllers\XPController Endpoints that don't fit the generic entity CRUD handled by RepositoryController: curve metadata, objective presets, a stateless level-table preview (used by the configurator's live preview, before…
Abstract classes24
MMO\git\classes\aBoard Something on GitHub seen as the data of mmo.client's
<mmo-kanban>:{statuses, labels, categories, tickets}.MMO\core\schemas\aBoolSchema Base for the two JSON-Schema boolean schemas (TrueSchema/FalseSchema) -- a JSON Schema document can itself be the literal
true(accept everything) orfalse(reject everything) instead…MMO\core\helpers\aCharDomain A domain delimited by the SAME character on both ends (e.g.
MMO\core\classes\aCoercer An aConverter specialized for coercion: given an ordered list of acceptable $types, try to convert $value into the first one that accepts it (rather than aConverter's single-type aCo…
MMO\core\classes\aController Base class for any controller.
MMO\core\classes\aConverter Class used to convert a value from one type to another.
MMO\admin\classes\aDatabaseTask Shared ground for the tasks that touch a target's database (\MMO\admin\tasks\BackupTask,
MMO\admin\classes\aDeployTask One step of a deployment, expressed as four separate questions rather than one procedure:
MMO\core\classes\aEntity Base implementation of iEntity: a tArrayProperties-backed record with a lifecycle status (cStatus), change tracking, links, and repository integration.
MMO\git\classes\aEntry Anything
git statuscan report on: a file (\MMO\git\helpers\File), a submodule (\MMO\git\helpers\Module) or the repository itself (\MMO\git\helpers\Repository).MMO\core\classes\aExporter An aConverter specialized for exporting arbitrary PHP values (objects, arrays, enums) into a plain, serializable structure -- recursively, with automatic cycle detection (an object seen more t…
MMO\core\helpers\aGroupDomain A domain delimited by DIFFERENT start/end characters (e.g.
MMO\pdo\classes\aHandler Abstract class that builds query
MMO\oauth\classes\aKey MMO\core\classes\aMessage Base implementation of PSR-7's MessageInterface (\MMO\core\server\Request / \MMO\core\server\Response extend this): immutable-by-convention headers, built on tWithHeaders.
MMO\core\classes\aModule Base class for a configurable singleton module.
MMO\core\classes\aParser Base class for a single-instance, non-reentrant text parser built on \MMO\core\helpers\Tokenizer: a subclass builds its tokenizer once (createTokenizer) and implements process to tur…
MMO\core\classes\aPipes Base class for feeding a subprocess's stdin and reading its stdout/stderr without blocking, used by
MMO\core\classes\aRepository Collections container.
MMO\core\classes\aRequest Base implementation of PSR-7's (Server)RequestInterface (\MMO\core\server\Request /
MMO\core\classes\aResponse Base implementation of PSR-7's ResponseInterface (\MMO\core\server\Response extends this): status code/reason phrase, plus convenience helpers for common response shapes (redirects, HTTP auth …
MMO\core\classes\aShellController Base controller for a CLI shell application: routes matched with method 'SHELL' (declared via #[Command(...)]) become subcommands, e.g.
MMO\oauth\classes\aToken MMO\client\scs\nodes\Node Base class for every ast node produced by \MMO\client\scs\Parser.
Interfaces64
MMO\oauth\interfaces\iAccessToken MMO\core\interfaces\iArray Interface that describes any object that can be used liked an array
MMO\core\interfaces\iArrayProperties Interface that describes any object that defines
\MMO\core\attributes\ArrayPropertyattributesMMO\oauth\interfaces\iAuthCode MMO\core\interfaces\iBoolSchema MMO\oauth\interfaces\iClient Any object that can exchange credential with an oauth server
MMO\core\interfaces\iCoercer MMO\core\interfaces\iCollection A set of entities of one class, usually belonging to a repository.
MMO\math\interfaces\iCommutativeOperator Describe any operator that can change the order of its arguments : a [operator] b --commute--> b [operator] a
MMO\core\interfaces\iComparable MMO\core\interfaces\iConverter Interface that describes any callback that can coerce a value into another type A converter that transforms a value into a string is called a
printerMMO\rpg\xp\iCurve A curve defines how much XP is required to go from level (n-1) to level n.
MMO\math\interfaces\iDomain Describe a list of float values
MMO\core\interfaces\iEntity An entity: one record, its values read and written by property name, its changes tracked until a commit.
MMO\git\interfaces\iEntry MMO\core\interfaces\iEvent Any object being dispatched SHOULD implements at least this interface It is an
Eventregarding PSR14: Event dispatcher It MUST not return a value after being dispatched.MMO\core\interfaces\iException MMO\core\interfaces\iExporter MMO\math\interfaces\iFactorableNumber Describe a number that can be multiplied/divided/powered
MMO\core\interfaces\iFilter MMO\oauth\google\iGoogleUser MMO\oauth\interfaces\iGuarded An entity whose module guards it: the module decides who can see and change it (mmo.edms' File and Label, through its
helpers\Access), so \MMO\oauth\controllers\AccessController does not ask…MMO\pdo\interfaces\iHandler MMO\core\interfaces\iIdentifiable MMO\math\interfaces\iInversibleOperator Describe any operator that can express its first argument against a number
MMO\oauth\interfaces\iKey MMO\math\interfaces\iListenable Describe any objects that can be converted to a number (int|float)
MMO\core\interfaces\iLogEmitter Any object that emits log events
MMO\core\interfaces\iLogLevel MMO\core\interfaces\iMakefile A build step that knows its output file and the files it depends on, and rebuilds the output only when one of them changed (tWithMakefiles).
MMO\core\interfaces\iModule Base interface for modules.
MMO\core\interfaces\iMutationObserver MMO\math\interfaces\iNumber Describe any objects that can be converted to a number (int|float)
MMO\math\interfaces\iOperation Describe a computed number that contains operation on other numbers
MMO\math\interfaces\iOperator Describe any operator
MMO\core\interfaces\iOptions Typed options: an object whose named constructor arguments stand for a string-keyed options array.
MMO\oauth\interfaces\iPrivateKey MMO\oauth\interfaces\iPublicKey MMO\oauth\interfaces\iRefreshToken MMO\core\interfaces\iRemoteShell MMO\core\interfaces\iRenderable Any object that can render itself to a string
MMO\core\interfaces\iRepository MMO\core\interfaces\iRequest MMO\core\interfaces\iResponse Any object that can log events
MMO\core\interfaces\iRoutable MMO\core\interfaces\iSchema MMO\core\interfaces\iSchemaProvider MMO\oauth\interfaces\iScopeProvider MMO\core\interfaces\iSerializable Interface that describes an object that wants to alter the serialized data returned by \MMO\core\objects\serialize
MMO\core\interfaces\iShell MMO\core\interfaces\iSignal MMO\math\interfaces\iSimpleDomain MMO\core\interfaces\iSingleton A class with one shared instance per request (\MMO\core\classes\tSingleton): never
newit.MMO\math\interfaces\iStandardOperator Describe any operator that takes strictly 2 arguments
MMO\core\interfaces\iStoppableEvent Stoppable event
MMO\edms\interfaces\iStorage Where the bytes of the files are kept, by key: a file only knows its key (
File::$storageKey), never where the storage puts it.MMO\oauth\interfaces\iToken MMO\math\interfaces\iUnit MMO\core\interfaces\iUriProvider Any object that can return a Uri
MMO\oauth\interfaces\iUser MMO\oauth\interfaces\iWithScope MMO\math\interfaces\iWithUnits Describe any objects that has associated units
MMO\client\interfaces\iWorkflowConfiguration MMO\client\interfaces\iWorkflowSignal
Traits18
MMO\core\classes\tArray Trait implementing \MMO\core\interfaces\iArray: gives a class array-like storage (ArrayAccess, Countable, IteratorAggregate, JsonSerializable) backed by a single protected
$contentarray.MMO\core\classes\tArrayProperties Trait implementing \MMO\core\interfaces\iArrayProperties: turns a class's PHP properties (and/or methods) annotated with the #[ArrayProperty] attribute into a declarative, schema-backed "array…
MMO\oauth\classes\tClient Model for client
MMO\core\classes\tEvent Trait giving a class (typically an "event" data object) its own static listener list and a way to broadcast an instance of itself to every registered listener, in ascending $order.
MMO\core\classes\tException Trait giving an exception class placeholder-based, i18n-aware messages: the constructor takes a
{xxx}-style $format and a $context array (like the framework's logging functions), renders them int…MMO\oauth\google\tGoogleUser MMO\core\classes\tLogEmitter Implements
MMO\core\interfaces\iLogEmitter: gives any class a full set of PSR-3 log-level methods (emergency/alert/critical/error/warning/notice/info/debug/log), each gated by a per-instance verb…MMO\core\classes\tPropertyGetter Trait to make protected and private properties readable from outside the class, as
$obj->propertyName, through PHP's__get/__issetmagic methods.MMO\core\classes\tSingleton Trait to implement the singleton pattern: exactly one instance of the class exists per request, lazily created on first access and stored in the application's Configuration container, keyed by…
MMO\core\classes\tStoppableEvent Trait implementing PSR-14's StoppableEventInterface: lets an event listener (in a chain run by tEvent's dispatch()) stop the remaining listeners from being called, by calling stopPropagation()…
MMO\oauth\classes\tUser Model for user
MMO\core\classes\tWithEntities Gives a class its own local collection of iEntity instances, indexed by iEntity::getId when available (falling back to a plain numeric index for entities without an id, or when two differ…
MMO\core\classes\tWithHeaders Generic, case-insensitive HTTP-header storage, implementing the read/write parts of PSR-7's MessageInterface (
getHeaders/hasHeader/getHeader/getHeaderLine) plus a handful of convenience get…MMO\core\classes\tWithMakefiles Trait giving a class a named collection of iMakefile builders (e.g.
MMO\core\classes\tWithOptions Gives a class a simple key/value "options" bag (e.g.
MMO\oauth\classes\tWithRoles MMO\core\classes\tWithRoutes Gives a controller class (any class with methods decorated with
#[APIRoute(...)], e.g.MMO\oauth\classes\tWithScopes trait to implement iScopeProvider.
Enums16
MMO\math\enums\cArithmeticOperator MMO\math\enums\cConstraintOperator MMO\core\helpers\cCronField CRON Expressions ================
MMO\core\helpers\cDatePeriod A calendar period granularity (day, week, month, ...), with helpers to compute its boundaries around a given date, the difference between two dates in that unit, and to shift a date by N periods.
MMO\core\server\cJobState The state of a detached remote command (SSHJob).
MMO\math\enums\cLogicOperator MMO\core\entities\cLogQuery The kind of repository operation a LogQuery records.
MMO\core\entities\cMailState What became of a mail a MailLog records.
MMO\math\enums\cPrefix MMO\core\entities\cStatus An entity's lifecycle status, roughly ordered from least to most "settled" (see index) -- an application is free to use only a subset of these, and to attach its own meaning to each transition.
MMO\math\enums\cTime MMO\math\enums\cUnit MMO\rpg\entities\eDailyEventType MMO\core\helpers\FilterOperator The comparison operators usable in a FilterValue / a
['xxx' => ['$op' => value]]condition -- see this file's own top-of-file docblock for what each one means.MMO\core\helpers\GroupOperator How a FilterGroup's members combine: AND (all must match), OR (any must match), NOR (none may match).
MMO\client\scs\TokenType The kinds of token produced by Lexer.
Exceptions39
MMO.schemas.AnnotationErrorjs Error for annotations
MMO\core\exceptions\e404 "Not found" exception for a route/entity that couldn't be resolved while handling an HTTP request.
MMO\oauth\exceptions\eAccessDenied MMO\oauth\exceptions\eAuth MMO\core\exceptions\eDeprecated Thrown when deprecated functionality is used.
MMO\oauth\exceptions\eExpired MMO\pdf\exceptions\eField MMO\edms\exceptions\eForbidden A client is not allowed to do what it asked: a 403 when a route lets it through.
MMO\core\exceptions\eInvalid Thrown when a value/argument is invalid.
MMO\oauth\exceptions\eInvalidClient MMO\core\exceptions\eInvalidCoercion Thrown by \MMO\core\classes\aCoercer when a value cannot be coerced to any of the requested types.
MMO\core\exceptions\eInvalidConfiguration Thrown when a class/module/property is misconfigured -- a bug to fix in code or config, not a bad runtime input.
MMO\oauth\exceptions\eInvalidCredentials MMO\oauth\exceptions\eInvalidGrant MMO\oauth\exceptions\eInvalidRefreshToken MMO\oauth\exceptions\eInvalidRequest MMO\oauth\exceptions\eInvalidScope MMO\oauth\exceptions\eInvalidSession Session authentification failed
MMO\oauth\exceptions\eInvalidSignature MMO\core\exceptions\eInvalidVersion Thrown by \MMO\core\PackageManager for a malformed or unsatisfiable package version constraint.
MMO\core\exceptions\eItemNotFound Thrown by \MMO\core\arrays\get / \MMO\core\arrays\set / \MMO\core\arrays\walk when a json-path (e.g.
MMO\core\exceptions\eJson Thrown by \MMO\core\JsonParser when it encounters malformed/unparseable JSON.
MMO\pdf\exceptions\eLengthField MMO\core\exceptions\eLogic Thrown when a call is logically wrong given the code's own state (a programming error detectable only at runtime), as opposed to bad external input -- see eInvalid for that.
MMO\core\exceptions\eNotFound Thrown when a named thing (a property, route, collection, config key, ...) could not be found.
MMO\pdo\exceptions\ePDO MMO\core\exceptions\eReadonly Thrown when writing to a read-only property.
MMO\pdf\exceptions\eRequiredField MMO.edms.Errorjs An answer of the api that is not a success: its http status, and why (the server's
meta.error.message)MMO\core\exceptions\eRuntime Thrown for a failure that can only be detected while running (as opposed to a bad argument caught up front).
MMO\client\exceptions\eSass MMO\client\exceptions\eSCS A Simple CSS (.scs) compilation error.
MMO\core\exceptions\eServer Base exception for a failure that occurred while handling an HTTP request, carrying that request alongside the usual \MMO\core\classes\tException message/context/origin.
MMO\oauth\exceptions\eServerError MMO\core\exceptions\eTimeout Thrown when an operation (a request, a command, a lock wait, ...) exceeded its allotted time.
MMO\pdf\exceptions\eTypeField MMO\oauth\exceptions\eUnsupportedGrantType MMO.PathErrorjs A json path that could not be walked to the end.
MMO.RequestErrorjs An http request that came back with a non-ok status.
Functions627
MMO.core.dom.$js Call query selector.
MMO.i18n.$js Get translation for a given text
MMO.inputs.$js Create an input of a certain type
MMO.core.dom.$$js Call query selectorAll
MMO.core.path.absolutejs Resolve a path against a root.
MMO\core\paths\absolute Make $path absolute, prefixing it with $root when it's relative (NOTE: the result is NOT simplified -- any
../.end up literally in the merged result; run it through simplify() yourself if…MMO\core\uris\absolute Fill in whatever $uri is missing (scheme, host/user/pass/port, path) from $root.
MMO\core\paths\absoluteFilename Same as absolute(), but drive-aware (via isAbsoluteFilename()/relativeFilename() when $isWindows).
MMO.addCharactersLeftjs Add a live "N characters left" counter under every
[maxlength]input of a subtree.MMO.core.dom.addHTMLjs Parse html and add it to a node.
MMO.core.markdown.addHtmljs MMO.core.dom.addOffsetjs Move the element
MMO\doc\addSearchSource Makes the documentation searchable from
<mmo-app>'s command palette, the one search box of the application: the search endpoint (SearchController::routeSearch) is declared in `MMO.config.sea…MMO\core\paths\adrive Get the "drive" of an already-split path (segments array):
/for a unix path (a leading empty segment), or the drive letter (e.g.MMO\doc\anchor The canonical in-page anchor for a symbol or member name.
MMO.core.strings.anyRegexjs Create a regular expression that matches any of the regex.
MMO\core\uris\apiQuery Build a query string in the {json:api} convention (
filters[...],sort=,fields=,page[limit]/page[offset]).MMO.core.dom.appendChildrenjs Add children to a node.
MMO\core\schemas\arrayKeysType The JSON-Schema type of a phpstan array (
array<K, V>) according to the type of its keys: integers make a list (array), strings a map (object), anything else (array-key,int|string, `mixed…MMO\core\strings\asciiNumber Render a number as large, multi-line ASCII-art digits (ASCII_NUMBERS), for banner-style CLI output (e.g.
MMO\core\shell\ask Ask input from the user
MMO.askBeforeLeavingjs Prevent leaving page without confirming
MMO.core.dom.atjs Get a node from its path
MMO\oauth\b64UrlDecode Decode a string with URL-safe Base64.
MMO\oauth\b64UrlEncode Encode a string with URL-safe Base64.
MMO\core\debug\backtrace Call \debug_backtrace
MMO\core\debug\backtraceCaller Get trace of the caller
MMO\core\strings\baseConvert Convert a number from one base/alphabet to another.
MMO\core\paths\basename Extract the filename (last path segment) of a path -- almost the same as PHP's own \basename(), except that in $strict mode it returns false rather than the segment itself when that segment doesn't…
MMO\core\debug\benchmark Benchmark a closure
MMO\math\binomialCoefficient Compute the binomial coefficient $n!
MMO\math\bisection Find a root of a continuous function (fn(x) = 0) using the bisection method
MMO.core.dom.bodyjs MMO\core\packages\build Build a
.pharpackage from a manifest and a list of source files.MMO\core\uris\buildQuery Same as \http_build_query(), except it can round-trip
true(encoded as a barekey, no=value) andnull(encoded askey=NULL) -- \http_build_query() alone can't distinguish those from `'1'…MMO.core.strings.bytesizejs Format a byte count as a human readable size (binary units, decimal prefixes).
MMO\core\debug\callableName Get the formatted name of a callable
MMO\core\strings\camelCaseIdentifier Convert text to camelCase, treating $separators as word breaks.
MMO\core\shell\characters Split a text into the characters a terminal shows, one column each: a character is one whatever its bytes (UTF-8), and a letter followed by a combining accent is one character too.
MMO\core\server\charset Extract the
charset=...parameter's value from aContent-Typeheader.MMO\core\versions\check Test a version string against a Composer-style constraint string.
MMO\core\code\checkName MMO\core\shell\choose Ask for one of a few choices, listed one per line and numbered, with what each one means.
MMO.schemas.classSchemajs Get a schema for a php class
MMO\core\versions\clean Normalize a version string to its canonical
split()+join()round-tripped form.MMO\core\server\clientIP Get the client's IP address, checking a wider/differently-ordered set of headers than ip() (via \getenv() rather than $_SERVER directly -- functionally equivalent under most SAPIs).
MMO.core.clonejs Deep clone a simple Object
MMO.editor.closestjs MMO.editor.closestBlockjs MMO.core.dom.closestParentjs Walk up until a node carries a given tag name.
MMO.edms.colorjs MMO\core\shell\colorCard Print a table with a preview of every SHELL_* color/style constant.
MMO\core\shell\columns Attempt to get the number of columns of the current terminal
MMO\core\shell\commandExists Tells if a command is available and executable on the current system
MMO\core\schemas\commentInformation Extract schema keywords/metadata from a PHP doc comment (as returned by \ReflectionProperty::getDocComment() and similar), so a class's own docblocks can double as its JSON-Schema definition (…
MMO.core.comparejs Compare the two parameters
MMO\core\objects\compare Type-aware comparison of two arbitrary values, handling cases plain
<=>/==don't get right on their own (iComparable objects, BackedEnum vs its raw backing value, DateTimeInterface by timestamp…MMO\core\versions\compare Compare two versions per Semantic Versioning precedence rules (numeric identifiers compared numerically, alphabetic ones lexically, a shorter prerelease set precedes a longer one that's otherwise i…
MMO\math\compare Compare two values
MMO.core.compareDescendingjs MMO\core\debug\compareTracesOffset Find where two traces differ, using their file|line|name to find a difference
MMO\doc\compileDocumentationCss Compiles
src/styles/documentation.scsto{bin}/mmo.doc.css, recompiling only when the source is newer (dev mode only -- likeMMO\client\Theme's own asset jobs, a production deploy is expected…MMO\core\shell\confirm Ask the user for a confirmation
MMO\core\objects\connect Auto-wire an object's (or, for a static/string $obj, a class's static) methods to events, by reading their #[MMO\core\attributes\Listen(EventClass::class)] attributes and registering each as a list…
MMO\doc\connectPageRoutes Registers the html documentation renderer, which only makes sense once mmo.client provides the page tree.
MMO\doc\connectRoutes Registers this package's controllers as routes (\MMO\connect).
MMO\doc\connectToClient MMO.core.path.containsjs Test if root is contained in path
MMO\oauth\contentScopeID MMO\core\server\contentType Extract just the content-type value(s) from a
Content-Typeheader, stripping any;charset=.../other parameters.MMO\core\code\controller The source of a new controller class.
MMO\core\files\copy Copy a file or folder (recursively), returning the number of files actually copied.
MMO\doc\copyPrismAsset Copies mmo.client's vendored
vendor/prism/prism.js(a Prism.js build already bundling the markup/js/scss/ css/markdown/php grammars) out to{bin}/prism.js, so it's actually servable -- \MM…MMO.core.dom.copyStylesjs Copy every COMPUTED style of a node onto another as inline styles, so the copy keeps its look once detached from the stylesheets that produced it.
MMO.copyToClipboardjs Copy text content to clipboard
MMO\core\arrays\count Get the number of elements in any iterable (not just a plain array/\Countable) -- for a plain \Iterator without \Countable, this has to fully traverse it (there's no shortcut).
MMO\rpg\countTimes MMO.schemas.createAnnotationjs Create an annotation from a value
MMO\core\files\createDir Create a folder (recursively) if it does not exist.
MMO.core.dom.createElementjs Create a dom element from a configuration
MMO.core.dom.createElementNSjs MMO.core.server.createFormRequestjs Build a Request out of a <form>, using its own action and method.
MMO.core.server.createLinkjs Serialise a url and its properties as an http Link header value.
MMO.core.server.createRequestjs Create a Request from an url, data and options
MMO.core.dom.createScriptjs Create script
MMO.core.dom.createStylejs Create style
MMO\core\files\csv Read and decode a CSV file (a UTF-8 BOM, if present, is stripped first).
MMO\core\strings\csvColumnIndex Reverse of csvColumnName(): convert a spreadsheet-style column name back to its 0-based index.
MMO\core\strings\csvColumnName Convert a 0-based column index into a spreadsheet-style column name (A, B, ..., Z, AA, AB, ...).
MMO\core\strings\csvDecode Decode CSV text into an array of rows.
MMO\core\strings\csvEncode Encode a list of records as CSV text, guessing the headers automatically from the data by default.
MMO\core\strings\csvRawEncode Encode a list of lines as CSV text, without any header handling: each line is either an array of column values (joined with $sep) or an already-formatted raw string (used as-is).
MMO.i18n.currencyjs Format a number as a currency amount, in the user's locale.
MMO\core\files\dataURI Encode a file as a
data:URI (its content, base64-encoded, with its detected mime type), ready to use directly as e.g.MMO\core\files\dataURIToFile Reverse of dataURI(): decode a
data:URI and write its content to $filename.MMO\core\server\date Format a unix timestamp (or a parseable date string) as an RFC 7231 ("IMF-fixdate") GMT date, suitable for an HTTP header (e.g.
MMO\core\dates\dateTime The framework's all-purpose date parser: turns a timestamp, a DateTimeInterface, or a string into a DateTime/DateTimeImmutable, trying (in order) an explicit $format, an ISO-8601 duration (a string…
MMO\core\dates\dateTimeFromInterval Apply an interval/modifier to a date, always returning a DateTimeImmutable.
MMO.debugjs Log a debug message, tagged but discreet.
MMO\oauth\decodeDER Reads binary DER-encoded data and decodes into a single object
MMO\core\server\decodeLink Decode one HTTP
Linkheader value:<{href}>;rel="{rel}";title="{title}" ...MMO\core\server\decodeRecipients Decode a comma-separated recipient list of the form
"Name" <email>, other@example.com, ...(as used in mail headers likeTo/Cc) into[email => name]pairs.MMO.core.dom.decodeUnitjs Convert any css string value into a float
MMO\core\server\defaultCharset Get PHP's configured default charset (the
default_charsetini directive, e.g.MMO.i18n.defaultLanguagejs The language texts are translated to when none is asked for: the page's own (
<html lang>, which the server writes), then the browser's.MMO\core\server\defaultLanguage Guess a default language from the environment:
$_SERVER['LANG'](its part before any '.', e.g.MMO\core\code\defaultValue The PHP literal a property of $type defaults to.
MMO.definejs Define a Custom Element
MMO\core\arrays\delete Delete the value at the given json-path.
MMO\core\files\delete Recursively delete a file or folder.
MMO\oauth\DERtoSignature Encodes signature from a DER object.
MMO\core\strings\describe Describe any value as a compact, technical/debug string representation (unlike render(), which aims for a human-facing display string): an object uses debugName() if available, else a `Class{p…
MMO\core\strings\didYouMean The hint an error message adds after an unknown name: the closest known names, so a typo tells its reader (a developer, or an AI agent) what was meant instead of only what was wrong.
MMO\core\arrays\diff Get the elements of $a whose value is not (strictly) present anywhere in $b -- like \array_diff(), but using strict (
===) comparison instead of string-casting comparison, so it works correctly wi…MMO\core\shell\diff The differences between two texts, line by line, the way
diff -ushows them: a removed line in red after a-, an added one in green after a+, each change among a few unchanged lines around i…MMO\doc\directImplementations Get the direct interfaces implemented by a class
MMO\doc\directUses Get the direct trait implemented by a class
MMO.core.path.dirnamejs Get the parent path of a path.
MMO\core\paths\dirname Extract the directory of a path (same as PHP's \dirname(), but normalizes
\to/first when $isWindows).MMO\core\objects\disconnect Undo a previous connect(): remove an object's (or class's) #[Listen]-declared methods from the events they were registered on.
MMO.core.dom.dispatchEventjs Create a custom event and dispatch it
MMO.core.strings.distanceEqualityjs Compute the strict distance between words.
MMO.core.strings.distanceJaroWinklerjs Compute the the Jaro Distance between two sequences (string or array) s1 and s2, using strict equality operator
===.MMO\math\divide MMO\core\server\DNSIP Look up a domain's A (IPv4) or AAAA (IPv6) record.
MMO\core\server\documentRoot Get the document root the running script is resolved against: under a web server
$_SERVER['DOCUMENT_ROOT']throughrealpath(), on the CLI as is (normally empty).MMO.domReadyjs Run a function once the dom is ready, immediately if it already is.
MMO\core\strings\dotIdentifier Turn arbitrary text into a lowercase, dot-separated identifier (a common convention for i18n/config keys).
MMO.downloadjs Trigger a download
MMO\core\paths\drive Get the "drive" of a path string:
/for a unix path, or the drive letter (e.g.MMO.core.strings.dumpjs alias to printf with encode = serialize
MMO.core.transitions.elasticInFnjs Build an easing that oscillates before settling, the wobble happening at the START.
MMO.core.transitions.elasticInOutFnjs Build an easing that oscillates at BOTH ends.
MMO.core.transitions.elasticOutFnjs Build an easing that oscillates before settling, the wobble happening at the END.
MMO.core.server.encodejs Encode arguments list
MMO\oauth\encodeDER Encodes a value into a DER object.
MMO\oauth\encodeDERLength DER-encode the length
MMO\core\server\encodeLink Reverse of decodeLink(): encode a uri and its attributes into an HTTP
Linkheader value.MMO.core.server.encodeQueryjs Serialise an object as a url query string, nesting with php-style brackets.
MMO.core.dom.encodeUnitjs Make sure a value is a properly formed css value with the correct unit
MMO.core.server.encodeValuejs MMO\core\code\entity The source of a new entity class.
MMO\oauth\entityScopeID MMO\core\objects\enumFrom Same as tryEnumFrom(), but throws instead of returning null when nothing matches.
MMO.core.path.equaljs Test whether two paths designate the same thing.
MMO.errorjs In order to not mess up the correct line and number of the logs in the console, you need to return a function bound to the console: https://stackoverflow.com/questions/9559725/extending-console-log…
MMO\core\shell\error Print an error message, prefixed with '!!
MMO.core.path.escapejs MMO.editor.escapejs MMO.edms.escapejs MMO\core\paths\escape Escape
~and/inside a single path segment, so it can safely be joined with/without being mistaken for a path separator (RFC 6902 JSON Pointer escaping:~->~0,/->~1).MMO\core\shell\escape Escapes a string to be used as an argument and qotes it.
MMO.core.strings.escapeHTMLjs Escape the characters that would otherwise be read as markup.
MMO.core.strings.escapeRegexjs Escape a part of a regex <MDN|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping>
MMO.core.path.escapeReplacerjs MMO\core\shell\evalColors Used to put shell colors directly into a text Any SHELL_* colors must be in brackets to be replaced
MMO\core\shell\exec Execute a command through php
exec, serializing the parameters passedMMO\core\shell\execInBackground Launch a command in the background (fire and forget), serializing the parameters passed
MMO.schemas.existsjs MMO\core\arrays\exists Tells if a value exists at the given json-path (without fetching it).
MMO\core\files\exists Test if a local file, or a remote url (via a curl HEAD request), exists/is reachable.
MMO\core\server\exitCode Map an HTTP status code to a shell exit code (the EXIT_* constants), for a CLI request routed through the same Application/Route pipeline as an HTTP one (\MMO\core\Application::run()).
MMO\core\shell\explain Print a paragraph of explanation, indented and wrapped to the terminal (100 columns at most), so that it reads as prose rather than as lines running off the screen.
MMO\mongodb\exportObjectID MMO\core\paths\extension Extract the extension of a path (the part after the LAST '.' in its last segment), without the leading '.'.
MMO\core\server\extension Reverse lookup: find a file extension whose MIMES entry matches a given content-type header (the first usable content-type found in $header, tried against every entry of MIMES).
MMO\core\uris\extension Extract the extension from a uri's path (query/fragment are stripped first, so they don't interfere).
MMO\core\server\extensionToContentType Build a
Content-Typeheader value for a file extension (falling back to 'txt' if $ext is unknown).MMO\core\server\extractContentType Strip a leading
Content-Type:label (if present) off a header line, and split it on,into its individual content-type values (a header CAN legally list several, comma-separated).MMO.core.server.extractHashjs Extract the hash from an url
MMO.core.server.extractLinkjs Extract properties and url of an http Link.
MMO.core.strings.extractPrintfjs Reverse of MMO.core.strings.printf: recover the values a format was filled with.
MMO.core.server.extractQueryjs Extract the url parameters from an url with a query
MMO.core.strings.extractRegexSourcejs Extract regex source and clear some stuff
MMO\client\extractSASSConfig Extract sass configuration from a sass file
MMO.schemas.extractTypesjs Extract the types of a raw schema (stored in an array)
MMO\math\factorial Do factorial of $n n!
MMO.fetchjs Fetch a request async
MMO.schemas.fetchjs Fetch a schema by url
MMO.fetchAPIjs Fetch a request's json response async formatted by the mmoframework (with logs and links) > Note: if a schema's link is provided, the schema is fetched and added to the response > Note: data are au…
MMO.schemas.fetchClassSchemasjs Fetch all schemas defined in the framework
MMO.fetchFilejs Fetch a request's file response async (as blob) and open a window with the data.
MMO.fetchJSONjs Fetch a request's json response async
MMO.fetchSvgjs Fetch and parse an svg document.
MMO.fetchTextjs Fetch a request's text response async
MMO.fetchXmljs Fetch and parse an xml document.
MMO\core\files\filename Get the underlying filename (for a stream) or command (for a process) of a resource.
MMO.fileUrljs Same as MMO.url, except the base of the url is set to
baseurl(which is the real url for files) instead ofsiteurlMMO\core\arrays\filterKeys Filter (and, in select mode, reorder) an array's keys recursively.
MMO\core\debug\filterTraces Filter traces
MMO\core\strings\findMatching Find the matching closing delimiter for the first opening delimiter found at/after $offset, correctly handling nesting (
{a{b}c}), escaped characters, and quoted sub-sequences (ignored entirely, b…MMO\core\strings\findOffset Get the character offset for a specific line/column position in a text.
MMO\core\versions\findVersion Find the version(s) in $versions that satisfy $constraint.
MMO.core.dom.firstNodeInRangejs MMO.core.dom.firstTextNodejs MMO.core.dom.fixedNodejs Get the Element from which a fixed element has his position computed.
MMO\core\debug\flags Convert a string into a debug constant mask
MMO\core\dates\format Format a date, then translate its month/day names to $lang (translateDate()).
MMO\core\debug\formatBytes Format bytes to human readable size
MMO\core\strings\formatFraction Format a float as an integer part plus its best rational approximation (a fraction), e.g.
MMO\core\arrays\from Convert any value into a plain array: an \MMO\core\interfaces\iArray is unwrapped via toArray(), a Generator/Traversable is consumed via \iterator_to_array(), a plain array is returned as-is, and a…
MMO.math.GCDjs Get the greatest common divisor, by Euclid's algorithm.
MMO\oauth\generateKeys Generate a private/public key pair using openssl sha512
MMO.core.strings.generatePasswordjs Draw a random password, retrying until every required character class is present.
MMO\core\arrays\get Get a value at the given json-path.
MMO\core\files\get Read the content of a file (given as a filename, read directly) or an already-open stream resource.
MMO\core\strings\getAccents The accent-folding table stripAccents()/textRegex() are built on: maps every accented Latin character to its plain-letter equivalent (e.g.
MMO.core.dom.getAttributesjs Get element attributes as an object
MMO.core.dom.getBoundingRectjs Get bounding rect relative to a parent
MMO.schemas.getByIdjs MMO.core.dom.getComputedStylejs MMO.core.dom.getComputedStyleValuejs Get a computed style and convert it to a number (interpreting the unit)
MMO.core.dom.getCoordjs Get the element's absolute coordinates (left, top) using offset and scroll
MMO\oauth\getCSRFToken Create a CRSF token
MMO.core.dom.getCSSPathjs Get a unique css selector for a node It is usefull to have a visual path for a node, but it should not be used to retrieve the node.
MMO\core\shell\getCursor Get the current position of the terminal cursor
MMO\core\dates\getDayNames Get the 7 day names for $lang, in week order (Monday first).
MMO.core.dom.getEmValuejs Get the node's font-size in pixels (the value 1em resolves to).
MMO\core\shell\getEnv Alias to getenv(). Return null instead of false in case value is not set in the env
MMO.core.dom.getFocusableElementsjs MMO\core\dates\getFrenchBusinessDays Same as getWorkingDays(), but automatically excludes French public holidays (getFrenchHolidays()) for every year the range spans (not just $startDate's year -- a range crossing into a new…
MMO\core\dates\getFrenchHolidays Get every French public holiday of a given year, as
['Y-m-d' => 'name', ...], sorted by date.MMO\core\shell\getInput The stream user input is read from.
MMO\core\dates\getMonthNames Get the 12 month names for $lang, in calendar order (January first).
MMO.core.dom.getMouseEventCaretRangejs Get the text position a pointer event landed on, across the three browser apis.
MMO.core.dom.getNextFocusjs The focusable element sitting just after a node in the document's tab order.
MMO.core.dom.getPathjs Get a unique path for node as indexes in childnodes WARNING: the path is reversed, so iteration starts from length-1 and not 0
MMO\core\strings\getPlaceholders Get every placeholder in a template, without rendering/matching anything (a thin wrapper over loopTemplate()).
MMO.core.dom.getPreviousFocusjs The focusable element sitting just before a node in the document's tab order.
MMO.editor.getRangejs MMO.core.dom.getRangeNodesjs MMO.core.dom.getStylejs Set css styles
MMO.core.getterjs Create a function that reads an object's property when called.
MMO.core.dom.getTextNodesjs MMO.i18n.getTranslationsjs Get the translation map for a given language
MMO\core\dates\getWorkingDays Compute the number of working days (Mon-Fri, minus $holidays) between two dates, both inclusive.
MMO\core\colors\gradientOf Interpolates a color along a linear gradient between two colors, based on a normalized position (0 to 1).
MMO\core\objects\greaterThan Tells if $a orders after $b (per compare()'s ordering result).
MMO\oauth\GUIDv4 Generate valid version 4 UUIDS This function can serve to generate API keys
MMO\core\versions\hasAny Test if a version (string, or already-split() array) has a wildcard in any of its first 3 (major/ minor/patch) positions -- unlike isAny(), a partial wildcard like '1.*' counts.
MMO.core.dom.hasAttributesjs Test if element has the given attribute's values
MMO\core\uris\hasAuthority Tells if a uri has a
scheme://authority part at all (of any scheme).MMO\core\strings\hash3 Same as hash3Int(), but base-32-encoded (via PHP's own \base_convert(), NOT this file's own baseConvert()) into a short, compact string.
MMO\core\strings\hash3Int Compute the MurmurHash3 (32-bit) hash of a string, as an int.
MMO\core\strings\hash3Unpack Don't use this function directly unless you know what you are doing.
MMO\core\uris\hasLocalAuthority Tells if a uri's scheme is one of this framework's "local" schemes (\MMO\core\helpers\Uri::$LOCAL_SCHEMES, e.g.
MMO.core.dom.hasParentjs Test whether a node descends from another.
MMO\core\code\header MMO\core\shell\heading Print a title: set apart from what comes before it by a blank line, and ruled across the terminal (100 columns at most) -- how the steps of a long run are told apart at a glance.
MMO.core.markdown.headingTagjs Clamp an heading level to a valid html tag name (h1-h6)
MMO\core\strings\hex Convert a string to its hexadecimal representation, one hex number per byte.
MMO\core\colors\hexToRgb Converts a hex color (6-digit, or the 3-digit CSS shorthand) or a named HTML color to an RGB array.
MMO\core\shell\hideCursor MMO.core.dom.hostjs The custom element owning the shadow root a node lives in.
MMO\core\server\hostname Get the server's own hostname:
$_SERVER['SERVER_NAME']if set, else the system hostname.MMO.core.dom.htmljs Mark markup to be parsed by the functions building nodes from children (MMO.core.dom.appendChildren,
MMO.core.htmlentitiesDecodejs Decode html entities encoded with php function
htmlentities()or js functionMMO.core.htmlentitiesEncode()MMO.core.htmlentitiesEncodejs Equivalent of php function
htmlentities()MMO\core\strings\htmlTable Render a list of records (csvEncode()'s $data shape) as a plain HTML
<table>, guessing the header row from the data's own keys (in the order first seen).MMO\core\server\httpStatus Sanitize a value for use as an HTTP status code: pass it through if it is an int that isHttpStatus(), else fall back to 500.
MMO.edms.iconjs MMO\core\files\image Load an image file (jpeg/png/gif) as a GD image resource/object.
MMO\core\versions\inc Increment one component (major/minor/patch) of a version, returning the new version string.
MMO\doc\includeDocumentation Include the documentation in the html response This function is added as a job in the application.
MMO.core.dom.includeScriptjs Include script in html <head> or in a node
MMO.core.dom.includeStylejs Include style in html <head> or in a node
MMO\core\strings\indent Indent every line of a text.
MMO.infojs Log an informative message, tagged and colored.
MMO\core\debug\info Return memory info on current execution
MMO\core\server\info Parses phpinfo() output and returns a structured array.
MMO\core\server\infoHTML Capture phpinfo()'s HTML output as a standalone, embeddable fragment: styles are rescoped under
#phpinfo(instead of being global) and the surrounding<html>/<head>/<body>are stripped, so …MMO\core\arrays\inject Inject a configuration into $src recursively: every key of $config is itself a json-path into $src, and its value is set() (recursively merge()d with whatever's already there, by default)…
MMO.core.markdown.insertjs MMO.core.dom.insertAfterjs Insert a node just after another one.
MMO.core.dom.insertNodeInTextjs Insert an Element inside a text element
MMO.core.svg.insertTextjs Insert text in svg and make sure it is not wider than maxWidth
MMO.insertTextjs Insert text in an element
MMO\core\server\ip Get the client's IP address, from the first of
HTTP_CLIENT_IP/HTTP_X_FORWARDED_FOR/REMOTE_ADDRthat's set.MMO\core\paths\isAbsolute Tells if a path is absolute (starts with '/'; for the split/array form, has at least 2 segments and an empty leading one, per split()'s
'/' => ['', '']convention).MMO\core\uris\isAbsolute Tells if a uri is absolute: it has a network authority (
scheme://host/..., or -- in $strict mode -- a local-scheme authority followed by/), or (falling back to \MMO\core\paths\isAbsoluteF…MMO\core\paths\isAbsoluteFilename Same as isAbsolute(), but for a real filename: also recognizes a Windows drive, and (for a string path) a URI authority (
scheme://host/...or//host/...) as making the path absolute.MMO\oauth\isAllAllowed Test if all scopes are allowed Scopes expressed as string can be a list of scope's uid seperated by a space: each of them must be allowed too, as an OAuth2
scopeparameter means.MMO\oauth\isAllowed Test if scope is allowed To compare two scopes, we look for any scopes containing the given one or one of its subset.
MMO\core\strings\isAlphaNum Test if a string is only made of letters, digits, or the given extra allowed characters.
MMO\core\versions\isAny Test if a version (string, or already-split() array) is a bare wildcard: '*', or a split version whose first 3 elements are all '*' (i.e.
MMO\oauth\isAnyAllowed Test if at least one scope is allowed Scopes expressed as string can be a list of scope's uid seperated by a space (in this case, all scopes MUST be allowed).
MMO.editor.isBlockjs MMO\core\server\isContentType Test whether a
Content-Typeheader matches a given file extension's MIME type(s) (extension()).MMO.core.isEmptyjs Check if object is empty
MMO.core.isEqualjs Check if 2 values are equal (deep)
MMO\core\objects\isEqual Tells if two values are STRICTLY equal, per compare() (i.e.
MMO\core\strings\isEscaped Test if the character at $pos is escaped: preceded by an ODD number of consecutive $escapeChar (an even number means those escape characters escape each other in pairs, leaving $pos itself unescaped).
MMO\core\dates\isFrenchHoliday Tells if a date is a French public holiday (getFrenchHolidays()).
MMO\core\server\isHttpStatus Tells if $status is a plausible HTTP status code (100-599).
MMO\doc\isInNamespaces Check if a namespace is inside a list of other namespaces
MMO\core\shell\isInteractive Tells if the answers are typed by someone at a terminal, rather than read from a pipe, a file or a stream given to setInput.
MMO.core.server.isLinkjs MMO\core\files\isLocal Tells if a uri refers to the local filesystem: no authority at all (a plain path), or a
file:///phar://scheme.MMO\core\dates\isMDYFormat MMO.core.dom.isMergeableNodejs Tells if two nodes can be merged: they have the same type and the same attributes and they are part of the list MMO.core.dom.MERGEABLE_NODES or they are Text nodes
MMO\core\files\isMoreRecent Tells if a file was modified after $time -- or, for a folder (or an already-obtained loopFolder() generator), if ANY file under it was.
MMO\math\isNumber Test if a value is a float, int or iNumber
MMO\core\server\isOk Tells if a status is a "success" HTTP status: [200, 400).
MMO\core\strings\isPlaceholder Tells if $text is, as a WHOLE, a single placeholder (
{...}) -- e.g.MMO\core\strings\isRegex Test if a string is a syntactically valid PCRE regular expression (delimiters and all).
MMO\core\shell\isRunning Tells if a process with the given PID is currently running.
MMO.editor.isSafeUrljs MMO\core\objects\isSame Tells if two values are equal, in either sense compare() can report equality (strict
true, or the ordering-comparison tie value0).MMO.core.isSameArrayjs Test if two arrays hold the same values, ignoring their order.
MMO\core\objects\isSerialized Tells if an array (recursively) contains at least one serialized-object marker (a
['$' => ...]entry, as produced by serialize()), meaning it needs unserialize() to be turned back into …MMO.inputs.keyboard.isShortcutValidjs Test if shortcut is valid
MMO.core.isSimilarjs Test whether
bis "contained in"a(a one-way, loose comparison).MMO.core.isSimpleObjectjs Test whether a value is a plain data container rather than a class instance.
MMO\core\shell\isTty Tells if the current terminal is a tty (native terminal device)
MMO.core.isUniquejs Check if an array has only unique items
MMO\core\arrays\isUnique Tells if every value in $array is distinct (strict,
===, comparison).MMO.core.server.isUrljs Test whether a string looks like a public web address: an optional scheme, a host and a tld.
MMO.core.server.isUrlRelativejs Tells if url is relative
MMO\oauth\isUserAllowed MMO\core\server\isValidHost Validate whether a string contains a valid value to use as a hostname or IP address.
MMO.core.dom.isVisiblejs Check if element is visible
MMO\core\paths\isWindowsFilename Heuristically tell if a path looks like a Windows path: either it uses
\and no/at all, or it starts with a valid drive letter immediately followed by a separator (or nothing else).MMO.core.dom.isWrappedjs Check if first text element in a node is wrapped in a tag
MMO.core.path.joinjs MMO\core\paths\join Join an array of path segments (as produced by split()) back into a path string, escaping each segment.
MMO\core\uris\join Reverse of split(): join a parts array back into a uri string.
MMO\core\versions\join Reverse of split(): join a split version back into a string, replacing a negative stability int back into its word form (the first STABILITY key with that value -- STABILITY).
MMO\core\paths\joinFilename Same as join(), but converts every
/to\afterwards when $isWindows is true.MMO\core\dates\json Format a date as ISO 8601 (
c), for JSON output.MMO\core\files\json Read and decode a JSON file (\MMO\core\strings\jsonDecode() for $asArray/$vars/$cleanUp).
MMO\core\strings\jsonDecode Decode a JSON string, optionally tolerating non-standard syntax and templating in
{var}values first.MMO\core\strings\jsonEncode Encode a value as JSON, with a sanity check that guards against a common \json_encode() footgun: silently returning the string
'null'for a value it couldn't actually encode (e.g.MMO\core\strings\jsonUnicodeDecode Reverse of jsonUnicodeEncode(): decode a sequence of JSON unicode escapes (backslash, u, then 4 hex digits, repeated) back to a UTF-8 string.
MMO\core\strings\jsonUnicodeEncode Encode a UTF-8 string as a sequence of JSON
\uXXXXunicode escapes (surrogate pairs for anything outside the Basic Multilingual Plane).MMO\core\arrays\keys Get the keys of any iterable (not just a plain array) as a plain array.
MMO.core.ksortjs Reorder an object's keys IN PLACE (a javascript object keeps its insertion order).
MMO\core\versions\ksort Sort an array by its KEYS, treating them as version numbers (sortCompare()).
MMO.core.path.lastKeyjs Get the last segment of a path, WITHOUT unescaping it.
MMO.math.LCMjs Get the least common multiple (the smallest number both a and b divide).
MMO\core\strings\length Count the number of characters (not bytes) in a UTF-8 string, without needing the mbstring extension.
MMO\core\shell\lengthANSI Get length of a text, removing ansi sequences: a character is counted as one whatever its bytes (UTF-8).
MMO\core\objects\lesserThan Tells if $a orders before $b (per compare()'s ordering result).
MMO.core.transitions.linearFnjs Build an easing that bends a linear ramp.
MMO\core\shell\lines Attempt to get the number of lines of the current terminal
MMO\core\strings\lines Split text into lines by $separator, like \explode(), EXCEPT a $separator that falls inside a quoted ($enclosure-delimited) section does not split -- so a CSV-style multi-line quoted field stays on…
MMO.core.linkjs Set a link to another object's property as a property To remove the link just delete the property
MMO.core.linkFnjs Set a function as an object's property To remove the function just delete the property
MMO\doc\linkSees Replace every
@seereference of a markdown text with a link to its target, or with inline code when the target is documented nowhere.MMO.core.strings.listRegexjs Create a regular expression for a serialized list, each properties separated by sep, not ordered.
MMO.i18n.loadjs Load translations for a given language
MMO.loadJSONjs Turn a raw framework API response into usable objects, in place: -
linksare parsed into objects -logsare pushed to the app console - the linkedschemais fetched -databecome MMO.elemen…MMO\oauth\logout MMO\rpg\longestTimeGap MMO.core.dom.loopAppendChildrenjs Add children to a node using a generator
MMO\core\files\loopCopy Recursively copy a file or folder, yielding each individual file as it's copied (a folder itself isn't yielded, only the files under it -- but it IS created, even if empty).
MMO\core\files\loopDelete Recursively delete a file or folder (depth-first: a folder's contents are deleted before the folder itself), yielding the path of each thing actually removed as it's removed.
MMO\core\files\loopFolder Lazily list the entries of a folder (files AND subfolders, each yielded individually -- a subfolder is yielded itself, in addition to whatever's recursed into it).
MMO.core.dom.loopInputsjs Yield every form control inside a node, recursively.
MMO.core.dom.loopRangeNodesjs Yield node selected in a range
MMO\core\strings\loopTemplate Loop a template containing placeholders A placeholder has the following format
{?path:type}- ?: if the placeholder is optional [optional] - path: a valid json path (:MUST be changed to~2).MMO.core.dom.loopTextNodesjs Loop through all text nodes inside a node
MMO\rpg\loopTimes MMO\core\versions\loopVersions Lazily yield every version in $versions that satisfies $constraint, from highest to lowest (sort()).
MMO\core\colors\luminance Compute the WCAG 2.0 relative luminance of a color (0 = darkest black, 1 = brightest white).
MMO.schemas.makePatternjs Create a regular expression from a string
MMO.core.dom.makeRelativejs Convert an absolute document point into one relative to a node's box.
MMO.core.server.makeUrlRelativejs Make url relative to window location
MMO\core\server\matchAccept Parse a weighted
Accept-family HTTP header (sortAccept()) and find the best-matching entry in $supported: the header's options are tried highest-weight first, and the first one present as a …MMO.core.strings.matchListjs Match a serialized list, with no defined order (any regular expression can match first) If some text is not contained in any captured, but the regex matches, this text is returned at the index '-1'
MMO\core\arrays\matchMask Test each key present in $mask against the corresponding key in $value.
MMO\core\paths\matchMask Try to match a path against a mask made of plain segments,
{name:type}moustache templates (\MMO\core\strings\matchTemplate), and wildcards:*matches exactly one segment,**matches any…MMO\core\uris\matchMask Try to match an uri against a mask.
MMO.core.strings.matchObjectjs Match a serialized object
MMO.editor.matchShortcutjs Test a keyboard event against a shortcut, modifiers included:
Mod+bis notMod+Shift+b.MMO\core\strings\matchTemplate Match $text against a loopTemplate()-style template, extracting each placeholder's captured (and, if typed, coerced+validated) value into &$matches.
MMO\math\max Get the maximum value of a list of numbers (iNumber included)
MMO\core\debug\memLimit MMO\core\debug\memRamUsage MMO\core\shell\menu Print a navigable single-choice menu and return the selected key.
MMO.core.mergejs Merge primitive objects or values.
MMO\core\arrays\merge Recursively merge $value into $src: for matching keys whose values are themselves both array-like, merge recursively; otherwise $value's value simply overwrites $src's.
MMO\core\paths\merge Concatenate several paths (segment arrays or path strings) into one, dropping the trailing empty segment of a path when the next one continues it (so joining doesn't produce a doubled
/), and ski…MMO\core\arrays\mergeAt Same as merge(), but merges $value into whatever is already at $path (instead of into $src itself), then writes the result back with set().
MMO\core\arrays\mergeInject A shallow, synchronous cousin of inject(): recursively merge $config into $src and return the result (rather than mutating a reference and honoring the
?/=path-prefix directives), underst…MMO\oauth\mergeScopes Merge scopes into source.
MMO\core\versions\metadata Extract a version's build metadata (the part after '+'), without normalizing the rest of the string.
MMO\core\server\mime Get the MIME type(s) (MIMES) registered for a file extension.
MMO\math\min Get the minimum value of a list of numbers (iNumber included)
MMO\math\minus MMO\core\files\move Move file to new destination
MMO\core\shell\moveBack MMO\core\shell\moveCursorCol MMO\core\shell\moveCursorLine MMO\core\files\mtime Get a file/url's last-modified time, locally via \filemtime() or remotely via a curl HEAD request.
MMO\math\multiply Multiply any number (iNumber included) by a factor
MMO\core\files\name Get a short, human-readable identifier for a stream or process resource (for logging/debugging).
MMO\core\dates\nearestWeekDay Get the closest week day (MON-FRI) to the given date: a Saturday snaps back to Friday, a Sunday snaps forward to Monday.
MMO.edms.nodejs A node, from its tag, its attributes (
on*functions become listeners) and its children: nodes, or text -- a string is always a text node, never html (a file's name is the user's).MMO.core.dom.normalizejs Merge child nodes if they are mergeable
MMO\core\strings\normalize Normalize text for loose/accent-insensitive equality comparison: safeIdentifier() then lowercase.
MMO\core\versions\normalize Normalize a version string: strip its build metadata (the
+...suffix, captured into &$metadata), and turn separators (_,-,+, spaces) plus letter/digit boundaries into., so it can be c…MMO\core\paths\normalizeFilename Replace every
\with/, turning a Windows-style path into a plain one split()/join() can handle.MMO\math\number Convert any value to a number (int|float)
MMO\core\dates\numberOfDays Compute the total number of distinct days covered by a list of (possibly overlapping) day intervals, by merging them first (unionOfDayIntervals()) so an overlapping day is only counted once.
MMO.core.strings.objectRegexjs Create a regular expression for a serialized object, each properties separated by sep.
MMO.onDateInputjs Browser fix: a date input silently clears itself when the user types a partial value.
MMO.core.dom.onIndeterminateClickjs This function allow a checkbox to cycle through 3 states: checked, unchecked, indeterminate.
MMO\core\files\open Open a file and return the resulting stream resource, translating the STREAM_* flag bitmask into the right \fopen() mode (always append-mode when writing, so an existing file's content is preserved…
MMO\math\operatorRegex Get a regular expression used to tokenize a math expression (used by parse)
MMO\core\arrays\options The options array behind $options: a typed options object (\MMO\core\interfaces\iOptions) gives its
toArray(), an array is returned as it is.MMO\core\server\origin Get the requesting page's url: the
Refererheader, falling back to theOriginheader.MMO\core\files\package Package a list of files into a phar package WARNING: when creating a PharData (no stub), the filename MUST NOT have
.pharin the extension.MMO\core\shell\padANSI Pad string ingoring ANSI sequences
MMO.core.dom.parentElementjs The parent element, crossing a shadow boundary to the host rather than stopping at it.
MMO\core\shell\parse Parse a command line This command line option parser supports any combination of three types of options [single character options (
-a -bor-abor-c -d=dogor-cd=dog), long options (`--fo…MMO\math\parse Tokenize a mathematical expression
MMO\core\debug\parseBytes MMO\core\strings\parseDocComment Quickly parse a PHP doc comment (`* ...
MMO\client\parseSassArray Converts sass string to an array
MMO\core\schemas\parseType Parse this framework's compact type-description mini-language (used in doc comments, commentInformation(), and anywhere a schema is written by hand as a short string) into a JSON-Schema-shaped…
MMO.pathjs Get a path from the config (used by
MMO.url)MMO\core\uris\path Extract just the path component of a uri (stripping scheme/authority/query/fragment).
MMO.pathExistsjs MMO\core\files\perms Get a file/folder's permissions formatted like unix
ls -l(e.g.MMO\core\files\permsText Format a raw \fileperms()-style integer as a unix
ls -lpermission string.MMO\core\strings\phpStripWhitespace Compact a PHP source string's whitespace (collapse runs of spaces/tabs, strip leading indentation) while preserving line numbers -- unlike stripWhitespace(), this is PHP-token-aware (via \toke…
MMO\math\plus MMO\core\strings\position The reverse of findOffset(): get the line/column for a given character offset in a text.
MMO\math\power MMO.core.transitions.powInFnjs Build an accelerating easing: slow at the start, fast at the end.
MMO.core.transitions.powInOutFnjs Build an easing that accelerates then decelerates, symmetrical around the midpoint.
MMO.core.transitions.powOutFnjs Build a decelerating easing: fast at the start, slow at the end.
MMO.core.preventPropagationjs Alias to stop event propagation
MMO.printjs Print given nodes in a new window
MMO.core.strings.printfjs printf like. variable must be surrounded with {varialble} (injector) ex: printf('Hello, {message}!', {message: 'world'}) > Hello, world!
MMO\core\strings\printf Interpolate context values into
{key}placeholders in $format.MMO\core\strings\printfd Same as printf(), but converts values via describe() instead of render() -- useful for debug messages where you want a value's raw/technical representation rather than its "nice" ren…
MMO\core\shell\printInRect Print lines in a rectangle and returns text's positions in the rectangle This function is safe with ANSI sequences
MMO\core\debug\procInfo MMO\core\shell\progress Print and redraw an in-place progress bar.
MMO\core\shell\prompt Ask for a value, showing the one ENTER keeps, until the answer is a valid one.
MMO\core\shell\promptList Ask for a list of values, separated by commas.
MMO\core\code\propertyType The type a generated property is declared with: a non-nullable class type becomes nullable, so that the property can default to null (a typed property has to be initialized before it is read, and `…
MMO\core\shell\protectShellBuffering Install a SIGINT/SIGTERM safety net so the terminal is not left in raw/no-echo mode if the process is interrupted (e.g.
MMO.providejs Declare a namespace, creating every missing level of it.
MMO\core\debug\PSRFlag Convert framework flags to PSR flags
MMO.core.dom.ptInsidejs Tells if a point is inside a container
MMO\core\arrays\push Append a value to the list at the given json-path (turning a non-list scalar/null already there into a single-element list first, so it can be appended to).
MMO\core\files\put Same as write(), but always appends and creates any missing parent folder (STREAM_PUT = write + create folder).
MMO\oauth\randomBytes Generate a unique identifier in hexadecimal
MMO\rpg\rank MMO\core\shell\read Read a command from the user input.
MMO\core\shell\readAnswer Show what ENTER answers, then read the answer.
MMO\core\shell\readCallback Read every key press by the user on the command line (as opposed to fgets which waits on return key)
MMO\core\shell\readKeys Wait for the user to press a key, then read it with every key that came with it -- a paste, fast typing, keys sent in one go over ssh -- one string for each: a character, or a whole escape sequence…
MMO\core\shell\readLine Read one line of user input, without its line ending.
MMO.core.dom.readonlyjs Make every form control inside a node read-only, or writable again.
MMO\core\shell\readOption The half of read that has no terminal to read keys from: the next line of the input is the answer.
MMO\core\shell\readPending Take what the user has typed that nothing has read yet, without waiting for more -- or, given a timeout, waiting that long at most for a first key.
MMO\core\shell\readSecret Ask for a secret (e.g.
MMO\core\server\reasonPhrase Turn a message into an HTTP reason phrase (the status line's text,
statusTextin a browser): one line, of at most 1024 bytes, in ISO-8859-1 -- the only charset a status line has, so a browser rea…MMO\core\strings\regex Turn a plain pattern into a valid delimited regular expression, if it isn't one already (a string that already looks like
<delim>...<delim><flags>is passed through unchanged, plus $flags appended).MMO.inputs.registerjs Declare a gesture class under an event name, so
input.add('{name}')can build it.MMO.schemas.registerjs Register a schema so it can be looked up by id.
MMO.core.path.relativejs Get a relative path compare to a root path.
MMO\core\paths\relative Express $path relative to $root (both simplified first, so
../.in either are resolved).MMO\core\uris\relative The reverse of absolute(): strip out from $uri whatever it shares with $root (scheme, host/user/pass, matching port, and the common leading part of the path -- \MMO\core\paths\relative())…
MMO\core\paths\relativeFilename Same as relative(), but drive-aware (via simplifyFilename() when $isWindows is true).
MMO.reloadJSjs Reload the library's <script> tags in place, cache-busted.
MMO.core.dom.removejs Detach a node, or every node of a NodeList.
MMO\core\shell\removeANSI Strip ANSI escape sequences (colors, cursor movement, ...) from a text, leaving only the visible characters.
MMO.core.dom.removeChildrenjs Detach a list of nodes, flattening nested arrays and skipping null entries.
MMO\core\strings\render Render any value into a "nice", human-facing string: - a scalar is cast to string directly - an \MMO\core\interfaces\iRenderable renders itself - an object with __toString() uses that - an iterable…
MMO\core\strings\renderTemplate Fill in a loopTemplate()-style template's placeholders with values from $data (by default rendered through render(); pass $printer to customize).
MMO.requirejs Declare that this file needs a namespace another one provides.
MMO\core\uris\resolve Resolve $uri against a base uri and simplify the resulting path -- a direct implementation of RFC 3986's reference resolution algorithm (unlike absolute(), this correctly treats $base's path a…
MMO\core\shell\restoreShellBuffering Undo one call to stopShellBuffering.
MMO\core\dates\RFC Format a timestamp per RFC 1123/2822 (RFC_FORMAT), as used in HTTP dates and email headers.
MMO\core\colors\rgbToHex Converts RGB values to a hex color.
MMO.core.dom.rootjs Get root HTML
MMO\core\files\rootFolder Get the deepest common ancestor folder shared by a list of filenames.
MMO\math\roundScale Round value to the closest power of ten
MMO.core.transitions.runjs Run an animation
MMO\core\strings\safeIdentifier Turn arbitrary text into a safe identifier: strip accents (stripAccents()), trim, and replace every character that isn't a letter/digit/underscore (or in $authorizedChar) with $replace.
MMO.core.strings.safeJsonEncodejs Alias to JSON.stringify, safe for circular references WARNING: don't use to stringify content that will be decoded.
MMO.core.markdown.safeUrljs Make an url safe to use as a link/image target.
MMO.editor.sanitizejs Clean html so that it only holds what the editor can produce (MMO.editor.ALLOWED_TAGS).
MMO.editor.sanitizeAttributesjs [internal] Keep the attributes MMO.editor.ALLOWED_TAGS lists for this tag, with safe values only.
MMO.editor.sanitizeChildrenjs [internal] MMO.editor.sanitize, on the children of one node
MMO\core\shell\say Print an informational message, prefixed with '- ' in purple.
MMO\core\debug\sbenchmark Benchmark a closure Returns result in a string ex: $a = new DummyClass(); echo \MMO\core\debug\benchmark('test', function() use ($a) {..}, 10000);
MMO\math\scale Get the power of ten the given value is precise to
MMO\core\files\scanFolder Same as loopFolder(), but eagerly collects the results into an array, naturally case-insensitively sorted and then REVERSED (so entries come back in descending natural order).
MMO\oauth\scopeID Get the scope id for a given object
MMO.core.strings.scorejs Score a searched text with some text content
MMO\core\strings\scoreWord Fuzzy-match score of $w1 against $w2 (e.g.
MMO.screenshotjs Capture the current tab as an image.
MMO.scriptErrorjs Log an error that happen in an inline script
MMO\core\server\scriptName Get the absolute filename of the currently running script (works both under a web server and on the CLI).
MMO.core.dom.scrollIntoViewjs Open all the details containing a node
MMO.core.strings.searchjs Search text inside a list of urls + texts
MMO\doc\seeLabel MMO\doc\seeParts MMO\doc\seeTarget MMO\doc\seeTargets Every target the
@seereferences of a text point at, cleaned of the punctuation the sentence around it glued on (@see stop.,(stop)), and split when several are written as one (`@see get…MMO\core\shell\select Print a menu of choices and return the keys of the selected options
MMO.core.dom.selectRangejs MMO.sendMailjs Ask the server's mail controller to send a templated mail.
MMO.core.strings.serializejs Convert any variable into a valid string
MMO\core\objects\serialize Serialize an object (or an array possibly containing objects) into a plain, JSON-safe nested array that
MMO\core\shell\serialize Serialize the command All parameters with no string key (plain args) are left untouched (no escape).
MMO\core\objects\serializeProperties Reflect over an object's properties and serialize them into a plain array (the default serialization strategy used by serialize() for objects that don't implement iSerializable themselves).
MMO.editor.serializeRangejs Where a range starts and ends inside a root, as child indexes: it can be put back on a copy of the same html (MMO.editor.History), where the nodes themselves are gone.
MMO\core\arrays\set Set a value at the given json-path, creating missing intermediate arrays by default.
MMO\core\files\set Same as write(), but always replaces the stream's entire existing content (STREAM_SET = write + clear).
MMO.core.dom.setAttributejs Set element attribute
MMO.core.dom.setAttributesjs Set element attributes
MMO.core.dom.setBoundingRectjs MMO\core\shell\setCursor MMO\core\shell\setInput Read the user's answers from another stream than STDIN: a file of answers, or -- in a test -- a
php://memorystream written beforehand.MMO.core.dom.setOffsetjs Set the current offset of the element
MMO.editor.setRangejs Replace the current selection
MMO.core.dom.setSizejs Set a node's width and height, queued like every other style write.
MMO.core.dom.setStylejs Queue style update in animation frame
MMO.core.dom.setStylesjs Set css styles
MMO\core\dates\setTimezone Set the default timezone for the rest of the request (date_default_timezone_set()).
MMO\oauth\setUser MMO.inputs.keyboard.shortcutIconjs Create an icon for a keyboard shortcut, using this table: ⎋ ` 1 2 3 4 5 6 7 8 9 0 - = ⌫ ⎀ ⤒ ⇞ ⇥ Q W E R T Y U I O P [ ] \ ⌦ ⤓ ⇟ 🄰 A S D F G H J K L ; ' ↵ ⇧ Z X C V B N M , .
MMO.editor.shortcutLabeljs MMO\core\shell\showCursor MMO\core\shell\sigchildEnabled Tells if PHP has been compiled with the '--enable-sigchild' option.
MMO\oauth\signatureToDER Convert an ECDSA signature to an ASN.1 DER sequence
MMO.core.path.simplifyjs Simplify a path by removing
.and `and trying to get rid of..`.MMO\core\paths\simplify Simplify a path by resolving
.and..segments and dropping empty ones, without touching the filesystem (a leading..past the root is dropped for an absolute path -- you can't go above/-…MMO\core\uris\simplify Simplify a uri's path component in place (resolving
./..-- \MMO\core\paths\simplify()), leaving the rest of the uri untouched.MMO\core\paths\simplifyFilename Same as simplify(), but drive-aware: a Windows drive is protected from being simplified away (
c:\..staysc:\, it never turns into just\, since going "above" the drive doesn't mean anyt…MMO.edms.sizejs MMO\core\files\size Format a byte count as a human-readable size, with French unit abbreviations (o/ko/Mo/Go/To).
MMO\math\size Get the size of the given values
MMO.sleepjs MMO\core\files\sort Sort a list of filenames "naturally" (so 'file2' sorts before 'file10' -- \strnatcmp()).
MMO\core\versions\sort Sort an array by its VALUES, treating them as version numbers (sortCompare()).
MMO\core\server\sortAccept Parse a (comma-separated, or already split)
Accept-family HTTP header (Accept,Accept-Language, ...) and sort its options by weight (the;q=parameter), highest first.MMO\core\versions\sortCompare Same as compare() (with no operator), except a wildcard version always sorts BEFORE the versions it matches (so
1.*sorts before1.2.3) rather than comparing equal to them -- this is what …MMO\core\arrays\sortPreserve Sort an array in place using $sortFn, like \uasort()/\uksort(), but stable: when two items are equivalent ($sortFn returns 0), their original relative order is preserved instead of being left unspe…
MMO\core\packages\sortUrls Sort a (possibly nested) array of source urls by urlPriority, in place.
MMO.core.path.splitjs sometimes path is a solo number (in array).
MMO.core.strings.splitjs Split words (utf-8) with a set of delimeters
MMO\core\paths\split Split a path string by
/into segments, unescaping each one.MMO\core\shell\split Split string on space, except for quoted words
MMO\core\uris\split Parse a uri into its RFC 3986 parts.
MMO\core\versions\split Split a version string into an array of at least 3 elements
[major, minor, patch, ...prerelease], per Semantic Versioning.MMO\core\shell\splitANSI Split text ignoring ANSI sequences
MMO\core\code\splitClass Split a class name into its namespace and its short name.
MMO\core\paths\splitFilename Same as split(), but normalizes
\to/first when $isWindows is true.MMO\core\uris\splitQuery Same as \parse_str(), except it distinguishes the three ways an "empty" query value can be written -- the exact reverse of buildQuery(): -
xxx=->''(empty string) -xxx(no=at all)…MMO\core\debug\standardTraces Standardize traces returned by an Exception or debug_backtrace
MMO\core\server\statusMessage Get the human-readable message for an HTTP status or shell exit code (MESSAGES).
MMO\core\shell\stopShellBuffering Stop shell line buffering so you can capture direct input from user, without waiting for a flush (ENTER)
MMO.core.strings.stripAccentjs Strip accent of string
MMO\core\strings\stripAccents Replace every accented Latin character in $value with its plain-letter equivalent (getAccents()).
MMO\core\strings\stripWhitespace Collapse runs of horizontal whitespace to a single space, strip leading indentation on every line, and remove blank lines -- a generic text-compacting helper (NOT PHP-token-aware; phpStripWhit…
MMO\core\shell\substrANSI substr() ignoring ANSI sequences: offset and length count visible characters, whatever their bytes (UTF-8).
MMO\core\shell\success Print what went right, prefixed with '✔ ' in green.
MMO\core\shell\supportColor Tells if the current output supports ANSI colors/escape sequences.
MMO\core\shell\supportPty Tells if the current terminal support pty (pseudo terminal device).
MMO\client\SVGSprite Compile a list of svg files into a svg sprite.
MMO\core\shell\table Make a table text WARNING: to make sure columns are ordered correctly, make sure last item has all the columns in the right order
MMO\core\files\temporaryFilename Create an empty, uniquely-named temporary file (in the
{tmp}path alias) and return its filename.MMO\core\files\temporaryFolder Create an empty, uniquely-named temporary FOLDER (in the
{tmp}path alias) and return its filename.MMO\core\code\test The source of a first test for a class, for the library's phpunit suite.
MMO\core\colors\textColor Pick whichever of 'black'/'white' text reads better on top of the given background color.
MMO\core\strings\textRegex Build a case/accent-insensitive regex that matches $value literally, but where every letter also matches any of its accented forms (e.g.
MMO.editor.textToHtmljs Turn plain text into paragraphs: a blank line ends one, a single newline is a line break.
MMO\core\dates\timezone MMO.core.strings.toBooleanjs Read a boolean the way an html attribute or a query parameter carries it: the STRINGS '0', '', 'false' and 'FALSE' are false, unlike plain javascript truthiness.
MMO.core.strings.toCamelCasejs Convert words into a camel case valid string ex: font-weight => fontWeight
MMO.core.dom.toggleRangeTextWrappingjs Toggle wrapping text content in a selection.
MMO\core\dates\translateDate MMO.core.path.trimSplitjs Split a path, removing starting and endding '/'
MMO\core\objects\tryEnumFrom Get an enum case from its backing value (for a BackedEnum) or its case name (for any enum), without throwing.
MMO\core\schemas\typeLength The length of the type a text starts with, read the way phpstan reads a doc tag: in
list<string> the genres, the type islist<string>.MMO.schemas.typeofjs Get the JSON-Schema type name of a value.
MMO\core\schemas\typeOf Get the JSON-Schema primitive type name of a PHP value (as used in a schema's
typearray).MMO\core\schemas\typeOfText Guess the JSON-Schema type of a raw text value (e.g.
MMO.core.UIDjs Get a stable numeric id for an object, assigning one on first use.
MMO.core.path.unescapejs MMO\core\paths\unescape Reverse of escape().
MMO.core.path.unescapeReplacerjs MMO\core\dates\unionOfDayIntervals Merge a list of (possibly overlapping or adjacent) day intervals into the smallest set of non-overlapping intervals that covers the same days.
MMO\core\objects\uniqueClassID Get a small, stable, per-class-sequential id for an object (1, 2, 3, ...
MMO\core\arrays\uniqueList Merge one or more iterables and keep only the first occurrence of each (strictly,
===) distinct value, re-indexed as a plain list (original keys are discarded).MMO\core\arrays\uniqueMap Same as uniqueList(), but preserves the (first-seen) key of each distinct value instead of re-indexing.
MMO.uniqueObjectIDjs Get a stable numeric id for an object, assigning one on first use.
MMO.schemas.unregisterjs Forget a registered schema.
MMO\core\uris\unresolve The reverse of resolve(): recover the relative uri that, resolved against $base, would produce $uri.
MMO\core\objects\unserialize Turn data produced by serialize() back into live objects/arrays.
MMO\core\objects\unserializeDateTime Factory used by unserialize() to restore a DateTime serialized by serialize().
MMO\core\objects\unserializeDateTimeImmutable Same as unserializeDateTime(), but returns a DateTimeImmutable.
MMO\core\objects\unserializeEnum Factory used by unserialize() to restore an enum case serialized by serialize() (
['$' => ...unserializeEnum, $class, $case->name]).MMO\core\objects\unserializeProperties Restore an object's properties from serialized data, via reflection (bypassing setters).
MMO.editor.unserializeRangejs The opposite of MMO.editor.serializeRange
MMO.core.unwatchjs Unwatch an object's property ONLY set the value to MMO.core.UNWATCH_EVENT.
MMO.core.server.updateQueryjs Update url query
MMO.core.dom.updateStylesjs Update queue styles in given node
MMO.urljs Replace paths placeholder
{xxx}in an url.MMO\core\server\url Get the current request's full url.
MMO\core\packages\urlPriority Rank a source url so lower-priority (cheaper/faster to read) sources are processed first by sortUrls.
MMO\oauth\user Get current user set in the route This function MUST be called after middleware CurrentUser has been triggered.
MMO\core\strings\utf8Split Split a UTF-8 string into an array of its characters (not bytes -- a multi-byte character stays whole).
MMO\core\strings\UTF8ToHtml Convert every 4-byte UTF-8 character (i.e.
MMO\core\dates\validate Test if $value can be parsed by \DateTime::createFromFormat() using $format, AND round-trips back to exactly the same string when re-formatted -- i.e.
MMO\oauth\validateCSRFToken Validate a CRSF token
MMO\core\schemas\validateFormat Validate a string against a JSON-Schema
formatkeyword value.MMO.schemas.validatePrimitiveTypejs Validate primitive type
MMO\core\paths\validWindowsDrive Tells if a string is a syntactically valid Windows drive designation (a name made of characters allowed in a Windows filename, followed by
:).MMO.core.transitions.valuejs Get the value of a transition at a given step
MMO.core.dom.waitUntilVisiblejs Get a promise waiting for an element to become visible
MMO\core\arrays\walk The low-level primitive get()/exists()/set()/delete()/push() are all built on: walk down a json-path (
/-separated, RFC-6902-escaped -- \MMO\core\paths\split()) through nested arrays/Arr…MMO.warningjs Log a warning, tagged and colored, keeping the CALLER's file and line in the console.
MMO\core\shell\warning Print a warning message, prefixed with '!
MMO.core.watchjs Watch for a change on a proerty's value Redefine object's property with a getter and a setter.
MMO\core\shell\windowsConsoleSize Parse
mode con's output (windows only).MMO\core\shell\wrapANSI Wrap a text so that no line is wider than $width visible characters -- an ANSI sequence takes no room, and a character is counted as one whatever its bytes (UTF-8).
MMO\core\files\write Write $text to a stream.
MMO\core\shell\writeAt MMO\core\files\zip Open a zip archive, throwing a descriptive exception (rather than returning an error code) on failure.
Constants80
MMO.$js Make sure node is a dom element.
MMO.math.ALLOW_ALLjs MMO.math.ALLOW_EMPTYjs ALLOW_SPAN | ALLOW_OVERFLOW
MMO.math.ALLOW_OVERFLOWjs ALLOW_VALUE_SPAN | ALLOW_THIS_SPAN
MMO.math.ALLOW_SPANjs MMO.math.ALLOW_SPAN_OVERFLOWjs MMO.math.ALLOW_THIS_SPANjs MMO.math.ALLOW_VALUE_SPANjs MMO.editor.BLOCK_TAGSjs The tags that make a block of text: what
formatBlockchanges, and what a selection is aligned in.MMO.core.dom.BOOL_ATTRIBUTESjs MMO.inputs.BUT_LEFTjs MMO.inputs.BUT_RIGHTjs MMO.inputs.BUT_WHEELjs MMO.edms.configjs MMO.i18n.DATE_PREFIXjs MMO.editor.DEFAULT_TOOLSjs The toolbar a
<mmo-editor>shows when itstoolsattribute is not set.MMO.inputs.DRAG_HEIGHTjs MMO.inputs.DRAG_MOVEjs MMO.inputs.DRAG_MOVE_Xjs MMO.inputs.DRAG_MOVE_Yjs MMO.inputs.DRAG_NONEjs MMO.inputs.DRAG_ROTATEjs MMO.inputs.DRAG_SIZEjs MMO.inputs.DRAG_STRETCHjs MMO.inputs.DRAG_WIDTHjs MMO.inputs.DRAG_Xjs MMO.inputs.DRAG_Yjs MMO.editor.DROPPED_TAGSjs The tags removed together with everything they hold: code, embedded documents, and the head of a pasted page.
MMO.editor.EMPTY_DROPPED_TAGSjs The tags MMO.editor.sanitize removes when they hold nothing at all.
MMO.core.EVENTS_SYMBOLjs Thanks to https://github.com/Hypercubed/mini-signals
MMO.math.HCFjs MMO.core.IDjs MMO.core.SYMBOL_MODEL = Symbol('MMO.core.Model'); MMO.core.MODEL_EVENT_REMOVE = Symbol('Model.event.remove'); MMO.core.MODEL_EVENT_ALL = Symbol('Model.event.all'); MMO.core.MODEL_EVENT_DONE = Symbo…
MMO.editor.INLINE_TOOLSjs What an
[mmo-editor="inline"]region keeps: a single line, text formatting only.MMO.inputs.INPUT_CLASSjs MMO.math.INTERVAL_CONTAINjs MMO.math.INTERVAL_END_AFTERjs interval's end is before this start
MMO.math.INTERVAL_END_BEFOREjs interval's start is after this end
MMO.math.INTERVAL_INSIDEjs interval's end is after this end
MMO.math.INTERVAL_LEFTjs MMO.math.INTERVAL_LEFT_OVERFLOWjs MMO.math.INTERVAL_RIGHTjs MMO.math.INTERVAL_RIGHT_OVERFLOWjs MMO.math.INTERVAL_START_AFTERjs interval's start is before this start
MMO.math.INTERVAL_START_BEFOREjs MMO.editor.IS_MACjs MMO.core.MAP_CHANGEDjs function (<Symbol> MMO.core.MAP_CHANGED, <MMO.core.Map> map).
MMO.core.MAP_CONNECTjs function (<Symbol> MMO.core.MAP_CONNECT, <MMO.core.Map> parent, <string|int> key, <MMO.core.Map> value).
MMO.core.MAP_DISCONNECTjs function (<Symbol> MMO.core.MAP_DISCONNECT, <MMO.core.Map> parent, <string|int> key, <MMO.core.Map> value).
MMO.core.MAP_INDEX_CHANGEDjs function (<char> MMO.core.MAP_INDEX_CHANGED, <MMO.core.Map> map, <string|int> key, <int> oldIndex).
MMO.core.MAP_KEY_CHANGEDjs function (<char> MMO.core.MAP_KEY_CHANGED, <MMO.core.Map> map, <string> key, <string> oldKey).
MMO.core.MAP_VALUE_CHANGEDjs function (<char> MMO.core.MAP_VALUE_CHANGED, <MMO.core.Map> map, <string|int> key).
MMO.core.MAP_VALUE_CREATEDjs function (<char> MMO.core.MAP_VALUE_CREATED, <MMO.core.Map> map, <string|int> key).
MMO.core.MAP_VALUE_DELETEDjs function (<char> MMO.core.MAP_VALUE_DELETED, <MMO.core.Map> map, <string|int> key).
MMO.core.MAP_WATCHESjs MMO.core.dom.MERGEABLE_NODESjs MMO.core.path.REGEX_ESCAPEjs MMO.core.APIRequester.REGEX_FILTERjs MMO.core.server.REGEX_LINKjs MMO.core.server.REGEX_LINK_ATTRjs MMO.core.path.REGEX_UNESCAPEjs MMO.core.REG_BYTEjs MMO.core.REG_DATEjs MMO.core.REG_DATETIMEjs MMO.core.REG_TIMEjs MMO.core.REG_UNIXTIMEjs MMO.core.RFC_DATEjs MMO.core.RFC_TIMEjs Date time as defined in RFC3339 1: year (Y) 2: month (m) 3: day (d) 4: hour (H) 5: minute (i) 6: seconds (s) 7: .millisecond (u) 8: timezone (P)
MMO.core.markdown.SAFE_URL_SCHEMESjs MMO.schemas.FalseSchema.SHAREDjs MMO.schemas.TrueSchema.SHAREDjs MMO.svg.SVG_NSjs MMO.core.SYMBOL_DOM_REPLACEjs MMO.inputs.SYMBOL_INPUTjs MMO.core.SYMBOL_STYLESjs MMO.inputs.S_DONEjs MMO.inputs.S_IDDLEjs MMO.inputs.S_INjs MMO.uniqueIDjs Unique ids for object so you can test if two objects are the same (same ids)
MMO.core.UNWATCH_EVENTjs MMO.windowjs
Custom elements50
mmo-accordionjs Accordion element to display a list of accordions
mmo-addressjs Address element to display an address to fill in a form
mmo-appjs The application shell.
mmo-boardingjs Kanban board layout with drag & drop support.
mmo-calendarjs Event object: - id: string - title: string - description: string - icon: ?string - color: string - start: Date|string - end: Date|string|null - type: 'hint'|'event' (default event) - if 'hint', use…
mmo-carouseljs Carousel element to display a list of slides in a carousel layout
mmo-chartjs mmo-chart-configjs Configure a
<mmo-chart>: where its values come from, which plot draws them, and everything shown around them -- with a live preview, and the code that builds the same chart.mmo-codejs Code element: shows highlighted source, and -- for language="html" -- a live preview toggled with the top-right icon instead of stacking both at once.
mmo-consolejs Console element to display errors, warning and logs
mmo-doc-examplejs A runnable
@exampleblock.mmo-dropdownjs Dropdown element
mmo-editorjs A rich text (WYSIWYG) editor.
mmo-element-docjs Documents any
.jhscustom element, from the element itself.mmo-filemanagerjs The files of mmo.edms the user can see: filtered by a label of the tree, a search, whose they are or the trash, a page at a time.
mmo-filterjs Filter element to display a filter to filter a list of items
mmo-graphvizjs Graphviz element
mmo-gridjs Grid element to display a grid layout
mmo-iconjs Icon element to display an icon
mmo-imagejs An image to pick, show, or take away: its value is the image's url.
mmo-import-socketjs ImportSocket element
mmo-inspectorjs Inspector element
mmo-js-testsjs The javascript test suite, run from the page.
mmo-kanbanjs A project board in the manner of GitHub Projects: tickets seen as a board, as a tree-shaped list or as a timeline (a Gantt chart drawing the constraints between tickets).
mmo-listjs List element to display a list of items
mmo-markdownjs Markdown element
mmo-markdown-editorjs A markdown editor, GitHub flavored: a toolbar, the source, its preview (beside it, or in its own tab), and suggestion lists opened by a key.
mmo-notificationjs Notification element to display a notification or a modal following the attached class
mmo-palettejs Palette element to display a palette of colors
mmo-passwordjs Password element to display a password input and a confirm password input
mmo-pathjs Path element to display a path with a schema and a value
mmo-pdfjs PDF element
mmo-progressjs Progress element to display a progress bar
mmo-queryjs Query element to display a query to search for items
mmo-radiojs Radio element to display a radio group to select a value
mmo-sandboxjs Sandbox element
mmo-selectjs Select element to display a list of options
mmo-specimenjs One specimen of the design system: a live example, and the html that produced it.
mmo-swaggerjs Swagger element
mmo-tablejs Table class
mmo-tabsjs Tabs element to display a list of tabs.
mmo-theme-configjs The theme configurator: every value the theme's
.scstoken sources declare, editable, previewed live, and written back as Simple CSS.mmo-tocjs TOC element to create a table of content for a target element
mmo-tooltipjs Tooltip element to display a tooltip
mmo-treejs Tree element to display a tree of items
mmo-uploadjs Drop files, or pick them, and send them to mmo.edms: a chunk at a time, two files at once, each one resumed where the server stopped when a chunk fails.
mmo-validityjs Validity element to display a validity of the elements inside the mmo-validity
mmo-widgetjs Widget element to display a widget in a grid
mmo-workflowjs Workflow element to display a workflow
mmo-xp-labjs "Stat Sheet" — a configurable RPG-style XP/leveling lab for personal development objectives.
Views3
import-variablejs ImportConfig element
Issuejs mmo-type-selectjs Type element to select a type and add constraints to it
Mixins6
MMO.elements.CustomAPIElementjs API element WARNING: It is a class mixin.
MMO.elements.CustomElementjs CustomElement mixin WARNING: It is a class mixin.
MMO.CustomErrorjs Build an MMO error class on top of a native one.
MMO.elements.CustomShadowElementjs CustomElement with shadow dom mixin WARNING: It is a class mixin.
MMO.core.mixinEventEmitterjs MMO.elements.Widgetjs Widget WARNING: It is a class mixin.
Guides99
2026-09-code-reviewmmo.core/reviews APImmo.core Arraymmo.core automatic-url-linkingmmo.client/markdown/extended availabilitymmo.client/markdown/extended blockquotesmmo.client/markdown/basic boldmmo.client/markdown/basic ChangeEventmmo.client checklistsmmo.admin codemmo.client/markdown/basic Containermmo.core Controllermmo.core Convertersmmo.core Curves frameworkmmo.rpg Custom-Elementsmmo.client/mcp definition-listsmmo.client/markdown/extended deploymmo.admin DEPLOYmmo.client documentationmmo.client DOCUMENTATION_GAPSmmo.client Documentsmmo.core emojimmo.client/markdown/extended emphasismmo.client/markdown/basic Entitiesmmo.core Entitymmo.core escaping-charactersmmo.client/markdown/basic Eventsmmo.core Examplesmmo.client/mcp Exceptionsmmo.core fenced-code-blocksmmo.client/markdown/extended Filtersmmo.pdo footnotesmmo.client/markdown/extended Handlersmmo.pdo heading-idsmmo.client/markdown/extended headingsmmo.client/markdown/basic highlightmmo.client/markdown/extended horizontal-rulesmmo.client/markdown/basic htmlmmo.client/markdown/basic imagesmmo.client/markdown/basic italicmmo.client/markdown/basic JHSmmo.client JHS-Syntaxmmo.client/mcp Joinsmmo.pdo JS_REVIEWmmo.client line-breaksmmo.client/markdown/basic linksmmo.client/markdown/basic listsmmo.client/markdown/basic Mapmmo.client MCPmmo.core Modulesmmo.core NewLibrarymmo.core NewProjectmmo.core ordered-listsmmo.client/markdown/basic Overviewmmo.admin/mcp overviewmmo.client/markdown/basic overviewmmo.client/markdown/extended Overviewmmo.client/mcp Overviewmmo.doc/mcp Overviewmmo.editor/mcp Overviewmmo.edms/mcp Overviewmmo.git/mcp Overviewmmo.math/mcp Overviewmmo.mongodb/mcp Overviewmmo.oauth/mcp Overviewmmo.pdf/mcp Overviewmmo.pdo/mcp Overviewmmo.rpg/mcp Pagesmmo.client paragraphsmmo.client/markdown/basic Parsermmo.core Printersmmo.core Repositorymmo.pdo Routermmo.core SASS_ARCHITECTURE_REVIEWmmo.client SASS_FIX_PLANmmo.client Schemammo.core SCS - Simple cascading style.v0.7mmo.client SCS_DESIGN_SYSTEMmmo.client SECURITY_REVIEWmmo.client Serializationmmo.core SimpleCSSmmo.client sshmmo.admin Statementsmmo.pdo strikethroughmmo.client/markdown/extended Stylesmmo.client Stylingmmo.client/mcp subscriptmmo.client/markdown/extended superscriptmmo.client/markdown/extended tablesmmo.client/markdown/extended Tablesmmo.pdo task-listsmmo.client/markdown/extended Testingmmo.core Trainingmmo.rpg Troubleshootingmmo.pdo unordered-listsmmo.client/markdown/basic Views-And-Datammo.client/mcp Workflowmmo.client XP curvesmmo.rpg XP systemmmo.rpg
Nothing in the index matches these filters.