@actuallyjamez/elysian 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -0
- package/dist/cli/commands/build.d.ts +10 -0
- package/dist/cli/commands/build.js +199 -0
- package/dist/cli/commands/dev.d.ts +10 -0
- package/dist/cli/commands/dev.js +120 -0
- package/dist/cli/commands/generate-iac.d.ts +4 -0
- package/dist/cli/commands/generate-iac.js +83 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.js +295 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.js +24 -0
- package/dist/core/bundler.d.ts +18 -0
- package/dist/core/bundler.js +62 -0
- package/dist/core/config.d.ts +72 -0
- package/dist/core/config.js +84 -0
- package/dist/core/handler-wrapper.d.ts +30 -0
- package/dist/core/handler-wrapper.js +143 -0
- package/dist/core/manifest.d.ts +43 -0
- package/dist/core/manifest.js +127 -0
- package/dist/core/naming.d.ts +12 -0
- package/dist/core/naming.js +20 -0
- package/dist/core/openapi.d.ts +23 -0
- package/dist/core/openapi.js +85 -0
- package/dist/core/packager.d.ts +17 -0
- package/dist/core/packager.js +54 -0
- package/dist/core/terraform.d.ts +13 -0
- package/dist/core/terraform.js +44 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.js +30 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +58 -0
- package/dist/runtime/adapter.d.ts +32 -0
- package/dist/runtime/adapter.js +29 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.js +7 -0
- package/dist/runtime/types.d.ts +5 -0
- package/dist/runtime/types.js +4 -0
- package/package.json +71 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* elysian - Automatic Lambda bundler for Elysia with API Gateway integration
|
|
3
|
+
*
|
|
4
|
+
* Main library exports for use in configuration and lambda files.
|
|
5
|
+
*/
|
|
6
|
+
import Elysia from "elysia";
|
|
7
|
+
import { openapi } from "@elysiajs/openapi";
|
|
8
|
+
// Re-export config utilities
|
|
9
|
+
export { defineConfig } from "./core/config";
|
|
10
|
+
// Re-export type utilities from Elysia
|
|
11
|
+
export { t } from "elysia";
|
|
12
|
+
// Re-export runtime for convenience
|
|
13
|
+
export { createHandler } from "./runtime/adapter";
|
|
14
|
+
/**
|
|
15
|
+
* Default OpenAPI configuration for lambdas
|
|
16
|
+
* Can be overridden via config file
|
|
17
|
+
*/
|
|
18
|
+
let openApiConfig = {
|
|
19
|
+
title: "API",
|
|
20
|
+
version: "1.0.0",
|
|
21
|
+
description: "",
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Set the OpenAPI configuration (called by build process)
|
|
25
|
+
*/
|
|
26
|
+
export function setOpenApiConfig(config) {
|
|
27
|
+
openApiConfig = { ...openApiConfig, ...config };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a new Elysia instance pre-configured for Lambda use
|
|
31
|
+
*
|
|
32
|
+
* This is the main entry point for defining Lambda routes.
|
|
33
|
+
* The returned Elysia instance has OpenAPI support built-in.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { createLambda, t } from "@actuallyjamez/elysian";
|
|
38
|
+
*
|
|
39
|
+
* export default createLambda()
|
|
40
|
+
* .get("/hello", () => "Hello World", {
|
|
41
|
+
* response: t.String(),
|
|
42
|
+
* })
|
|
43
|
+
* .get("/users/:id", ({ params }) => getUser(params.id), {
|
|
44
|
+
* params: t.Object({ id: t.String() }),
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function createLambda() {
|
|
49
|
+
return new Elysia().use(openapi({
|
|
50
|
+
documentation: {
|
|
51
|
+
info: {
|
|
52
|
+
title: openApiConfig.title,
|
|
53
|
+
version: openApiConfig.version,
|
|
54
|
+
description: openApiConfig.description,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime adapter for AWS Lambda
|
|
3
|
+
*
|
|
4
|
+
* This module provides the Lambda handler creation function
|
|
5
|
+
* that bridges Elysia apps to AWS Lambda via Hono.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyElysia } from "elysia";
|
|
8
|
+
import { type LambdaEvent, type LambdaContext } from "hono/aws-lambda";
|
|
9
|
+
/**
|
|
10
|
+
* Lambda handler type compatible with API Gateway v2
|
|
11
|
+
*/
|
|
12
|
+
export type LambdaHandler = (event: LambdaEvent, context?: LambdaContext) => Promise<{
|
|
13
|
+
statusCode: number;
|
|
14
|
+
body: string;
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
isBase64Encoded: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Create an AWS Lambda handler from an Elysia app
|
|
20
|
+
*
|
|
21
|
+
* @param app - An Elysia application instance
|
|
22
|
+
* @returns AWS Lambda handler function
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { createLambda, createHandler } from "elysia-apigw/runtime";
|
|
27
|
+
*
|
|
28
|
+
* const app = createLambda().get("/hello", () => "Hello World");
|
|
29
|
+
* export const handler = createHandler(app);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function createHandler(app: AnyElysia): LambdaHandler;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime adapter for AWS Lambda
|
|
3
|
+
*
|
|
4
|
+
* This module provides the Lambda handler creation function
|
|
5
|
+
* that bridges Elysia apps to AWS Lambda via Hono.
|
|
6
|
+
*/
|
|
7
|
+
import { Hono } from "hono/tiny";
|
|
8
|
+
import { handle } from "hono/aws-lambda";
|
|
9
|
+
/**
|
|
10
|
+
* Create an AWS Lambda handler from an Elysia app
|
|
11
|
+
*
|
|
12
|
+
* @param app - An Elysia application instance
|
|
13
|
+
* @returns AWS Lambda handler function
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { createLambda, createHandler } from "elysia-apigw/runtime";
|
|
18
|
+
*
|
|
19
|
+
* const app = createLambda().get("/hello", () => "Hello World");
|
|
20
|
+
* export const handler = createHandler(app);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function createHandler(app) {
|
|
24
|
+
if (!app || typeof app.fetch !== "function") {
|
|
25
|
+
throw new Error("createHandler requires an Elysia app instance with a .fetch method");
|
|
26
|
+
}
|
|
27
|
+
const hono = new Hono().mount("/", app.fetch);
|
|
28
|
+
return handle(hono);
|
|
29
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@actuallyjamez/elysian",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Automatic Lambda bundler for Elysia with API Gateway and Terraform integration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"elysian": "./dist/cli/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./runtime": {
|
|
17
|
+
"types": "./dist/runtime/index.d.ts",
|
|
18
|
+
"import": "./dist/runtime/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"templates"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/actuallyjamez/elysian.git"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "rm -rf dist && tsc",
|
|
34
|
+
"prepublishOnly": "bun run build",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"test": "bun test",
|
|
37
|
+
"changeset": "changeset",
|
|
38
|
+
"version": "changeset version",
|
|
39
|
+
"release": "npm publish"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"elysia",
|
|
43
|
+
"lambda",
|
|
44
|
+
"aws",
|
|
45
|
+
"api-gateway",
|
|
46
|
+
"serverless",
|
|
47
|
+
"terraform",
|
|
48
|
+
"bundler",
|
|
49
|
+
"elysian"
|
|
50
|
+
],
|
|
51
|
+
"author": "actuallyjamez",
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"elysia": ">=1.0.0"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@elysiajs/openapi": "^1.4.14",
|
|
58
|
+
"citty": "^0.1.6",
|
|
59
|
+
"consola": "^3.4.2",
|
|
60
|
+
"hono": "^4.11.7",
|
|
61
|
+
"picocolors": "^1.1.1"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@changesets/changelog-github": "^0.5.2",
|
|
65
|
+
"@changesets/cli": "^2.29.8",
|
|
66
|
+
"@types/aws-lambda": "^8.10.160",
|
|
67
|
+
"@types/bun": "^1.3.7",
|
|
68
|
+
"elysia": "^1.4.22",
|
|
69
|
+
"typescript": "^5.8.3"
|
|
70
|
+
}
|
|
71
|
+
}
|