@apifuse/provider-sdk 2.1.0-beta.2 → 2.1.0-beta.21
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/AUTHORING.md +330 -8
- package/CHANGELOG.md +89 -1
- package/README.md +64 -17
- package/SUBMISSION.md +86 -0
- package/bin/apifuse-check.ts +60 -6
- package/bin/apifuse-dev.ts +58 -8
- package/bin/apifuse-pack-check.ts +32 -2
- package/bin/apifuse-pack-smoke.ts +133 -6
- package/bin/apifuse-perf.ts +142 -49
- package/bin/apifuse-record.ts +182 -104
- package/bin/apifuse-submit-check.ts +3243 -0
- package/bin/apifuse.ts +1 -1
- package/dist/auth.d.ts +76 -0
- package/dist/auth.js +436 -0
- package/dist/ceremonies/index.d.ts +41 -0
- package/dist/ceremonies/index.js +490 -0
- package/dist/choice-token.d.ts +24 -0
- package/dist/choice-token.js +74 -0
- package/dist/cli/commands.d.ts +10 -0
- package/dist/cli/commands.js +80 -0
- package/dist/cli/create.d.ts +47 -0
- package/dist/cli/create.js +777 -0
- package/dist/cli/templates/provider/.dockerignore.tpl +22 -0
- package/dist/cli/templates/provider/.gitignore.tpl +22 -0
- package/dist/cli/templates/provider/AGENTS.md.tpl +87 -0
- package/dist/cli/templates/provider/CLAUDE.md.tpl +1 -0
- package/dist/cli/templates/provider/Dockerfile.tpl +7 -0
- package/dist/cli/templates/provider/README.md.tpl +163 -0
- package/dist/cli/templates/provider/dev.ts.tpl +5 -0
- package/dist/cli/templates/provider/domain/README.md.tpl +3 -0
- package/dist/cli/templates/provider/index.test.ts.tpl +13 -0
- package/dist/cli/templates/provider/index.ts.tpl +15 -0
- package/dist/cli/templates/provider/mappers/README.md.tpl +3 -0
- package/dist/cli/templates/provider/meta.ts.tpl +7 -0
- package/dist/cli/templates/provider/operations/index.ts.tpl +5 -0
- package/dist/cli/templates/provider/operations/ping.ts.tpl +24 -0
- package/dist/cli/templates/provider/schemas/ping.ts.tpl +24 -0
- package/dist/cli/templates/provider/skills/fixtures-and-recording/SKILL.md.tpl +58 -0
- package/dist/cli/templates/provider/skills/health-checks-and-fail-closed/SKILL.md.tpl +65 -0
- package/dist/cli/templates/provider/skills/normalization-standards/SKILL.md.tpl +57 -0
- package/dist/cli/templates/provider/skills/pagination-and-counts/SKILL.md.tpl +52 -0
- package/dist/cli/templates/provider/skills/upstream-contract-verification/SKILL.md.tpl +45 -0
- package/dist/cli/templates/provider/skills/upstream-notes/README.md.tpl +13 -0
- package/dist/cli/templates/provider/start.ts.tpl +5 -0
- package/dist/cli/templates/provider/upstream/README.md.tpl +3 -0
- package/dist/config/loader.d.ts +107 -0
- package/dist/config/loader.js +935 -0
- package/dist/contract-json.d.ts +9 -0
- package/dist/contract-json.js +51 -0
- package/dist/contract-serialization.d.ts +4 -0
- package/dist/contract-serialization.js +78 -0
- package/dist/contract-types.d.ts +49 -0
- package/dist/contract-types.js +1 -0
- package/dist/contract.d.ts +6 -0
- package/dist/contract.js +156 -0
- package/dist/define.d.ts +100 -0
- package/dist/define.js +1383 -0
- package/dist/dev.d.ts +9 -0
- package/dist/dev.js +15 -0
- package/dist/errors.d.ts +59 -0
- package/dist/errors.js +97 -0
- package/dist/i18n/catalog.d.ts +29 -0
- package/dist/i18n/catalog.js +159 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/keys.d.ts +10 -0
- package/dist/i18n/keys.js +34 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +38 -0
- package/dist/lint.d.ts +74 -0
- package/dist/lint.js +729 -0
- package/dist/observability.d.ts +5 -0
- package/dist/observability.js +39 -0
- package/dist/provider.d.ts +11 -0
- package/dist/provider.js +9 -0
- package/dist/public-schema-field-lint.d.ts +2 -0
- package/dist/public-schema-field-lint.js +158 -0
- package/dist/recipes/gov-api.d.ts +19 -0
- package/dist/recipes/gov-api.js +72 -0
- package/dist/recipes/rest-api.d.ts +21 -0
- package/dist/recipes/rest-api.js +115 -0
- package/dist/runtime/auth-flow.d.ts +14 -0
- package/dist/runtime/auth-flow.js +46 -0
- package/dist/runtime/browser.d.ts +25 -0
- package/dist/runtime/browser.js +1237 -0
- package/dist/runtime/cache.d.ts +10 -0
- package/dist/runtime/cache.js +372 -0
- package/dist/runtime/choice.d.ts +15 -0
- package/dist/runtime/choice.js +435 -0
- package/dist/runtime/credential.d.ts +8 -0
- package/dist/runtime/credential.js +61 -0
- package/dist/runtime/env.d.ts +2 -0
- package/dist/runtime/env.js +10 -0
- package/dist/runtime/executor.d.ts +16 -0
- package/dist/runtime/executor.js +51 -0
- package/dist/runtime/http.d.ts +8 -0
- package/dist/runtime/http.js +726 -0
- package/dist/runtime/insights.d.ts +9 -0
- package/dist/runtime/insights.js +324 -0
- package/dist/runtime/instrumentation.d.ts +8 -0
- package/dist/runtime/instrumentation.js +269 -0
- package/dist/runtime/key-derivation.d.ts +24 -0
- package/dist/runtime/key-derivation.js +73 -0
- package/dist/runtime/keyring.d.ts +25 -0
- package/dist/runtime/keyring.js +93 -0
- package/dist/runtime/namespace.d.ts +9 -0
- package/dist/runtime/namespace.js +19 -0
- package/dist/runtime/otlp.d.ts +39 -0
- package/dist/runtime/otlp.js +103 -0
- package/dist/runtime/perf.d.ts +12 -0
- package/dist/runtime/perf.js +52 -0
- package/dist/runtime/prevalidate.d.ts +12 -0
- package/dist/runtime/prevalidate.js +173 -0
- package/dist/runtime/provider.d.ts +2 -0
- package/dist/runtime/provider.js +11 -0
- package/dist/runtime/proxy-errors.d.ts +21 -0
- package/dist/runtime/proxy-errors.js +83 -0
- package/dist/runtime/proxy-telemetry.d.ts +8 -0
- package/dist/runtime/proxy-telemetry.js +174 -0
- package/dist/runtime/redis.d.ts +17 -0
- package/dist/runtime/redis.js +82 -0
- package/dist/runtime/request-options.d.ts +3 -0
- package/dist/runtime/request-options.js +42 -0
- package/dist/runtime/state.d.ts +17 -0
- package/dist/runtime/state.js +344 -0
- package/dist/runtime/stealth.d.ts +21 -0
- package/dist/runtime/stealth.js +980 -0
- package/dist/runtime/stt.d.ts +22 -0
- package/dist/runtime/stt.js +480 -0
- package/dist/runtime/trace.d.ts +26 -0
- package/dist/runtime/trace.js +142 -0
- package/dist/runtime/waterfall.d.ts +12 -0
- package/dist/runtime/waterfall.js +147 -0
- package/dist/schema.d.ts +74 -0
- package/dist/schema.js +243 -0
- package/dist/serve.d.ts +1 -0
- package/dist/serve.js +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +2 -0
- package/dist/server/serve.d.ts +64 -0
- package/dist/server/serve.js +1118 -0
- package/dist/server/types.d.ts +136 -0
- package/dist/server/types.js +86 -0
- package/dist/stealth/profiles.d.ts +4 -0
- package/dist/stealth/profiles.js +259 -0
- package/dist/stream.d.ts +44 -0
- package/dist/stream.js +151 -0
- package/dist/testing/helpers.d.ts +23 -0
- package/dist/testing/helpers.js +95 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/run.d.ts +34 -0
- package/dist/testing/run.js +307 -0
- package/dist/types.d.ts +1467 -0
- package/dist/types.js +61 -0
- package/dist/utils/date.d.ts +6 -0
- package/dist/utils/date.js +101 -0
- package/dist/utils/parse.d.ts +16 -0
- package/dist/utils/parse.js +51 -0
- package/dist/utils/text.d.ts +4 -0
- package/dist/utils/text.js +14 -0
- package/dist/utils/transform.d.ts +8 -0
- package/dist/utils/transform.js +48 -0
- package/package.json +57 -29
- package/src/auth.ts +786 -0
- package/src/ceremonies/index.ts +8 -2
- package/src/choice-token.ts +165 -0
- package/src/cli/commands.ts +34 -11
- package/src/cli/create.ts +254 -128
- package/src/cli/templates/provider/.dockerignore.tpl +22 -0
- package/src/cli/templates/provider/.gitignore.tpl +22 -0
- package/src/cli/templates/provider/AGENTS.md.tpl +87 -0
- package/src/cli/templates/provider/CLAUDE.md.tpl +1 -0
- package/src/cli/templates/provider/README.md.tpl +87 -7
- package/src/cli/templates/provider/dev.ts.tpl +1 -1
- package/src/cli/templates/provider/domain/README.md.tpl +3 -0
- package/src/cli/templates/provider/index.ts.tpl +5 -47
- package/src/cli/templates/provider/mappers/README.md.tpl +3 -0
- package/src/cli/templates/provider/meta.ts.tpl +7 -0
- package/src/cli/templates/provider/operations/index.ts.tpl +5 -0
- package/src/cli/templates/provider/operations/ping.ts.tpl +24 -0
- package/src/cli/templates/provider/schemas/ping.ts.tpl +24 -0
- package/src/cli/templates/provider/skills/fixtures-and-recording/SKILL.md.tpl +58 -0
- package/src/cli/templates/provider/skills/health-checks-and-fail-closed/SKILL.md.tpl +65 -0
- package/src/cli/templates/provider/skills/normalization-standards/SKILL.md.tpl +57 -0
- package/src/cli/templates/provider/skills/pagination-and-counts/SKILL.md.tpl +52 -0
- package/src/cli/templates/provider/skills/upstream-contract-verification/SKILL.md.tpl +45 -0
- package/src/cli/templates/provider/skills/upstream-notes/README.md.tpl +13 -0
- package/src/cli/templates/provider/start.ts.tpl +1 -1
- package/src/cli/templates/provider/upstream/README.md.tpl +3 -0
- package/src/config/loader.ts +1224 -9
- package/src/contract-json.ts +75 -0
- package/src/contract-serialization.ts +89 -0
- package/src/contract-types.ts +52 -0
- package/src/contract.ts +216 -0
- package/src/define.ts +1820 -70
- package/src/errors.ts +27 -0
- package/src/i18n/catalog.ts +277 -0
- package/src/i18n/index.ts +2 -0
- package/src/i18n/keys.ts +64 -0
- package/src/index.ts +189 -9
- package/src/lint.ts +580 -73
- package/src/observability.ts +41 -0
- package/src/provider.ts +131 -4
- package/src/public-schema-field-lint.ts +237 -0
- package/src/runtime/auth-flow.ts +9 -0
- package/src/runtime/browser.ts +1054 -51
- package/src/runtime/cache.ts +528 -0
- package/src/runtime/choice.ts +760 -0
- package/src/runtime/executor.ts +32 -3
- package/src/runtime/http.ts +980 -195
- package/src/runtime/insights.ts +11 -11
- package/src/runtime/instrumentation.ts +12 -4
- package/src/runtime/key-derivation.ts +1 -1
- package/src/runtime/keyring.ts +4 -3
- package/src/runtime/proxy-errors.ts +132 -0
- package/src/runtime/proxy-telemetry.ts +253 -0
- package/src/runtime/redis.ts +116 -0
- package/src/runtime/request-options.ts +66 -0
- package/src/runtime/state.ts +563 -0
- package/src/runtime/stealth.ts +1336 -0
- package/src/runtime/stt.ts +629 -0
- package/src/runtime/trace.ts +1 -1
- package/src/schema.ts +363 -1
- package/src/server/serve.ts +1192 -75
- package/src/server/types.ts +37 -0
- package/src/stream.ts +210 -0
- package/src/testing/run.ts +40 -6
- package/src/types.ts +1283 -59
- package/src/runtime/tls.ts +0 -434
- package/src/types/playwright-stealth.d.ts +0 -9
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upstream-contract-verification
|
|
3
|
+
description: How to establish evidence for upstream request params and response fields before coding. Load before wiring any new endpoint or mapping new fields.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Upstream contract verification
|
|
7
|
+
|
|
8
|
+
Most provider P0s come from guessed upstream contracts. Every param name and
|
|
9
|
+
response field needs evidence BEFORE it ships.
|
|
10
|
+
|
|
11
|
+
## Request parameters
|
|
12
|
+
1. Start from the official spec document (data.go.kr 활용가이드, vendor API
|
|
13
|
+
docs). Copy exact names — casing and underscores matter
|
|
14
|
+
(`WGS84_LAT` ≠ `WGS84LAT`; the wrong one is often silently ignored).
|
|
15
|
+
2. Confirm with ONE live call per endpoint. A param being ignored does not
|
|
16
|
+
produce an error — it produces plausible-looking wrong results, so compare:
|
|
17
|
+
- filtered vs unfiltered `totalCount` (identical → param ignored)
|
|
18
|
+
- a dense-area query returning 0 rows (→ param name/format wrong)
|
|
19
|
+
3. Do NOT copy param names from a sibling endpoint or sibling API of the same
|
|
20
|
+
vendor without re-verifying. Same vendor ≠ same contract; endpoints drift.
|
|
21
|
+
4. If a param only works together with another param (district requires
|
|
22
|
+
province), encode that dependency in the input schema with a clear error.
|
|
23
|
+
Test it: dependent-param-alone must be rejected, not silently national.
|
|
24
|
+
|
|
25
|
+
## Response fields
|
|
26
|
+
- Map exactly the field names present in your recorded live fixtures.
|
|
27
|
+
- No speculative fallback chains (`row.distance ?? row.dist ?? row.Distance`).
|
|
28
|
+
If two shapes genuinely exist, you need a recorded fixture proving EACH
|
|
29
|
+
branch plus a row-level test per branch; otherwise map one name only.
|
|
30
|
+
- Field presence varies by endpoint within the same vendor. Detail endpoints
|
|
31
|
+
often return more/differently-named fields than list endpoints — record
|
|
32
|
+
fixtures per endpoint, not per vendor.
|
|
33
|
+
|
|
34
|
+
## When results look wrong
|
|
35
|
+
- Same response body across different request payloads → the upstream is
|
|
36
|
+
ignoring your variation; stop tuning fields and re-check param names/auth.
|
|
37
|
+
- Empty result for a query that must have data (city-center radius search,
|
|
38
|
+
major-district listing) → treat as a request bug. Never record it as a
|
|
39
|
+
fixture and never ship it.
|
|
40
|
+
|
|
41
|
+
## Deliverables per endpoint
|
|
42
|
+
- [ ] Spec reference (URL or doc name + section) noted in the PR/commit
|
|
43
|
+
- [ ] One recorded live fixture proving request params take effect
|
|
44
|
+
- [ ] Negative evidence checked: filtered count differs from unfiltered
|
|
45
|
+
- [ ] Param dependencies enforced in the input schema with tests
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Upstream notes
|
|
2
|
+
|
|
3
|
+
Per-vendor / per-API-family pitfalls proven by live evidence. These are the
|
|
4
|
+
highest-value files in this workspace: general principles are knowable, but
|
|
5
|
+
"this API silently ignores param X" is only discoverable by getting burned.
|
|
6
|
+
|
|
7
|
+
- Read EVERY file here before your first upstream call.
|
|
8
|
+
- When you discover a new upstream quirk (silently ignored param, unit
|
|
9
|
+
surprise, undocumented value domain, error-shape oddity), ADD it here in
|
|
10
|
+
the same format — evidence line included. Reviewers treat contributed
|
|
11
|
+
upstream notes as part of submission quality.
|
|
12
|
+
|
|
13
|
+
Format per entry: **Symptom → Cause → Rule → Evidence**.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import Redis from "ioredis";
|
|
2
|
+
import type { ProviderProxyPolicy, TraceConfig } from "../types";
|
|
3
|
+
export declare const SMARTPROXY_APP_KEY_ENV = "APIFUSE__PROXY__SMARTPROXY_APP_KEY";
|
|
4
|
+
export declare const SMARTPROXY_MAX_LIFETIME_MINUTES = 2000;
|
|
5
|
+
export declare const DEFAULT_SMARTPROXY_POOL_SIZE = 20;
|
|
6
|
+
export declare const SMARTPROXY_MAX_POOL_SIZE = 20;
|
|
7
|
+
export declare const DEFAULT_PROXY_PROVIDER_ENV = "APIFUSE__PROXY__PROVIDER";
|
|
8
|
+
export declare const DEFAULT_PROXY_COUNTRY_ENV = "APIFUSE__PROXY__DEFAULT_COUNTRY";
|
|
9
|
+
export declare const DEFAULT_PROXY_LIFETIME_ENV = "APIFUSE__PROXY__DEFAULT_LIFETIME_MINUTES";
|
|
10
|
+
export declare const PROVIDER_CACHE_REDIS_URL_ENV = "APIFUSE__PROVIDER__CACHE_REDIS_URL";
|
|
11
|
+
export declare const PROVIDER_STATE_REDIS_URL_ENV = "APIFUSE__PROVIDER__STATE_REDIS_URL";
|
|
12
|
+
export declare const REDIS_URL_ENV = "APIFUSE__REDIS__URL";
|
|
13
|
+
export type ProxyOptions = {
|
|
14
|
+
url: string;
|
|
15
|
+
};
|
|
16
|
+
export type ProxyConfig = Partial<ProxyOptions> & {
|
|
17
|
+
provider?: string;
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
};
|
|
20
|
+
export type BrowserConfig = {
|
|
21
|
+
executablePath?: string;
|
|
22
|
+
headless?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type SessionConfig = {
|
|
25
|
+
storage?: "sqlite" | "supabase";
|
|
26
|
+
path?: string;
|
|
27
|
+
};
|
|
28
|
+
export type ApiFuseConfig = {
|
|
29
|
+
proxy?: ProxyConfig;
|
|
30
|
+
browser?: BrowserConfig;
|
|
31
|
+
session?: SessionConfig;
|
|
32
|
+
trace?: TraceConfig;
|
|
33
|
+
credentials?: Record<string, Record<string, string>>;
|
|
34
|
+
};
|
|
35
|
+
export type ProxyResolutionOptions = {
|
|
36
|
+
proxy?: string;
|
|
37
|
+
upstream?: {
|
|
38
|
+
proxy?: boolean | ProviderProxyPolicy;
|
|
39
|
+
};
|
|
40
|
+
apifuseConfig?: Pick<ApiFuseConfig, "proxy">;
|
|
41
|
+
proxyPolicy?: ProviderProxyPolicy;
|
|
42
|
+
affinityKey?: string;
|
|
43
|
+
/** Zero-based proxy-pool attempt index used by SDK transports for failover. */
|
|
44
|
+
proxyAttempt?: number;
|
|
45
|
+
telemetry?: ProxyTelemetrySink;
|
|
46
|
+
};
|
|
47
|
+
export type ProxyCacheStatus = "memory_hit" | "redis_hit" | "allocator" | "soft_stale_refresh" | "lock_wait" | "redis_error" | "redis_corrupt" | "disabled";
|
|
48
|
+
export type SmartproxyAllocatorBodyClass = "network_error" | "http_error" | "empty" | "json_without_proxies" | "text_without_proxies" | "usable_proxy_endpoints";
|
|
49
|
+
export type ProxyResolutionTelemetryEvent = {
|
|
50
|
+
provider: "smartproxy";
|
|
51
|
+
cacheStatus: ProxyCacheStatus;
|
|
52
|
+
cacheHit: boolean;
|
|
53
|
+
resolutionMs: number;
|
|
54
|
+
allocatorMs?: number;
|
|
55
|
+
allocatorStatus?: number;
|
|
56
|
+
allocatorBodyClass?: SmartproxyAllocatorBodyClass;
|
|
57
|
+
allocatorAttempts?: number;
|
|
58
|
+
lockWaitMs?: number;
|
|
59
|
+
redisReadMs?: number;
|
|
60
|
+
redisWriteMs?: number;
|
|
61
|
+
poolAgeMs?: number;
|
|
62
|
+
poolExpiresInMs?: number;
|
|
63
|
+
attempts: number;
|
|
64
|
+
refreshes?: number;
|
|
65
|
+
};
|
|
66
|
+
export type ProxyAttemptTelemetryEvent = {
|
|
67
|
+
provider: "smartproxy";
|
|
68
|
+
attempt: number;
|
|
69
|
+
poolIndex?: number;
|
|
70
|
+
proxyHash?: string;
|
|
71
|
+
outcome: "ok" | "error";
|
|
72
|
+
errorCode?: string;
|
|
73
|
+
status?: number;
|
|
74
|
+
durationMs?: number;
|
|
75
|
+
};
|
|
76
|
+
export type ProxyTelemetrySink = {
|
|
77
|
+
recordProxyResolution(event: ProxyResolutionTelemetryEvent): void;
|
|
78
|
+
recordProxyAttempt?(event: ProxyAttemptTelemetryEvent): void;
|
|
79
|
+
};
|
|
80
|
+
export type ResolvedProxyConfig = {
|
|
81
|
+
shouldWarn: boolean;
|
|
82
|
+
url?: string;
|
|
83
|
+
source?: "explicit" | "env" | "config" | "smartproxy-allocator";
|
|
84
|
+
diagnostics?: Record<string, string | number | boolean>;
|
|
85
|
+
};
|
|
86
|
+
export declare class ProxyResolutionError extends Error {
|
|
87
|
+
readonly code: "PROXY_REQUIRED" | "PROXY_ALLOCATION_FAILED";
|
|
88
|
+
readonly telemetry?: ProxyResolutionTelemetryEvent;
|
|
89
|
+
constructor(code: "PROXY_REQUIRED" | "PROXY_ALLOCATION_FAILED", message: string, options?: {
|
|
90
|
+
cause?: unknown;
|
|
91
|
+
telemetry?: ProxyResolutionTelemetryEvent;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
type ProxyRedisClient = Pick<Redis, "connect" | "del" | "eval" | "get" | "on" | "pttl" | "set" | "status">;
|
|
95
|
+
export declare function providerCacheRedisUrlFromEnv(): string | undefined;
|
|
96
|
+
export declare function providerStateRedisUrlFromEnv(): string | undefined;
|
|
97
|
+
/** @internal Test-only hook for exercising shared proxy-cache behavior. */
|
|
98
|
+
export declare function __setProxyRedisForTests(redis: ProxyRedisClient | undefined): void;
|
|
99
|
+
export declare function __setSmartproxyAllocatorDeadlineMsForTests(deadlineMs: number | undefined): void;
|
|
100
|
+
export declare function resolveProxyConfig(options?: ProxyResolutionOptions): ResolvedProxyConfig;
|
|
101
|
+
export declare function resolveProxyConfigAsync(options?: ProxyResolutionOptions): Promise<ResolvedProxyConfig>;
|
|
102
|
+
export declare function clearProxyResolutionCache(): void;
|
|
103
|
+
export declare function invalidateProxyResolutionCache(options?: ProxyResolutionOptions): boolean;
|
|
104
|
+
export declare function invalidateProxyResolutionCacheAsync(options?: ProxyResolutionOptions): Promise<boolean>;
|
|
105
|
+
export declare function defineConfig(config: ApiFuseConfig): ApiFuseConfig;
|
|
106
|
+
export declare function loadApiFuseConfig(dir?: string): Promise<ApiFuseConfig>;
|
|
107
|
+
export {};
|