{"id":22128876,"url":"https://github.com/shysolocup/aepl","last_synced_at":"2025-10-28T21:09:34.705Z","repository":{"id":194900357,"uuid":"691705134","full_name":"shysolocup/aepl","owner":"shysolocup","description":"A Node.JS multi-layered class creation package with built-in parenting systems that let you get info from classes above as well as better function and property makers for easier to read and understand development and modding support inspired by Roblox's Studio API.","archived":false,"fork":false,"pushed_at":"2024-09-30T16:38:22.000Z","size":306,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-14T11:31:46.322Z","etag":null,"topics":["aepl","backend","classes","data","framework","game-development","game-framework","javascript","js","js-class","js-framework","lightweight","nodejs","package"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/aepl","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shysolocup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-09-14T18:01:07.000Z","updated_at":"2024-09-30T16:38:26.000Z","dependencies_parsed_at":"2023-11-16T03:23:52.255Z","dependency_job_id":"96650baa-afd8-4fc0-8449-95c83d2dd729","html_url":"https://github.com/shysolocup/aepl","commit_stats":null,"previous_names":["paigeroid/aepl","paigeroid/tapel","paishee/aepl","shysolocup/aepl"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shysolocup%2Faepl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shysolocup%2Faepl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shysolocup%2Faepl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shysolocup%2Faepl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shysolocup","download_url":"https://codeload.github.com/shysolocup/aepl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227606487,"owners_count":17792795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aepl","backend","classes","data","framework","game-development","game-framework","javascript","js","js-class","js-framework","lightweight","nodejs","package"],"created_at":"2024-12-01T17:48:31.530Z","updated_at":"2025-10-28T21:09:29.659Z","avatar_url":"https://github.com/shysolocup.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aepl  🍎\n\u003ca href=\"https://www.npmjs.com/package/aepl\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/aepl?style=flat\u0026color=red\u0026logo=npm\u0026logoColor=white\" alt=\"version\" /\u003e\n\u003ca href=\"https://www.npmjs.com/package/aepl\"\u003e\u003cimg src=\"https://img.shields.io/npm/dt/aepl?style=flat\u0026color=green\u0026logo=docusign\u0026logoColor=white\" alt=\"downloads\" /\u003e\n\u003ca href=\"https://github.com/shysolocup/aepl/wiki\"\u003e\u003cimg src=\"https://img.shields.io/badge/documentation-tapel?color=blue\u0026logo=gitbook\u0026logoColor=white\" alt=\"docs\" /\u003e\u003c/a\u003e\n\u003cimg src=\"https://github.com/shysolocup/aepl/actions/workflows/publish-shit.yml/badge.svg\" alt=\"publish\"\u003e\n\naepl is a Node.JS multi-layered class creation package with built-in parenting systems that let you get info from classes above as well as better function and property makers for easier to read and understand development and modding support inspired by Roblox's Studio API.\n  - Open source\n  - Lightweight\n  - Easy to use\n  - Compact\n\n\u003cbr\u003e\u003cbr\u003e\n\n```console\nnpm i aepl\n```\n```console\nnpm i shysolocup/aepl\n```\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n### Uses\naepl makes classes layered meaning that you can have multiple classes inside of eachother and access upper classes using parents\n```js\nconst Class = require('aepl');\n\n\n// main class\nnew Class(\"Main\", class {\n\tconstructor() {\n\t\tthis.data = [1, 2, 3];\n\t}\n});\n\n\n// creates a new subclass named layer\nMain.new(\"subclass\", \"Layer\", class {\n\tconstructor() {\n\t\tthis.data = [4, 5, 6];\n\t}\n});\n\n\n// creates a new instance of the main class\nlet main = new Main();\n\n\nconsole.log(main.data); // [1, 2, 3]\n\n\n// creates a new instance of the layer class\nlet layer = new main.Layer();\n\n\nconsole.log(layer.data); // [4, 5, 6]\nconsole.log(layer.parent.data); // [1, 2, 3]\n```\n\u003cbr\u003e\n\nit also adds methods for creating new functions and properties\n\n\u003cbr\u003e\n\n```js\nconst Class = require('aepl');\n\n\n// main class\nnew Class(\"Main\", class {\n\tconstructor() {\n\t\tthis.data = [1, 2, 3];\n\t}\n});\n\n\n// creates a new function that reverses the data\nMain.new(\"func\", \"reverse\", function() {\n\treturn this.data.reverse();\n});\n\n\n// creates a new subclass named layer\nMain.new(\"subclass\", \"Layer\", class {\n\tconstructor() {\n\t\tthis.data = [4, 5, 6];\n\t}\n});\n\n\n// creates a new property for layer named mainData that returns the data of the parent class\nLayer.new(\"prop\", \"mainData\", function() {\n\treturn this.parent.data;\n});\n\n\n// creates a new function for layer that reverses its data\nLayer.new(\"func\", \"reverse\", function() {\n\treturn this.data.reverse();\n});\n\n\n// creates a new instance of the main class\nlet main = new Main();\n\n\nconsole.log(main.data); // [1, 2, 3]\n\n\n// creates a new instance of the layer class\nlet layer = new main.Layer();\n\n\nconsole.log(layer.data); // [4, 5, 6]\nconsole.log(layer.mainData); // [1, 2, 3]\n\n\nconsole.log(main.reverse()); // [3, 2, 1]\nconsole.log(layer.reverse()); // [6, 5, 4]\n```\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n### Advanced Example\n```js\nconst Class = require('aepl');\n\n\n// main class\nnew Class(\"Main\", class {\n\tconstructor() {\n\t\tthis.data = [1, 2, 3];\n\t\tthis.layers = [];\n\t}\n});\n\n\n\n// subclasses\nMain.new(\"subclass\", \"Layer\", class {\n\tconstructor() {\n\t\tthis.extras = [];\n\t\tthis.data = [4, 5, 6];\n\t\tthis.parent.layers.push(this);\n\t}\n});\n\n\nLayer.new(\"subclass\", \"Extra\", class {\n\tconstructor() {\n\t\tthis.data = [7, 8, 9]\n\t\tthis.parent.extras.push(this);\n\t}\n});\n\n\n\n// functions\nMain.new(\"func\", \"reverse\", function() {\n    return this.data.reverse();\n});\n\n\nLayer.new(\"func\", \"reverse\", function() {\n    return this.data.reverse();\n});\n\n\nExtra.new(\"func\", \"reverse\", function() {\n    return this.data.reverse();\n});\n\n\n\n// properties\nLayer.new(\"prop\", \"main\", function() {\n\treturn this.parent;\n});\n\n\nExtra.new(\"prop\", \"layer\", function() {\n\treturn this.parent;\n});\n\n\nExtra.new(\"prop\", \"main\", function() {\n\treturn this.parent.parent;\n});\n\n\n\n// examples\nlet main = new Main();\n\n\nconsole.log(main); // Main { layers: [], data: [1, 2, 3] }\n\n\nlet layer = new main.Layer();\n\n\nconsole.log(layer); // Layer { extras: [], data: [4, 5, 6] }\nconsole.log(layer.main); // Main { layers: [ [Layer] ], data: [1, 2, 3] }\n\n\nlet extra = new layer.Extra();\n\n\nconsole.log(extra); // Extra { data: [7, 8, 9] }\nconsole.log(extra.layer); // Layer { extras: [ [Extra] ], data: [4, 5, 6] }\nconsole.log(extra.main); // Main { layers: [ [Layer] ], data: [1, 2, 3] }\n\n\nconsole.log(main.reverse()); // [3, 2, 1]\nconsole.log(layer.reverse()); // [6, 5, 4]\nconsole.log(extra.reverse()); // [9, 8, 7]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshysolocup%2Faepl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshysolocup%2Faepl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshysolocup%2Faepl/lists"}