Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .luaurc
Original file line number Diff line number Diff line change
@@ -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"
}
Expand Down
4 changes: 2 additions & 2 deletions pesde.lock
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion pesde.toml
Original file line number Diff line number Diff line change
@@ -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)"]
Expand Down
2 changes: 1 addition & 1 deletion src/core/Attribute/Guard.luau
Original file line number Diff line number Diff line change
@@ -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 })
Expand Down
4 changes: 2 additions & 2 deletions src/core/Attribute/RegistryGenerator.luau
Original file line number Diff line number Diff line change
@@ -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 } } = {}
Expand Down
2 changes: 1 addition & 1 deletion src/core/Attribute/Validator.luau
Original file line number Diff line number Diff line change
@@ -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 }
Expand Down
2 changes: 1 addition & 1 deletion src/core/BodyParser.luau
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
local serde = require("@adpt/serde")
local serde = require("../adapter/serde")

type BodyParsers = { [string]: (raw: string) -> string | { any } }

Expand Down
6 changes: 3 additions & 3 deletions src/core/Routing/Generator.luau
Original file line number Diff line number Diff line change
@@ -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
Expand Down
38 changes: 22 additions & 16 deletions src/index.luau
Original file line number Diff line number Diff line change
@@ -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<T> = Types.RequestWith<T>
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
Expand All @@ -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
Expand Down Expand Up @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions src/utils/GenerateAlias.luau
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
4 changes: 2 additions & 2 deletions src/utils/LoadEnv.luau
Original file line number Diff line number Diff line change
@@ -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 } = {}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/Response.luau
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local Types = require("../types")
local serde = require("@adpt/serde")
local serde = require("../adapter/serde")

local Response = {} :: Types.Response

Expand Down
2 changes: 1 addition & 1 deletion tests/unit/router.test.luau
Original file line number Diff line number Diff line change
@@ -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")
Expand Down
4 changes: 2 additions & 2 deletions tests/web/.luaurc
Original file line number Diff line number Diff line change
@@ -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"
}
Expand Down
8 changes: 4 additions & 4 deletions tests/web/src/app/[...ids]/route.luau
Original file line number Diff line number Diff line change
@@ -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
7 changes: 4 additions & 3 deletions tests/web/src/app/[id]/route.luau
Original file line number Diff line number Diff line change
@@ -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
9 changes: 5 additions & 4 deletions tests/web/src/app/route.luau
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions tests/web/src/app/users/route.luau
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions tests/web/src/guards/Admin.luau
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/web/src/guards/Auth.luau
Original file line number Diff line number Diff line change
@@ -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
Expand Down
5 changes: 2 additions & 3 deletions tests/web/src/interceptors/Transform.luau
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions tests/web/src/validators/createUser.luau
Original file line number Diff line number Diff line change
@@ -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 },
Expand Down
Loading