transit-kit 0.1.0 → 0.2.0

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.
Files changed (41) hide show
  1. package/dist/cli/cli.js +3 -2
  2. package/dist/cli/generateOpenApi.d.ts +1 -1
  3. package/dist/cli/generateOpenApi.js +35 -57
  4. package/dist/server/handlers/api/createApiHandler.d.ts +1 -1
  5. package/dist/server/handlers/api/createApiHandler.js +1 -1
  6. package/dist/server/index.d.ts +1 -1
  7. package/dist/server/server.d.ts +12 -11
  8. package/dist/server/server.js +23 -22
  9. package/package.json +24 -3
  10. package/.github/workflows/ci.yml +0 -73
  11. package/.github/workflows/release.yml +0 -37
  12. package/eslint-configs/eslint.base.config.js +0 -30
  13. package/eslint-configs/eslint.node.config.js +0 -23
  14. package/eslint-configs/eslint.test.config.js +0 -15
  15. package/eslint.config.ts +0 -6
  16. package/prettier.config.js +0 -14
  17. package/src/cli/cli.ts +0 -37
  18. package/src/cli/generateOpenApi.ts +0 -217
  19. package/src/server/constants/HttpMethods.ts +0 -11
  20. package/src/server/constants/HttpStatusCodes.ts +0 -46
  21. package/src/server/handlers/api/EndpointDefinition.ts +0 -24
  22. package/src/server/handlers/api/EndpointHandler.ts +0 -24
  23. package/src/server/handlers/api/HandlerFormDefinition.spec.ts +0 -120
  24. package/src/server/handlers/api/HandlerFromDefinition.ts +0 -33
  25. package/src/server/handlers/api/PathParameters.spec.ts +0 -28
  26. package/src/server/handlers/api/PathParameters.ts +0 -10
  27. package/src/server/handlers/api/createApiHandler.ts +0 -44
  28. package/src/server/handlers/api/responses/emptyResponse.ts +0 -12
  29. package/src/server/handlers/api/responses/index.ts +0 -15
  30. package/src/server/handlers/api/responses/jsonResponse.ts +0 -44
  31. package/src/server/index.ts +0 -4
  32. package/src/server/middleware/logging.ts +0 -41
  33. package/src/server/middleware/validation.ts +0 -35
  34. package/src/server/server.ts +0 -90
  35. package/src/server/utils/funcs.ts +0 -3
  36. package/src/server/utils/logging.ts +0 -10
  37. package/src/server/utils/typeGuards.ts +0 -9
  38. package/src/server/utils/types.ts +0 -3
  39. package/transitKit.code-workspace +0 -36
  40. package/tsconfig.json +0 -15
  41. package/vitest.config.ts +0 -22
@@ -1,35 +0,0 @@
1
- import { NextFunction, Request, Response } from "express";
2
- import { ZodType } from "zod";
3
- import { HttpStatusCodes } from "../constants/HttpStatusCodes";
4
-
5
- export function buildBodyValidatorMiddleware<Schema extends ZodType>(
6
- schema: Schema,
7
- ) {
8
- return (request: Request, response: Response, next: NextFunction) => {
9
- const validationResult = schema.safeParse(request.body);
10
- if (!validationResult.success) {
11
- response.status(HttpStatusCodes.BadRequest_400).json({
12
- message: `Body invalid`,
13
- error: validationResult.error,
14
- });
15
- return;
16
- }
17
- next();
18
- };
19
- }
20
-
21
- export function buildQueryValidatorMiddleware<Schema extends ZodType>(
22
- schema: Schema,
23
- ) {
24
- return (request: Request, response: Response, next: NextFunction) => {
25
- const validationResult = schema.safeParse(request.query);
26
- if (!validationResult.success) {
27
- response.status(HttpStatusCodes.BadRequest_400).json({
28
- message: `Query parameters invalid`,
29
- error: validationResult.error,
30
- });
31
- return;
32
- }
33
- next();
34
- };
35
- }
@@ -1,90 +0,0 @@
1
- import cookieParser from "cookie-parser";
2
- import express, { Application } from "express";
3
- import z from "zod";
4
- import { HttpMethod } from "./constants/HttpMethods";
5
- import { buildApiEndpointHandler } from "./handlers/api/createApiHandler";
6
- import { ApiEndpointDefinition } from "./handlers/api/EndpointDefinition";
7
- import { ApiEndpointHandler } from "./handlers/api/EndpointHandler";
8
- import { buildRequestLogger, buildResponseLogger } from "./middleware/logging";
9
- import {
10
- buildBodyValidatorMiddleware,
11
- buildQueryValidatorMiddleware,
12
- } from "./middleware/validation";
13
- import { Logger, NoOpLogger } from "./utils/logging";
14
- import { hasNoValue, hasValue } from "./utils/typeGuards";
15
-
16
- export interface ServerOptions {
17
- inDevMode?: boolean;
18
- port?: number;
19
- logger?: Logger | boolean;
20
- }
21
- export interface Server {
22
- _expressApp: Application;
23
- _logger: Logger | boolean;
24
- start: () => void;
25
- registerApiEndpoint: (endpoint: {
26
- endpointHandler: ApiEndpointHandler;
27
- endpointDefinition: ApiEndpointDefinition<
28
- string,
29
- HttpMethod,
30
- z.ZodType,
31
- z.ZodType,
32
- {}
33
- >;
34
- }) => void;
35
- }
36
-
37
- export function createServer(options: ServerOptions): Server {
38
- const { port = 3000, inDevMode = false } = options;
39
-
40
- const logger: Logger =
41
- options.logger === true
42
- ? console
43
- : options.logger === false || hasNoValue(options.logger)
44
- ? NoOpLogger
45
- : options.logger;
46
-
47
- const app = express();
48
-
49
- app.use(express.json());
50
- app.use(express.urlencoded({ extended: true }));
51
- app.use(cookieParser());
52
-
53
- app.use(buildRequestLogger(logger, inDevMode));
54
- app.use(buildResponseLogger(logger, inDevMode));
55
-
56
- return {
57
- _expressApp: app,
58
- _logger: logger,
59
- start: () => {
60
- app.listen(port);
61
- },
62
- registerApiEndpoint: ({ endpointDefinition, endpointHandler }) => {
63
- registerApiEndpoint(app, endpointDefinition, endpointHandler);
64
- },
65
- };
66
- }
67
-
68
- function registerApiEndpoint(
69
- expressApp: Application,
70
- endpointDefinition: ApiEndpointDefinition<
71
- string,
72
- HttpMethod,
73
- z.ZodType,
74
- z.ZodType,
75
- {}
76
- >,
77
- endpointHandler: ApiEndpointHandler,
78
- ) {
79
- const handlerStack = [
80
- hasValue(endpointDefinition.querySchema)
81
- ? buildQueryValidatorMiddleware(endpointDefinition.querySchema)
82
- : null,
83
- hasValue(endpointDefinition.requestBodySchema)
84
- ? buildBodyValidatorMiddleware(endpointDefinition.requestBodySchema)
85
- : null,
86
- buildApiEndpointHandler(endpointHandler),
87
- ].filter(hasValue);
88
-
89
- expressApp[endpointDefinition.method](endpointDefinition.path, handlerStack);
90
- }
@@ -1,3 +0,0 @@
1
- export function isEmpty<T>(array: Array<T>): boolean {
2
- return array.length === 0;
3
- }
@@ -1,10 +0,0 @@
1
- export type Logger = Pick<Console, "log" | "info" | "error" | "warn">;
2
-
3
- export const NoOpLogger: Logger = {
4
- log: () => {},
5
- info: () => {},
6
- error: () => {},
7
- warn: () => {},
8
- };
9
-
10
- export const DefaultLogger: Logger = console;
@@ -1,9 +0,0 @@
1
- export function hasValue<T>(value: T | undefined | null): value is T {
2
- return value !== undefined && value !== null;
3
- }
4
-
5
- export function hasNoValue<T>(
6
- value: T | undefined | null,
7
- ): value is undefined | null {
8
- return value === undefined || value === null;
9
- }
@@ -1,3 +0,0 @@
1
- export type Prettify<T> = {
2
- [K in keyof T]: T[K];
3
- } & {};
@@ -1,36 +0,0 @@
1
- {
2
- "folders": [
3
- {
4
- "path": "."
5
- },
6
- ],
7
- "settings": {
8
- "editor.tokenColorCustomizations": {
9
- "[*Dark*]": {
10
- "textMateRules": [
11
- {
12
- "scope": "keyword.control",
13
- "settings": {
14
- "foreground": "#C586C0"
15
- }
16
- }
17
- ]
18
- }
19
- },
20
- "editor.codeActionsOnSave": {
21
- "source.fixAll.eslint": "explicit",
22
- "source.organizeImports": "explicit"
23
- },
24
- "eslint.validate": [
25
- "javascript",
26
- "typescript",
27
- "vue",
28
- "vue-html"
29
- ],
30
- "cSpell.words": [
31
- "neverthrow",
32
- "VITE"
33
- ],
34
- "typescript.tsdk": "node_modules/typescript/lib",
35
- }
36
- }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "strict": true,
4
- "module": "ESNext",
5
- "target": "ESNext",
6
- "moduleResolution": "bundler",
7
- "esModuleInterop": true,
8
- "allowSyntheticDefaultImports": true,
9
- "declaration": true,
10
- "outDir": "./dist"
11
- },
12
- "include": [
13
- "./src/**/*",
14
- ],
15
- }
package/vitest.config.ts DELETED
@@ -1,22 +0,0 @@
1
- import { loadEnv } from "vite";
2
- import tsconfigPaths from "vite-tsconfig-paths";
3
- import { defineConfig } from "vitest/config";
4
-
5
- export default defineConfig({
6
- root: "./src",
7
- test: {
8
- env: loadEnv("", ".", ""),
9
- globals: true,
10
- environment: "node",
11
- coverage: {
12
- provider: "v8",
13
- reporter: ["html-spa", "text"],
14
- include: ["*"],
15
- reportsDirectory: "../coverage",
16
- enabled: true,
17
- cleanOnRerun: true,
18
- },
19
- },
20
- define: {},
21
- plugins: [tsconfigPaths()],
22
- });