@crossdelta/infrastructure 0.2.1 → 0.2.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.
package/README.md CHANGED
@@ -41,7 +41,6 @@ export default config
41
41
 
42
42
  ```typescript
43
43
  // infra/index.ts
44
- import { join } from 'node:path'
45
44
  import {
46
45
  buildServices,
47
46
  buildIngressRules,
@@ -51,7 +50,7 @@ import {
51
50
  } from '@crossdelta/infrastructure'
52
51
  import { App } from '@pulumi/digitalocean'
53
52
 
54
- const serviceConfigs = discoverServices(join(__dirname, 'services'))
53
+ const serviceConfigs = discoverServices('services')
55
54
 
56
55
  const app = new App('my-app', {
57
56
  spec: {
@@ -172,7 +171,7 @@ These helpers work both locally (via `.env.local`) and in production (via DO App
172
171
 
173
172
  | Function | Description |
174
173
  |----------|-------------|
175
- | `discoverServices(dir)` | Auto-discover service configs from directory |
174
+ | `discoverServices(dir)` | Auto-discover service configs (relative to cwd or absolute) |
176
175
  | `buildServices(options)` | Build App Platform service specs |
177
176
  | `buildIngressRules(configs)` | Generate ingress rules |
178
177
  | `buildServiceUrlEnvs(configs)` | Create SERVICE_NAME_URL env vars |
@@ -2,6 +2,17 @@ import type { ServiceConfig } from '../types';
2
2
  /**
3
3
  * Auto-discovers all service configurations from a directory.
4
4
  * Each .ts file (except index.ts) should export a ServiceConfig as default.
5
+ *
6
+ * @param servicesDir - Path to services directory (relative to cwd or absolute)
5
7
  * @throws Error if duplicate ports are detected
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Relative path (resolved from process.cwd())
12
+ * const configs = discoverServices('infra/services')
13
+ *
14
+ * // Absolute path
15
+ * const configs = discoverServices('/absolute/path/to/services')
16
+ * ```
6
17
  */
7
18
  export declare function discoverServices(servicesDir: string): ServiceConfig[];
package/dist/index.cjs CHANGED
@@ -105,9 +105,10 @@ ${conflicts.join(`
105
105
  }
106
106
  }
107
107
  function discoverServices(servicesDir) {
108
- const files = import_node_fs.readdirSync(servicesDir).filter((file) => file.endsWith(".ts") && file !== "index.ts");
108
+ const resolvedDir = import_node_path.isAbsolute(servicesDir) ? servicesDir : import_node_path.resolve(process.cwd(), servicesDir);
109
+ const files = import_node_fs.readdirSync(resolvedDir).filter((file) => file.endsWith(".ts") && file !== "index.ts");
109
110
  const configs = files.map((file) => {
110
- const module2 = require(import_node_path.join(servicesDir, file));
111
+ const module2 = require(import_node_path.join(resolvedDir, file));
111
112
  return module2.default;
112
113
  });
113
114
  validateNoDuplicatePorts(configs);
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var defaultHealthCheck = {
32
32
  };
33
33
  // lib/helpers/discover-services.ts
34
34
  import { readdirSync } from "node:fs";
35
- import { join } from "node:path";
35
+ import { isAbsolute, join, resolve } from "node:path";
36
36
  function getServicePort(config) {
37
37
  if (config.httpPort)
38
38
  return config.httpPort;
@@ -57,9 +57,10 @@ ${conflicts.join(`
57
57
  }
58
58
  }
59
59
  function discoverServices(servicesDir) {
60
- const files = readdirSync(servicesDir).filter((file) => file.endsWith(".ts") && file !== "index.ts");
60
+ const resolvedDir = isAbsolute(servicesDir) ? servicesDir : resolve(process.cwd(), servicesDir);
61
+ const files = readdirSync(resolvedDir).filter((file) => file.endsWith(".ts") && file !== "index.ts");
61
62
  const configs = files.map((file) => {
62
- const module = __require(join(servicesDir, file));
63
+ const module = __require(join(resolvedDir, file));
63
64
  return module.default;
64
65
  });
65
66
  validateNoDuplicatePorts(configs);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossdelta/infrastructure",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "publishConfig": {