silgi 0.8.29 → 0.8.30

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.
@@ -1,4 +1,4 @@
1
- const version = "0.8.29";
1
+ const version = "0.8.30";
2
2
  const devDependencies = {
3
3
  "@antfu/eslint-config": "^4.2.0",
4
4
  "@fastify/deepmerge": "^2.0.2",
@@ -1050,7 +1050,7 @@ function createDependencyGraph(modules) {
1050
1050
  if (key) {
1051
1051
  graph.set(key, /* @__PURE__ */ new Set());
1052
1052
  inDegree.set(key, 0);
1053
- dependencyRelations.set(key, { before: [], after: [] });
1053
+ dependencyRelations.set(key, { required: [], before: [], after: [] });
1054
1054
  logger$1.debug(`Module registered: ${key}`);
1055
1055
  }
1056
1056
  });
@@ -1058,15 +1058,22 @@ function createDependencyGraph(modules) {
1058
1058
  const key = module.meta?.configKey;
1059
1059
  if (!key)
1060
1060
  return;
1061
+ const requiredDeps = module.meta?.requiredDependencies || [];
1061
1062
  const beforeDeps = module.meta?.beforeDependencies || [];
1062
1063
  const afterDeps = module.meta?.afterDependencies || [];
1063
- const conflicts = beforeDeps.filter((dep) => afterDeps.includes(dep));
1064
- if (conflicts.length > 0) {
1065
- logger$1.error(`Module ${key} has conflicting dependencies: ${conflicts.join(", ")}`);
1064
+ const missingRequired = requiredDeps.filter((dep) => !graph.has(dep));
1065
+ if (missingRequired.length > 0) {
1066
+ throw new Error(`Module ${key} is missing required dependencies: ${missingRequired.join(", ")}`);
1067
+ }
1068
+ const allDeps = /* @__PURE__ */ new Set([...requiredDeps, ...beforeDeps, ...afterDeps]);
1069
+ if (allDeps.size < requiredDeps.length + beforeDeps.length + afterDeps.length) {
1070
+ logger$1.error(`Module ${key} has overlapping dependencies`);
1066
1071
  return;
1067
1072
  }
1068
1073
  logger$1.debug(`
1069
1074
  Module ${key} dependencies:`);
1075
+ if (requiredDeps.length)
1076
+ logger$1.debug(` Required: ${requiredDeps.join(", ")}`);
1070
1077
  if (beforeDeps.length)
1071
1078
  logger$1.debug(` Must run after: ${beforeDeps.join(", ")}`);
1072
1079
  if (afterDeps.length)
@@ -1076,31 +1083,41 @@ Module ${key} dependencies:`);
1076
1083
  const key = module.meta?.configKey;
1077
1084
  if (!key)
1078
1085
  return;
1086
+ const requiredDeps = module.meta?.requiredDependencies || [];
1079
1087
  const beforeDeps = module.meta?.beforeDependencies || [];
1080
1088
  const afterDeps = module.meta?.afterDependencies || [];
1089
+ requiredDeps.forEach((dep) => {
1090
+ if (!graph.has(dep)) {
1091
+ throw new Error(`Required dependency "${dep}" for module "${key}" is missing`);
1092
+ }
1093
+ graph.get(dep)?.add(key);
1094
+ inDegree.set(key, (inDegree.get(key) || 0) + 1);
1095
+ logger$1.debug(`${key} requires ${dep}`);
1096
+ });
1081
1097
  beforeDeps.forEach((dep) => {
1082
1098
  if (!graph.has(dep)) {
1083
- logger$1.warn(`Missing module: ${dep} required by ${key}`);
1099
+ logger$1.debug(`Optional dependency for ${key}: "${dep}" (beforeDependencies) not found, skipping`);
1084
1100
  return;
1085
1101
  }
1086
1102
  graph.get(dep)?.add(key);
1087
1103
  inDegree.set(key, (inDegree.get(key) || 0) + 1);
1088
- logger$1.debug(`${key} depends on ${dep}`);
1104
+ logger$1.debug(`${key} will run after ${dep}`);
1089
1105
  });
1090
1106
  afterDeps.forEach((dep) => {
1091
- if (!graph.has(key)) {
1092
- logger$1.warn(`Missing module: ${key} required by ${dep}`);
1107
+ if (!graph.has(dep)) {
1108
+ logger$1.debug(`Optional dependency for ${key}: "${dep}" (afterDependencies) not found, skipping`);
1093
1109
  return;
1094
1110
  }
1095
1111
  graph.get(key)?.add(dep);
1096
1112
  inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
1097
- logger$1.debug(`${dep} depends on ${key}`);
1113
+ logger$1.debug(`${key} will run before ${dep}`);
1098
1114
  });
1099
1115
  });
1100
1116
  logger$1.debug("\nDependency Graph:");
1101
1117
  for (const [module, deps] of graph.entries()) {
1102
1118
  const depsStr = Array.from(deps).join(", ");
1103
- logger$1.debug(`${module} -> [${depsStr}] (in-degree: ${inDegree.get(module)})`);
1119
+ const required = dependencyRelations.get(module)?.required || [];
1120
+ logger$1.debug(`${module} -> [${depsStr}] (required: ${required.join(", ")}) (in-degree: ${inDegree.get(module)})`);
1104
1121
  }
1105
1122
  return { graph, inDegree };
1106
1123
  }
@@ -1,4 +1,4 @@
1
- const version = "0.8.29";
1
+ const version = "0.8.30";
2
2
  const devDependencies = {
3
3
  "@antfu/eslint-config": "^4.2.0",
4
4
  "@fastify/deepmerge": "^2.0.2",
@@ -1,4 +1,4 @@
1
- const version = "0.8.29";
1
+ const version = "0.8.30";
2
2
  const devDependencies = {
3
3
  "@antfu/eslint-config": "^4.2.0",
4
4
  "@fastify/deepmerge": "^2.0.2",
@@ -469,6 +469,7 @@ interface ModuleMeta {
469
469
  _packageName?: string;
470
470
  readonly afterDependencies?: ReadonlyArray<string>;
471
471
  readonly beforeDependencies?: ReadonlyArray<string>;
472
+ readonly requiredDependencies?: ReadonlyArray<string>;
472
473
  [key: string]: unknown;
473
474
  }
474
475
  interface ResolvedModuleMeta extends ModuleMeta {
@@ -469,6 +469,7 @@ interface ModuleMeta {
469
469
  _packageName?: string;
470
470
  readonly afterDependencies?: ReadonlyArray<string>;
471
471
  readonly beforeDependencies?: ReadonlyArray<string>;
472
+ readonly requiredDependencies?: ReadonlyArray<string>;
472
473
  [key: string]: unknown;
473
474
  }
474
475
  interface ResolvedModuleMeta extends ModuleMeta {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "silgi",
3
3
  "type": "module",
4
- "version": "0.8.29",
4
+ "version": "0.8.30",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {