diff --git a/.luaurc b/.luaurc index 90ad478..ab1d721 100644 --- a/.luaurc +++ b/.luaurc @@ -1,13 +1,14 @@ { "languageMode": "strict", "aliases": { - "std": "~/.lute/typedefs/1.0.0/std", + "utils": "./src/utils", "adpt": "./src/adapter/", - "core": "./src/core", + "nova-types": "./src/types", + "std": "~/.lute/typedefs/1.0.0/std", "lune": "~/.lune/.typedefs/0.10.4/", "test-runner": "./tests/runner", + "core": "./src/core", "c": "/home/wiz/projects/nova-projects/nova_core/tests/web/", - "utils": "./src/utils", "lint": "~/.lute/typedefs/1.0.0/lint", "lute": "~/.lute/typedefs/1.0.0/lute" } diff --git a/pesde.lock b/pesde.lock index 010b76c..ff8cfec 100644 --- a/pesde.lock +++ b/pesde.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by pesde. # It is not intended for manual editing. format = 2 -name = "nova_guild/nova_core" -version = "0.5.7" +name = "novalab/nova_core" +version = "0.6.0" target = "luau" diff --git a/pesde.toml b/pesde.toml index dcff63a..dd1a13e 100644 --- a/pesde.toml +++ b/pesde.toml @@ -1,4 +1,4 @@ -name = "hypernova_lab/nova_core" +name = "novalab/nova_core" version = "0.6.0" description = "A filesystem-based web framework for Luau runtimes, with out-of-the-box support for Lute, Lune and Zune." authors = ["Hypernova Lab (https://github.com/hypernova-lab)"] diff --git a/src/core/Attribute/Guard.luau b/src/core/Attribute/Guard.luau index 067d6b6..3f922e7 100644 --- a/src/core/Attribute/Guard.luau +++ b/src/core/Attribute/Guard.luau @@ -1,5 +1,5 @@ local registry = require("./RegistryGenerator").registry -local Response = require("@utils/Response") +local Response = require("../../utils/Response") local Types = require("../../types") local function Guard(args: { string }) diff --git a/src/core/Attribute/RegistryGenerator.luau b/src/core/Attribute/RegistryGenerator.luau index 8938982..4874319 100644 --- a/src/core/Attribute/RegistryGenerator.luau +++ b/src/core/Attribute/RegistryGenerator.luau @@ -1,5 +1,5 @@ -local fs = require("@adpt/fs") -local process = require("@adpt/process") +local fs = require("../../adapter/fs") +local process = require("../../adapter/process") local cwd = process.cwd local registry: { [string]: { [string]: (req: any, ...any) -> any } } = {} diff --git a/src/core/Attribute/Validator.luau b/src/core/Attribute/Validator.luau index 3c88317..2f01888 100644 --- a/src/core/Attribute/Validator.luau +++ b/src/core/Attribute/Validator.luau @@ -1,5 +1,5 @@ local registry = require("./RegistryGenerator").registry -local Response = require("@utils/Response") +local Response = require("../../utils/Response") local Types = require("../../types") local function validateBody(schema: { [string]: Types.BodyField }, data: { [string]: any }): { string } diff --git a/src/core/BodyParser.luau b/src/core/BodyParser.luau index f99d80b..8c3aea9 100644 --- a/src/core/BodyParser.luau +++ b/src/core/BodyParser.luau @@ -1,4 +1,4 @@ -local serde = require("@adpt/serde") +local serde = require("../adapter/serde") type BodyParsers = { [string]: (raw: string) -> string | { any } } diff --git a/src/core/Routing/Generator.luau b/src/core/Routing/Generator.luau index d90a8cf..50176c9 100644 --- a/src/core/Routing/Generator.luau +++ b/src/core/Routing/Generator.luau @@ -1,11 +1,11 @@ -local fs = require("@adpt/fs") -local process = require("@adpt/process") +local fs = require("../../adapter/fs") +local process = require("../../adapter/process") local registerRoute = require("./RegisterRoute") local AttributeResolver = require("../Attribute/Resolver") local Attributes = require("../Attribute") local Chain = require("../../utils/Chain") local RouteHelper = require("./Helpers") -local RouteLogger = require("@utils/Logger") +local RouteLogger = require("../../utils/Logger") local METHOD_NAMES = RouteHelper.METHOD_MAP local readDir = fs.readDir diff --git a/src/index.luau b/src/index.luau index fddc5ac..ea72770 100644 --- a/src/index.luau +++ b/src/index.luau @@ -1,21 +1,31 @@ -local net = require("@adpt/net") -local fs = require("@adpt/fs") -local serde = require("@adpt/serde") -local process = require("@adpt/process") +local net = require("./adapter/net") +local fs = require("./adapter/fs") +local serde = require("./adapter/serde") +local process = require("./adapter/process") local Types = require("./types") -local routeDispatcher = require("@core/Routing/Dispatcher") -local generateRoute = require("@core/Routing/Generator") -local loadEnv = require("@utils/LoadEnv") -local MainDir = require("@utils/MainDir") -local generateAlias = require("@utils/GenerateAlias") -local attrRegistryGenerator = require("@core/Attribute/RegistryGenerator") -local RouteLogger = require("@utils/Logger") +local routeDispatcher = require("./core/Routing/Dispatcher") +local generateRoute = require("./core/Routing/Generator") +local loadEnv = require("./utils/LoadEnv") +local MainDir = require("./utils/MainDir") +local generateAlias = require("./utils/GenerateAlias") +local attrRegistryGenerator = require("./core/Attribute/RegistryGenerator") +local RouteLogger = require("./utils/Logger") +local Chain = require("./utils/Chain") export type Next = Types.Next export type Nova = Types.Nova +export type Middleware = Types.Middleware +export type Handler = Types.Handler export type Request = Types.Request export type RequestWith = Types.RequestWith export type ResponseOptions = Types.ResponseOptions +export type ResponsePayload = Types.ResponsePayload +export type Response = Types.Response + +-- Validator Schema +export type BodyField = Types.BodyField +export type StringField = Types.StringField +export type ValidatorSchema = Types.ValidatorSchema local serve = net.serve local isFile = fs.isFile @@ -26,10 +36,6 @@ local cwd = process.cwd local Nova = {} Nova.__index = Nova -Nova.chain = require("@utils/Chain") -Nova.response = require("@utils/Response") -Nova.exception = require("@utils/Exception") - local function statusLog(status: number, req) local statusColor = "\27[31m" if status >= 200 and status < 300 then @@ -106,7 +112,7 @@ function Nova:listen(handler: () -> ()) table.insert(allMiddlewares :: { Types.Middleware }, 1, devMiddleware :: Types.Middleware) end - local rootPipeline = Nova.chain(allMiddlewares :: { Types.Middleware }, routeDispatcher) + local rootPipeline = Chain(allMiddlewares :: { Types.Middleware }, routeDispatcher) serve(self.port, { address = "0.0.0.0", diff --git a/src/utils/GenerateAlias.luau b/src/utils/GenerateAlias.luau index 827f737..644d2ab 100644 --- a/src/utils/GenerateAlias.luau +++ b/src/utils/GenerateAlias.luau @@ -1,6 +1,6 @@ -local serde = require("@adpt/serde") -local fs = require("@adpt/fs") -local process = require("@adpt/process") +local serde = require("../adapter/serde") +local fs = require("../adapter/fs") +local process = require("../adapter/process") local function generateAlias() local luauarcPath = process.cwd .. "/.luaurc" diff --git a/src/utils/LoadEnv.luau b/src/utils/LoadEnv.luau index 448efae..12b8b94 100644 --- a/src/utils/LoadEnv.luau +++ b/src/utils/LoadEnv.luau @@ -1,5 +1,5 @@ -local process = require("@adpt/process") -local fs = require("@adpt/fs") +local process = require("../adapter/process") +local fs = require("../adapter/fs") local function loadEnv() local envVars: { [string]: string } = {} diff --git a/src/utils/Response.luau b/src/utils/Response.luau index 581ecae..3205646 100644 --- a/src/utils/Response.luau +++ b/src/utils/Response.luau @@ -1,5 +1,5 @@ local Types = require("../types") -local serde = require("@adpt/serde") +local serde = require("../adapter/serde") local Response = {} :: Types.Response diff --git a/tests/unit/router.test.luau b/tests/unit/router.test.luau index c75ada5..205a638 100644 --- a/tests/unit/router.test.luau +++ b/tests/unit/router.test.luau @@ -1,4 +1,4 @@ -local runner = require("../../tests/runner") +local runner = require("@test-runner") local describe, test, expect = runner.describe, runner.test, runner.expect local createRouter = require("@core/Routing/CreateTestRouter") diff --git a/tests/web/.luaurc b/tests/web/.luaurc index 3c36cbe..25b0215 100644 --- a/tests/web/.luaurc +++ b/tests/web/.luaurc @@ -1,10 +1,10 @@ { "aliases": { "std": "~/.lute/typedefs/1.0.0/std", - "c": "/home/wiz/projects/nova-projects/nova_core/tests/web/", + "lune": "~/.lune/.typedefs/0.10.4/", "lint": "~/.lute/typedefs/1.0.0/lint", "nova": "../../src/index", - "lune": "~/.lune/.typedefs/0.10.4/", + "c": "/home/wiz/projects/nova-projects/nova_core/tests/web/", "pkg": "./lune_packages/", "lute": "~/.lute/typedefs/1.0.0/lute" } diff --git a/tests/web/src/app/[...ids]/route.luau b/tests/web/src/app/[...ids]/route.luau index 7520246..307a60c 100644 --- a/tests/web/src/app/[...ids]/route.luau +++ b/tests/web/src/app/[...ids]/route.luau @@ -1,10 +1,10 @@ -local Nova = require("@nova") - +local Types = require("@nova-types") +local Response = require("@utils/Response") local Home = {} -function Home.Get(req: Nova.RequestWith<{ ids: { string } }>) +function Home.Get(req: Types.RequestWith<{ ids: { string } }>) local userIds = req.params.ids - return Nova.response.json({ userIds = userIds, msg = "Found user IDs" }) + return Response.json({ userIds = userIds, msg = "Found user IDs" }) end return Home diff --git a/tests/web/src/app/[id]/route.luau b/tests/web/src/app/[id]/route.luau index de5cb54..e1f8667 100644 --- a/tests/web/src/app/[id]/route.luau +++ b/tests/web/src/app/[id]/route.luau @@ -1,10 +1,11 @@ -local Nova = require("@nova") +local Types = require("@nova-types") +local Response = require("@utils/Response") local Home = {} -function Home.Get(banana: Nova.RequestWith<{ id: string }>) +function Home.Get(banana: Types.RequestWith<{ id: string }>) local userId = banana.params.id - return Nova.response.json({ userId = userId, msg = "Found a user ID" }) + return Response.json({ userId = userId, msg = "Found a user ID" }) end return Home diff --git a/tests/web/src/app/route.luau b/tests/web/src/app/route.luau index c6bd8a8..2a67185 100644 --- a/tests/web/src/app/route.luau +++ b/tests/web/src/app/route.luau @@ -1,16 +1,17 @@ -local Nova = require("@nova") +local Types = require("@nova-types") +local Response = require("@utils/Response") local Home = {} --@Guard(Auth, Admin) --@Interceptor(Transform) function Home.Get() - return Nova.response.send("Hello, World") + return Response.json("Hello, World") end --@Validator(createUser) -function Home.Post(req: Nova.Request) - return Nova.response.json({ msg = "Got the Response", data = req.body }) +function Home.Post(req: Types.Request) + return Response.json({ msg = "Got the Response", data = req.body }) end return Home diff --git a/tests/web/src/app/users/route.luau b/tests/web/src/app/users/route.luau index ec98732..6152ee9 100644 --- a/tests/web/src/app/users/route.luau +++ b/tests/web/src/app/users/route.luau @@ -1,10 +1,10 @@ -local Nova = require("@nova") +local Response = require("@utils/Response") local UserService = require("./users.service") local Users = {} function Users.Get() - return Nova.response.json(UserService.getUser(123)) + return Response.json(UserService.getUser(123)) end return Users diff --git a/tests/web/src/guards/Admin.luau b/tests/web/src/guards/Admin.luau index c1f0f99..0be81be 100644 --- a/tests/web/src/guards/Admin.luau +++ b/tests/web/src/guards/Admin.luau @@ -1,6 +1,6 @@ -local Nova = require("@nova") +local Types = require("@nova-types") -local function Auth(_req: Nova.Request) +local function Auth(_req: Types.Request) print("Admin Check") return true end diff --git a/tests/web/src/guards/Auth.luau b/tests/web/src/guards/Auth.luau index a57fc23..7e26790 100644 --- a/tests/web/src/guards/Auth.luau +++ b/tests/web/src/guards/Auth.luau @@ -1,6 +1,6 @@ -local Nova = require("@nova") +local Types = require("@nova-types") -local function Auth(_req: Nova.Request) +local function Auth(_req: Types.Request) print("Auth Check") return true end diff --git a/tests/web/src/interceptors/Transform.luau b/tests/web/src/interceptors/Transform.luau index 7397bb8..ca789c0 100644 --- a/tests/web/src/interceptors/Transform.luau +++ b/tests/web/src/interceptors/Transform.luau @@ -1,8 +1,7 @@ -local Nova = require("@nova") +local Types = require("@nova-types") -local function Transform(_req: Nova.Request, next: Nova.Next) +local function Transform(_req: Types.Request, next: Types.Next) next() - return Nova.response.send("Hello, Interceptor") end return Transform diff --git a/tests/web/src/validators/createUser.luau b/tests/web/src/validators/createUser.luau index 3972e50..36a7c87 100644 --- a/tests/web/src/validators/createUser.luau +++ b/tests/web/src/validators/createUser.luau @@ -1,6 +1,6 @@ -local Nova = require("../../../../src/types") +local Types = require("@nova-types") -local schema: Nova.ValidatorSchema = { +local schema: Types.ValidatorSchema = { body = { username = { type = "string", required = true, min = 3, max = 20 }, age = { type = "number", required = true, min = 18 },