spooder 4.6.0 → 4.6.2

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 (3) hide show
  1. package/bun.lock +4 -4
  2. package/package.json +5 -5
  3. package/src/api.ts +7 -2
package/bun.lock CHANGED
@@ -12,13 +12,13 @@
12
12
  },
13
13
  },
14
14
  "packages": {
15
- "@types/bun": ["@types/bun@1.2.12", "", { "dependencies": { "bun-types": "1.2.12" } }, "sha512-lY/GQTXDGsolT/TiH72p1tuyUORuRrdV7VwOTOjDOt8uTBJQOJc5zz3ufwwDl0VBaoxotSk4LdP0hhjLJ6ypIQ=="],
15
+ "@types/bun": ["@types/bun@1.2.16", "", { "dependencies": { "bun-types": "1.2.16" } }, "sha512-1aCZJ/6nSiViw339RsaNhkNoEloLaPzZhxMOYEa7OzRzO41IGg5n/7I43/ZIAW/c+Q6cT12Vf7fOZOoVIzb5BQ=="],
16
16
 
17
- "@types/node": ["@types/node@22.15.12", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw=="],
17
+ "@types/node": ["@types/node@24.0.1", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw=="],
18
18
 
19
19
  "aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="],
20
20
 
21
- "bun-types": ["bun-types@1.2.12", "", { "dependencies": { "@types/node": "*" } }, "sha512-tvWMx5vPqbRXgE8WUZI94iS1xAYs8bkqESR9cxBB1Wi+urvfTrF1uzuDgBHFAdO0+d2lmsbG3HmeKMvUyj6pWA=="],
21
+ "bun-types": ["bun-types@1.2.16", "", { "dependencies": { "@types/node": "*" } }, "sha512-ciXLrHV4PXax9vHvUrkvun9VPVGOVwbbbBF/Ev1cXz12lyEZMoJpIJABOfPcN9gDJRaiKF9MVbSygLg4NXu3/A=="],
22
22
 
23
23
  "denque": ["denque@2.1.0", "", {}, "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="],
24
24
 
@@ -44,6 +44,6 @@
44
44
 
45
45
  "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="],
46
46
 
47
- "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
47
+ "undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="],
48
48
  }
49
49
  }
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "spooder",
3
3
  "type": "module",
4
- "version": "4.6.0",
4
+ "version": "4.6.2",
5
+ "module": "./src/api.ts",
6
+ "bin": {
7
+ "spooder": "./src/cli.ts"
8
+ },
5
9
  "exports": {
6
10
  ".": {
7
11
  "bun": "./src/api.ts",
8
12
  "import": "./src/api.ts"
9
13
  }
10
14
  },
11
- "module": "./src/api.ts",
12
15
  "devDependencies": {
13
16
  "@types/bun": "^1.1.8"
14
17
  },
15
18
  "optionalDependencies": {
16
19
  "mysql2": "^3.11.0"
17
- },
18
- "bin": {
19
- "spooder": "./src/cli.ts"
20
20
  }
21
21
  }
package/src/api.ts CHANGED
@@ -570,7 +570,7 @@ type Resolvable<T> = T | Promise<T>;
570
570
  type PromiseType<T extends Promise<any>> = T extends Promise<infer U> ? U : never;
571
571
 
572
572
  // The following types cover JSON serializable objects/classes.
573
- export type JsonPrimitive = string | number | boolean | null;
573
+ export type JsonPrimitive = string | number | boolean | null | undefined;
574
574
  export type JsonArray = JsonSerializable[];
575
575
 
576
576
  export interface JsonObject {
@@ -725,7 +725,10 @@ export function serve(port: number, hostname?: string) {
725
725
  let status_code = 200;
726
726
 
727
727
  try {
728
- const route_array = url.pathname.split('/').filter(e => !(e === '..' || e === '.'));
728
+ let pathname = url.pathname;
729
+ if (pathname.length > 1 && pathname.endsWith('/'))
730
+ pathname = pathname.slice(0, -1);
731
+ const route_array = pathname.split('/').filter(e => !(e === '..' || e === '.'));
729
732
  let handler: RequestHandler | undefined;
730
733
  let methods: HTTP_METHODS | undefined;
731
734
 
@@ -873,6 +876,8 @@ export function serve(port: number, hostname?: string) {
873
876
  return {
874
877
  /** Register a handler for a specific route. */
875
878
  route: (path: string, handler: RequestHandler, method: HTTP_METHODS = 'GET'): void => {
879
+ if (path.length > 1 && path.endsWith('/'))
880
+ path = path.slice(0, -1);
876
881
  routes.push([path.split('/'), handler, method]);
877
882
  },
878
883