@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 +2 -3
- package/dist/helpers/discover-services.d.ts +11 -0
- package/dist/index.cjs +3 -2
- package/dist/index.js +4 -3
- package/package.json +1 -1
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(
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
63
|
+
const module = __require(join(resolvedDir, file));
|
|
63
64
|
return module.default;
|
|
64
65
|
});
|
|
65
66
|
validateNoDuplicatePorts(configs);
|