spooder 6.1.93 → 6.1.95

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/README.md +12 -1
  2. package/package.json +1 -1
  3. package/src/api.ts +13 -5
package/README.md CHANGED
@@ -599,6 +599,7 @@ log_list(input: any[], delimiter = ', ');
599
599
 
600
600
  // http
601
601
  http_serve(port: number, hostname?: string): Server;
602
+ server.port: number;
602
603
  server.stop(immediate: boolean): Promise<void>;
603
604
 
604
605
  // cookies
@@ -840,13 +841,14 @@ IPC_TARGET.BROADCAST; // broadcast to all other instances
840
841
  ## API > HTTP
841
842
 
842
843
  ### `http_serve(port: number, hostname?: string): Server`
843
- Bootstrap a server on the specified port (and optional hostname).
844
+ Bootstrap a server on the specified port (and optional hostname). Pass `0` for the port to assign a random available port, which can then be retrieved via `server.port`.
844
845
 
845
846
  ```ts
846
847
  import { serve } from 'spooder';
847
848
 
848
849
  const server = http_serve(8080); // port only
849
850
  const server = http_serve(3000, '0.0.0.0'); // optional hostname
851
+ const server = http_serve(0); // random port, retrieve via server.port
850
852
  ```
851
853
 
852
854
  By default, the server responds with:
@@ -879,6 +881,15 @@ await server.stop(false);
879
881
  // do something now all connections are done
880
882
  ```
881
883
 
884
+ ### 📖 `server.port`
885
+
886
+ Returns the port the server is listening on. Useful when `0` is passed to `http_serve()` for a random port assignment.
887
+
888
+ ```ts
889
+ const server = http_serve(0);
890
+ console.log(`Server listening on port ${server.port}`);
891
+ ```
892
+
882
893
  ### Routing
883
894
 
884
895
  ### 🔧 `server.route(path: string, handler: RequestHandler)`
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "spooder",
3
3
  "author": "Kruithne <kruithne@gmail.com>",
4
4
  "type": "module",
5
- "version": "6.1.93",
5
+ "version": "6.1.95",
6
6
  "module": "./src/api.ts",
7
7
  "repository": {
8
8
  "url": "https://github.com/Kruithne/spooder"
package/src/api.ts CHANGED
@@ -978,13 +978,16 @@ export async function parse_template(template: string, replacements: Replacement
978
978
  const if_regex = /<t-if\s+test="([^"]+)"\s*>(.*?)<\/t-if>/gs;
979
979
  result = await replace_async(result, if_regex, async (match, condition_key, if_content) => {
980
980
  const condition_value = is_replacer_fn ? await replacements(condition_key) : replacements[condition_key];
981
-
982
- if (!drop_missing && !condition_value)
981
+ const key_exists = is_replacer_fn || (condition_key in replacements);
982
+
983
+ // preserve block for later pass if key doesn't exist and drop_missing is false
984
+ if (!key_exists && !drop_missing)
983
985
  return match;
984
-
986
+
987
+ // render content if condition is truthy, otherwise remove block
985
988
  if (condition_value)
986
989
  return await parse_template(if_content, replacements, drop_missing);
987
-
990
+
988
991
  return '';
989
992
  });
990
993
 
@@ -1817,7 +1820,7 @@ export function http_serve(port: number, hostname?: string) {
1817
1820
  }
1818
1821
  });
1819
1822
 
1820
- log_spooder(`server started on port {${port}} (host: {${hostname ?? 'unspecified'}})`);
1823
+ log_spooder(`server started on port {${server.port}} (host: {${hostname ?? 'unspecified'}})`);
1821
1824
 
1822
1825
  type ThrottleHandler = {
1823
1826
  (delta: number, handler: JSONRequestHandler): JSONRequestHandler;
@@ -2179,6 +2182,11 @@ export function http_serve(port: number, hostname?: string) {
2179
2182
  return http_apply_range(file, request);
2180
2183
  });
2181
2184
  }
2185
+ },
2186
+
2187
+ /** The port the server is listening on. Useful when port 0 is passed to assign a random port. */
2188
+ get port(): number {
2189
+ return server.port!;
2182
2190
  }
2183
2191
  };
2184
2192
  }