@vercel/fs-detectors 5.7.14 → 5.7.16
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/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.js +60 -0
- package/dist/services/resolve.d.ts +3 -0
- package/dist/services/resolve.js +65 -0
- package/dist/services/types.d.ts +38 -0
- package/dist/services/types.js +34 -0
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { detectBuilders, detectOutputDirectory, detectApiDirectory, detectApiExtensions, } from './detect-builders';
|
|
2
|
+
export { detectServices, type DetectServicesOptions, type DetectServicesResult, type ResolvedService, } from './services';
|
|
2
3
|
export { detectFileSystemAPI } from './detect-file-system-api';
|
|
3
4
|
export { detectFramework, detectFrameworks, detectFrameworkRecord, detectFrameworkVersion, } from './detect-framework';
|
|
4
5
|
export { getProjectPaths } from './get-project-paths';
|
package/dist/index.js
CHANGED
|
@@ -36,6 +36,7 @@ __export(src_exports, {
|
|
|
36
36
|
detectFrameworks: () => import_detect_framework.detectFrameworks,
|
|
37
37
|
detectInstrumentation: () => import_detect_instrumentation.detectInstrumentation,
|
|
38
38
|
detectOutputDirectory: () => import_detect_builders.detectOutputDirectory,
|
|
39
|
+
detectServices: () => import_services.detectServices,
|
|
39
40
|
getProjectPaths: () => import_get_project_paths.getProjectPaths,
|
|
40
41
|
getWorkspacePackagePaths: () => import_get_workspace_package_paths.getWorkspacePackagePaths,
|
|
41
42
|
getWorkspaces: () => import_get_workspaces.getWorkspaces,
|
|
@@ -47,6 +48,7 @@ __export(src_exports, {
|
|
|
47
48
|
});
|
|
48
49
|
module.exports = __toCommonJS(src_exports);
|
|
49
50
|
var import_detect_builders = require("./detect-builders");
|
|
51
|
+
var import_services = require("./services");
|
|
50
52
|
var import_detect_file_system_api = require("./detect-file-system-api");
|
|
51
53
|
var import_detect_framework = require("./detect-framework");
|
|
52
54
|
var import_get_project_paths = require("./get-project-paths");
|
|
@@ -80,6 +82,7 @@ var import_detect_instrumentation = require("./detect-instrumentation");
|
|
|
80
82
|
detectFrameworks,
|
|
81
83
|
detectInstrumentation,
|
|
82
84
|
detectOutputDirectory,
|
|
85
|
+
detectServices,
|
|
83
86
|
getProjectPaths,
|
|
84
87
|
getWorkspacePackagePaths,
|
|
85
88
|
getWorkspaces,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DetectServicesOptions, DetectServicesResult } from './types';
|
|
2
|
+
export * from './types';
|
|
3
|
+
export * from './resolve';
|
|
4
|
+
/**
|
|
5
|
+
* Detect and resolve services within a project.
|
|
6
|
+
*
|
|
7
|
+
* Reads service configurations from vercel.json `experimentalServices`
|
|
8
|
+
* and resolves them into ResolvedService objects.
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectServices(options: DetectServicesOptions): Promise<DetectServicesResult>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var services_exports = {};
|
|
21
|
+
__export(services_exports, {
|
|
22
|
+
detectServices: () => detectServices
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(services_exports);
|
|
25
|
+
var import_resolve = require("./resolve");
|
|
26
|
+
__reExport(services_exports, require("./types"), module.exports);
|
|
27
|
+
__reExport(services_exports, require("./resolve"), module.exports);
|
|
28
|
+
async function detectServices(options) {
|
|
29
|
+
const { fs, workPath = "" } = options;
|
|
30
|
+
const services = [];
|
|
31
|
+
const errors = [];
|
|
32
|
+
const configPath = workPath ? `${workPath}/vercel.json` : "vercel.json";
|
|
33
|
+
let experimentalServices;
|
|
34
|
+
try {
|
|
35
|
+
const configBuffer = await fs.readFile(configPath);
|
|
36
|
+
const config = JSON.parse(configBuffer.toString("utf-8"));
|
|
37
|
+
experimentalServices = config.experimentalServices;
|
|
38
|
+
} catch {
|
|
39
|
+
return { services, errors };
|
|
40
|
+
}
|
|
41
|
+
if (experimentalServices && typeof experimentalServices === "object") {
|
|
42
|
+
for (const name of Object.keys(experimentalServices)) {
|
|
43
|
+
const serviceConfig = experimentalServices[name];
|
|
44
|
+
const validationError = (0, import_resolve.validateServiceConfig)(name, serviceConfig);
|
|
45
|
+
if (validationError) {
|
|
46
|
+
errors.push(validationError);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const resolved = (0, import_resolve.resolveService)(name, serviceConfig);
|
|
50
|
+
services.push(resolved);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { services, errors };
|
|
54
|
+
}
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
detectServices,
|
|
58
|
+
...require("./types"),
|
|
59
|
+
...require("./resolve")
|
|
60
|
+
});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ResolvedService, ExperimentalServiceConfig, ServiceDetectionError } from './types';
|
|
2
|
+
export declare function validateServiceConfig(name: string, config: ExperimentalServiceConfig): ServiceDetectionError | null;
|
|
3
|
+
export declare function resolveService(name: string, config: ExperimentalServiceConfig, group?: string): ResolvedService;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var resolve_exports = {};
|
|
20
|
+
__export(resolve_exports, {
|
|
21
|
+
resolveService: () => resolveService,
|
|
22
|
+
validateServiceConfig: () => validateServiceConfig
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(resolve_exports);
|
|
25
|
+
function validateServiceConfig(name, config) {
|
|
26
|
+
if (config.type === "cron" && !config.schedule) {
|
|
27
|
+
return {
|
|
28
|
+
code: "MISSING_CRON_SCHEDULE",
|
|
29
|
+
message: `Cron service "${name}" is missing required "schedule" field`,
|
|
30
|
+
serviceName: name
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function resolveService(name, config, group) {
|
|
36
|
+
const type = config.type || "web";
|
|
37
|
+
const workspace = config.workspace || ".";
|
|
38
|
+
const topic = type === "worker" ? config.topic || "default" : config.topic;
|
|
39
|
+
const consumer = type === "worker" ? config.consumer || "default" : config.consumer;
|
|
40
|
+
return {
|
|
41
|
+
name,
|
|
42
|
+
type,
|
|
43
|
+
group,
|
|
44
|
+
workspace,
|
|
45
|
+
entrypoint: config.entrypoint,
|
|
46
|
+
routePrefix: config.routePrefix,
|
|
47
|
+
framework: config.framework,
|
|
48
|
+
builder: config.builder,
|
|
49
|
+
runtime: config.runtime,
|
|
50
|
+
buildCommand: config.buildCommand,
|
|
51
|
+
installCommand: config.installCommand,
|
|
52
|
+
memory: config.memory,
|
|
53
|
+
maxDuration: config.maxDuration,
|
|
54
|
+
includeFiles: config.includeFiles,
|
|
55
|
+
excludeFiles: config.excludeFiles,
|
|
56
|
+
schedule: config.schedule,
|
|
57
|
+
topic,
|
|
58
|
+
consumer
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
62
|
+
0 && (module.exports = {
|
|
63
|
+
resolveService,
|
|
64
|
+
validateServiceConfig
|
|
65
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ExperimentalServiceConfig, ExperimentalServiceGroups, ExperimentalServices, ServiceRuntime, ServiceType } from '@vercel/build-utils';
|
|
2
|
+
import type { DetectorFilesystem } from '../detectors/filesystem';
|
|
3
|
+
export type { ExperimentalServiceConfig, ExperimentalServiceGroups, ExperimentalServices, ServiceRuntime, ServiceType, };
|
|
4
|
+
export interface ResolvedService {
|
|
5
|
+
name: string;
|
|
6
|
+
type: ServiceType;
|
|
7
|
+
/** Service group name if this service belongs to a group */
|
|
8
|
+
group?: string;
|
|
9
|
+
workspace: string;
|
|
10
|
+
entrypoint?: string;
|
|
11
|
+
framework?: string;
|
|
12
|
+
builder?: string;
|
|
13
|
+
buildCommand?: string;
|
|
14
|
+
installCommand?: string;
|
|
15
|
+
runtime?: string;
|
|
16
|
+
memory?: number;
|
|
17
|
+
maxDuration?: number;
|
|
18
|
+
includeFiles?: string | string[];
|
|
19
|
+
excludeFiles?: string | string[];
|
|
20
|
+
routePrefix?: string;
|
|
21
|
+
schedule?: string;
|
|
22
|
+
topic?: string;
|
|
23
|
+
consumer?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DetectServicesOptions {
|
|
26
|
+
fs: DetectorFilesystem;
|
|
27
|
+
workPath?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface DetectServicesResult {
|
|
30
|
+
services: ResolvedService[];
|
|
31
|
+
errors: ServiceDetectionError[];
|
|
32
|
+
}
|
|
33
|
+
export interface ServiceDetectionError {
|
|
34
|
+
code: string;
|
|
35
|
+
message: string;
|
|
36
|
+
serviceName?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare const RUNTIME_BUILDERS: Record<ServiceRuntime, string>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var types_exports = {};
|
|
20
|
+
__export(types_exports, {
|
|
21
|
+
RUNTIME_BUILDERS: () => RUNTIME_BUILDERS
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(types_exports);
|
|
24
|
+
const RUNTIME_BUILDERS = {
|
|
25
|
+
node: "@vercel/node",
|
|
26
|
+
python: "@vercel/python",
|
|
27
|
+
go: "@vercel/go",
|
|
28
|
+
rust: "@vercel/rust",
|
|
29
|
+
ruby: "@vercel/ruby"
|
|
30
|
+
};
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
RUNTIME_BUILDERS
|
|
34
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vercel/fs-detectors",
|
|
3
|
-
"version": "5.7.
|
|
3
|
+
"version": "5.7.16",
|
|
4
4
|
"description": "Vercel filesystem detectors",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
"semver": "6.3.1",
|
|
22
22
|
"@vercel/error-utils": "2.0.3",
|
|
23
23
|
"@vercel/routing-utils": "5.3.2",
|
|
24
|
-
"@vercel/frameworks": "3.15.
|
|
24
|
+
"@vercel/frameworks": "3.15.7"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/glob": "7.2.0",
|
|
28
28
|
"@types/jest": "27.5.1",
|
|
29
29
|
"@types/js-yaml": "4.0.5",
|
|
30
30
|
"@types/minimatch": "3.0.5",
|
|
31
|
-
"@types/node": "
|
|
31
|
+
"@types/node": "20.11.0",
|
|
32
32
|
"@types/semver": "7.3.10",
|
|
33
33
|
"jest-junit": "16.0.0",
|
|
34
34
|
"typescript": "4.9.5",
|
|
35
|
-
"@vercel/build-utils": "13.2.
|
|
35
|
+
"@vercel/build-utils": "13.2.14"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "node ../../utils/build.mjs",
|