





















@@ -16,12 +16,29 @@ type ChannelPackageStateChecker = (params: {
1616type ChannelPackageStateMetadata = {
1717specifier?: string;
1818exportName?: string;
19+env?: {
20+allOf?: readonly string[];
21+anyOf?: readonly string[];
22+};
1923};
20242125export type ChannelPackageStateMetadataKey = "configuredState" | "persistedAuthState";
22262327const log = createSubsystemLogger("channels");
242829+function normalizeStringList(value: unknown): string[] {
30+if (!Array.isArray(value)) {
31+return [];
32+}
33+return value
34+.map((entry) => normalizeOptionalString(entry))
35+.filter((entry): entry is string => Boolean(entry));
36+}
37+38+function hasNonEmptyEnvValue(env: NodeJS.ProcessEnv | undefined, key: string): boolean {
39+return typeof env?.[key] === "string" && env[key].trim().length > 0;
40+}
41+2542function resolveChannelPackageStateMetadata(
2643entry: PluginChannelCatalogEntry,
2744metadataKey: ChannelPackageStateMetadataKey,
@@ -32,10 +49,17 @@ function resolveChannelPackageStateMetadata(
3249}
3350const specifier = normalizeOptionalString(metadata.specifier) ?? "";
3451const exportName = normalizeOptionalString(metadata.exportName) ?? "";
35-if (!specifier || !exportName) {
52+const allOf = normalizeStringList(metadata.env?.allOf);
53+const anyOf = normalizeStringList(metadata.env?.anyOf);
54+const env = allOf.length > 0 || anyOf.length > 0 ? { allOf, anyOf } : undefined;
55+if ((!specifier || !exportName) && !env) {
3656return null;
3757}
38-return { specifier, exportName };
58+return {
59+ ...(specifier ? { specifier } : {}),
60+ ...(exportName ? { exportName } : {}),
61+ ...(env ? { env } : {}),
62+};
3963}
40644165function listChannelPackageStateCatalog(
@@ -55,6 +79,17 @@ function resolveChannelPackageStateChecker(params: {
5579return null;
5680}
578182+if (metadata.env) {
83+return ({ env }) => {
84+const allOf = metadata.env?.allOf ?? [];
85+const anyOf = metadata.env?.anyOf ?? [];
86+return (
87+(allOf.length === 0 || allOf.every((key) => hasNonEmptyEnvValue(env, key))) &&
88+(anyOf.length === 0 || anyOf.some((key) => hasNonEmptyEnvValue(env, key)))
89+);
90+};
91+}
92+5893try {
5994const moduleExport = loadChannelPluginModule({
6095modulePath: resolveExistingPluginModulePath(params.entry.rootDir, metadata.specifier!),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。