everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
395 lines (393 loc) • 14.9 kB
JavaScript
import * as z$1 from "zod";
import { ComposePayloadSchema } from "every-plugin/ui/manifest";
//#region src/types.ts
const JsonValueSchema = z$1.lazy(() => z$1.union([
z$1.string(),
z$1.number(),
z$1.boolean(),
z$1.null(),
z$1.array(JsonValueSchema),
z$1.record(z$1.string(), JsonValueSchema)
]));
const JsonObjectSchema = z$1.record(z$1.string(), JsonValueSchema);
const ExtendsSchema = z$1.union([z$1.string(), z$1.object({
development: z$1.string().optional(),
production: z$1.string().optional(),
staging: z$1.string().optional()
})]);
const SourceModeSchema = z$1.enum(["local", "remote"]);
const SharedConfigSchema = z$1.object({
version: z$1.string(),
requiredVersion: z$1.string().optional(),
singleton: z$1.boolean().optional(),
eager: z$1.boolean().optional(),
strictVersion: z$1.boolean().optional(),
shareScope: z$1.string().optional()
});
const SharedDepConfigSchema = SharedConfigSchema;
const SharedDepMapSchema = z$1.record(z$1.string(), SharedConfigSchema);
const FederationEntrySchema = z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
/** the content-hashed container entry URL (derived from the version
* manifest when the slot pins one) — consumers load this instead of
* appending the legacy fixed name */
entryUrl: z$1.string().optional(),
source: SourceModeSchema,
integrity: z$1.string().optional()
});
/**
* Slot pin (atomic-deploys): an explicit pointer to the slot's immutable
* per-deploy WorkspaceVersionManifest — `manifest` is the versioned manifest
* filename relative to the slot's production base, `integrity` is that
* document's SRI. Resolving the pin derives the slot's entry-level fields
* (`entryUrl`, entry integrity, ssr entry). A slot without a `pin` uses its
* top-level `integrity` as a direct entry SRI (fixed-name slots only).
*/
const SlotPinSchema = z$1.object({
manifest: z$1.string().min(1),
integrity: z$1.string().min(1)
});
const PluginUiConfigSchema = z$1.object({
name: z$1.string(),
development: z$1.string().optional(),
production: z$1.string().optional(),
/** browser-facing base overriding `production` when server-side loading
* must stay container-local (image-native runtimes, ADR 0011) — may be
* same-origin relative (/bundles/<account>/<gateway>/<slot>) */
publicUrl: z$1.string().optional(),
integrity: z$1.string().optional(),
ssr: z$1.string().optional(),
ssrIntegrity: z$1.string().optional(),
pin: SlotPinSchema.optional()
});
const ComposableAppEntrySchema = z$1.object({
extends: ExtendsSchema.optional(),
name: z$1.string().optional(),
development: z$1.string().optional(),
production: z$1.string().optional(),
integrity: z$1.string().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
routes: z$1.array(z$1.string()).optional(),
shared: SharedDepMapSchema.optional(),
connectSrc: z$1.array(z$1.string()).optional(),
ui: PluginUiConfigSchema.optional(),
pin: SlotPinSchema.optional()
});
const ApiPluginConfigSchema = ComposableAppEntrySchema.extend({ dependsOn: z$1.array(z$1.string()).optional() });
const BosPluginRefSchema = ComposableAppEntrySchema.extend({
version: z$1.string().optional(),
app: z$1.record(z$1.string(), z$1.unknown()).optional(),
plugins: z$1.record(z$1.string(), z$1.unknown()).optional(),
dependsOn: z$1.array(z$1.string()).optional()
});
const PluginRuntimeUiSchema = z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
source: SourceModeSchema,
/** browser-facing base; when set the client config serves this instead of
* `url` (server-side loading keeps `url`) */
publicUrl: z$1.string().optional(),
localPath: z$1.string().optional(),
port: z$1.number().optional(),
integrity: z$1.string().optional(),
ssrUrl: z$1.string().optional(),
ssrIntegrity: z$1.string().optional(),
entryUrl: z$1.string().optional(),
ssrEntryUrl: z$1.string().optional(),
/** pin-derived hashed browser manifest (mf-manifest) — absent for local
* slots; registration reads this instead of the overloaded `entry` */
browserManifestUrl: z$1.string().optional(),
dependsOn: z$1.array(z$1.string()).optional()
});
const RuntimePluginConfigSchema = z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
source: SourceModeSchema,
extendsRef: z$1.string().optional(),
localPath: z$1.string().optional(),
port: z$1.number().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
integrity: z$1.string().optional(),
entryUrl: z$1.string().optional(),
shared: SharedDepMapSchema.optional(),
connectSrc: z$1.array(z$1.string()).optional(),
ui: PluginRuntimeUiSchema.optional(),
routes: z$1.array(z$1.string()).optional(),
dependsOn: z$1.array(z$1.string()).optional()
});
const DependencyNodeKindSchema = z$1.enum([
"api",
"auth",
"ui",
"plugin"
]);
const RuntimeDependencyNodeSchema = z$1.object({
key: z$1.string(),
kind: DependencyNodeKindSchema,
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
source: SourceModeSchema,
dependsOn: z$1.array(z$1.string()).optional(),
extendsRef: z$1.string().optional(),
localPath: z$1.string().optional(),
port: z$1.number().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
integrity: z$1.string().optional(),
shared: SharedDepMapSchema.optional(),
connectSrc: z$1.array(z$1.string()).optional(),
ui: PluginRuntimeUiSchema.optional(),
routes: z$1.array(z$1.string()).optional(),
sourceOrigin: z$1.enum(["config", "manifest"]).optional(),
singletonKey: z$1.string().optional()
});
const UiConfigSchema = z$1.object({
name: z$1.string().optional(),
development: z$1.string().optional(),
production: z$1.string().optional(),
/** browser-facing base overriding `production` (see PluginUiConfigSchema) */
publicUrl: z$1.string().optional(),
/** direct entry SRI — only for slots without a `pin` */
integrity: z$1.string().optional(),
ssr: z$1.string().optional(),
ssrIntegrity: z$1.string().optional(),
pin: SlotPinSchema.optional()
}).strict();
const HostConfigSchema = z$1.object({
development: z$1.string(),
/** Deploy state (ADR 0005) — absent until the first publish writes it. */
production: z$1.string().optional(),
/** direct entry SRI — only for slots without a `pin` */
integrity: z$1.string().optional(),
secrets: z$1.array(z$1.string()).optional(),
pin: SlotPinSchema.optional()
});
const ClientRuntimeInfoSchema = z$1.object({
accountId: z$1.string(),
gatewayId: z$1.string(),
runtimeBasePath: z$1.string(),
title: z$1.string().nullable(),
description: z$1.string().nullable(),
hostUrl: z$1.string().nullable()
});
const RuntimeLineageSchema = z$1.object({
parent: z$1.string().nullable(),
root: z$1.string().nullable(),
depth: z$1.number().int().nonnegative(),
extendsChain: z$1.array(z$1.string())
});
const BosStagingSchema = z$1.object({
domain: z$1.string(),
account: z$1.string().optional()
});
const BosConfigInputAppEntrySchema = z$1.record(z$1.string(), z$1.unknown());
const BosConfigInputSchema = z$1.lazy(() => z$1.object({
extends: ExtendsSchema.optional(),
account: z$1.string().optional(),
domain: z$1.string().optional(),
status: z$1.enum([
"active",
"suspended",
"pending_deletion"
]).optional(),
testnet: z$1.string().optional(),
staging: BosStagingSchema.optional(),
template: z$1.string().optional(),
gateway: z$1.object({
development: z$1.string().optional(),
production: z$1.string().optional(),
account: z$1.string().optional()
}).optional(),
development: z$1.string().optional(),
production: z$1.string().optional(),
integrity: z$1.string().optional(),
name: z$1.string().optional(),
version: z$1.string().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
routes: z$1.array(z$1.string()).optional(),
app: z$1.record(z$1.string(), BosConfigInputAppEntrySchema).optional(),
plugins: z$1.record(z$1.string(), z$1.union([z$1.string(), BosConfigInputSchema])).optional(),
publish: z$1.object({ auth: z$1.enum([
"session",
"key",
"custody"
]).optional() }).optional(),
ci: CiConfigSchema.optional(),
cdn: CdnConfigSchema.optional()
}));
const StarterLevelSchema = z$1.enum(["simple", "advanced"]);
const StarterLevelConfigSchema = z$1.object({
include: z$1.array(z$1.string()).optional(),
exclude: z$1.array(z$1.string()).optional()
});
const ParentStarterConfigSchema = z$1.object({
levels: z$1.record(z$1.string(), StarterLevelConfigSchema).optional(),
exclude: z$1.array(z$1.string()).optional()
});
const RailwayCiSchema = z$1.object({ service: z$1.string() });
const CiConfigSchema = z$1.object({
image: z$1.string().optional(),
railway: RailwayCiSchema.optional()
});
/** Where this runtime's built bundles are served from. Inherited via extends. */
const CdnConfigSchema = z$1.object({ origin: z$1.string().optional() });
const PublishAuthSchema = z$1.enum([
"session",
"key",
"custody"
]);
const PublishConfigSchema = z$1.object({ auth: PublishAuthSchema.optional() });
const PluginKeySchema = z$1.string().regex(/^[a-zA-Z0-9._-]+$/, "plugin key must match [a-zA-Z0-9._-] — keys from remote/extended configs are interpolated into shells and generated code");
const BosConfigSchema = z$1.object({
account: z$1.string(),
extends: ExtendsSchema.optional(),
domain: z$1.string().optional(),
title: z$1.string().optional(),
description: z$1.string().optional(),
testnet: z$1.string().optional(),
staging: BosStagingSchema.optional(),
repository: z$1.string().optional(),
publish: PublishConfigSchema.optional(),
ci: CiConfigSchema.optional(),
cdn: CdnConfigSchema.optional(),
rolledBackFrom: z$1.string().optional(),
starter: ParentStarterConfigSchema.optional(),
plugins: z$1.record(PluginKeySchema, z$1.union([z$1.string(), BosPluginRefSchema])).optional(),
app: z$1.object({
host: HostConfigSchema,
ui: UiConfigSchema,
api: ApiPluginConfigSchema,
auth: ComposableAppEntrySchema.optional()
})
});
const RuntimeConfigSchema = z$1.object({
env: z$1.enum([
"development",
"production",
"staging"
]),
account: z$1.string(),
domain: z$1.string().optional(),
networkId: z$1.enum(["mainnet", "testnet"]),
/** the deploy fingerprint of the snapshot this config came from
* (atomic-deploys 10) — rides the client config for the soft-refresh signal */
deploymentFingerprint: z$1.string().optional(),
title: z$1.string().optional(),
description: z$1.string().optional(),
repository: z$1.string().optional(),
host: FederationEntrySchema.extend({
localPath: z$1.string().optional(),
port: z$1.number().optional(),
secrets: z$1.array(z$1.string()).optional(),
remoteUrl: z$1.string().optional()
}),
ui: FederationEntrySchema.extend({
localPath: z$1.string().optional(),
port: z$1.number().optional(),
/** browser-facing base; when set the client config serves this instead
* of `url` (server-side loading keeps `url`) */
publicUrl: z$1.string().optional(),
ssrUrl: z$1.string().optional(),
ssrIntegrity: z$1.string().optional(),
ssrEntryUrl: z$1.string().optional(),
/** pin-derived hashed browser manifest (mf-manifest) */
browserManifestUrl: z$1.string().optional(),
dependsOn: z$1.array(z$1.string()).optional()
}),
api: FederationEntrySchema.extend({
localPath: z$1.string().optional(),
port: z$1.number().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
shared: SharedDepMapSchema.optional(),
dependsOn: z$1.array(z$1.string()).optional()
}),
auth: FederationEntrySchema.extend({
extendsRef: z$1.string().optional(),
localPath: z$1.string().optional(),
port: z$1.number().optional(),
proxy: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
secrets: z$1.array(z$1.string()).optional(),
shared: SharedDepMapSchema.optional(),
dependsOn: z$1.array(z$1.string()).optional(),
ui: PluginRuntimeUiSchema.optional()
}).optional(),
plugins: z$1.record(PluginKeySchema, RuntimePluginConfigSchema).optional(),
nodes: z$1.record(z$1.string(), RuntimeDependencyNodeSchema).optional()
});
const ClientRuntimeConfigSchema = z$1.object({
env: z$1.enum([
"development",
"production",
"staging"
]),
account: z$1.string(),
networkId: z$1.enum(["mainnet", "testnet"]),
/** the deploy fingerprint this document was rendered from (soft refresh) */
deploymentFingerprint: z$1.string().optional(),
hostUrl: z$1.string().optional(),
assetsUrl: z$1.string(),
apiBase: z$1.string(),
rpcBase: z$1.templateLiteral([z$1.literal("/"), z$1.string()]),
repository: z$1.string().optional(),
authAvailable: z$1.boolean().optional(),
runtime: ClientRuntimeInfoSchema.optional(),
ui: z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
integrity: z$1.string().optional(),
/** the content-hashed container entry URL when the slot pins a version manifest */
entryUrl: z$1.string().optional(),
/** composition payload — the server sets it; the client reconstructs the same tree from it before hydrate */
compose: ComposePayloadSchema.optional()
}).optional(),
api: z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
integrity: z$1.string().optional(),
variables: JsonObjectSchema.optional()
}).optional(),
auth: z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
integrity: z$1.string().optional(),
variables: JsonObjectSchema.optional()
}).optional(),
plugins: z$1.record(z$1.string(), z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
integrity: z$1.string().optional(),
variables: JsonObjectSchema.optional(),
ui: z$1.object({
name: z$1.string(),
url: z$1.string(),
entry: z$1.string(),
source: SourceModeSchema,
integrity: z$1.string().optional(),
ssrUrl: z$1.string().optional(),
ssrIntegrity: z$1.string().optional(),
entryUrl: z$1.string().optional()
}).optional()
})).optional()
});
//#endregion
export { ApiPluginConfigSchema, BosConfigInputSchema, BosConfigSchema, BosPluginRefSchema, BosStagingSchema, CdnConfigSchema, CiConfigSchema, ClientRuntimeConfigSchema, ClientRuntimeInfoSchema, ComposableAppEntrySchema, DependencyNodeKindSchema, ExtendsSchema, FederationEntrySchema, HostConfigSchema, JsonObjectSchema, JsonValueSchema, ParentStarterConfigSchema, PluginUiConfigSchema, PublishAuthSchema, PublishConfigSchema, RailwayCiSchema, RuntimeConfigSchema, RuntimeDependencyNodeSchema, RuntimeLineageSchema, RuntimePluginConfigSchema, SharedConfigSchema, SharedDepConfigSchema, SharedDepMapSchema, SlotPinSchema, SourceModeSchema, StarterLevelConfigSchema, StarterLevelSchema, UiConfigSchema };
//# sourceMappingURL=types.mjs.map