silgi 0.8.29 → 0.8.31

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.31";
2
2
  const devDependencies = {
3
3
  "@antfu/eslint-config": "^4.2.0",
4
4
  "@fastify/deepmerge": "^2.0.2",
@@ -35,6 +35,14 @@ import 'std-env';
35
35
  import 'consola/utils';
36
36
  import 'escape-string-regexp';
37
37
 
38
+ async function emptyFramework(silgi) {
39
+ if (silgi.options.preset === "npm-package" || !silgi.options.preset) {
40
+ silgi.hook("after:prepare:schema.ts", (data) => {
41
+ data.unshift("type FrameworkContextExtends = {}");
42
+ });
43
+ }
44
+ }
45
+
38
46
  async function h3Framework(silgi, skip = false) {
39
47
  if (silgi.options.preset !== "h3" && skip === false)
40
48
  return;
@@ -128,7 +136,7 @@ async function nuxtFramework(silgi, skip = false) {
128
136
  await nitroFramework(silgi, true);
129
137
  }
130
138
 
131
- const frameworkSetup = [h3Framework, nitroFramework, nuxtFramework];
139
+ const frameworkSetup = [emptyFramework, h3Framework, nitroFramework, nuxtFramework];
132
140
 
133
141
  async function prepare$1(_silgi) {
134
142
  }
@@ -1050,7 +1058,7 @@ function createDependencyGraph(modules) {
1050
1058
  if (key) {
1051
1059
  graph.set(key, /* @__PURE__ */ new Set());
1052
1060
  inDegree.set(key, 0);
1053
- dependencyRelations.set(key, { before: [], after: [] });
1061
+ dependencyRelations.set(key, { required: [], before: [], after: [] });
1054
1062
  logger$1.debug(`Module registered: ${key}`);
1055
1063
  }
1056
1064
  });
@@ -1058,15 +1066,22 @@ function createDependencyGraph(modules) {
1058
1066
  const key = module.meta?.configKey;
1059
1067
  if (!key)
1060
1068
  return;
1069
+ const requiredDeps = module.meta?.requiredDependencies || [];
1061
1070
  const beforeDeps = module.meta?.beforeDependencies || [];
1062
1071
  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(", ")}`);
1072
+ const missingRequired = requiredDeps.filter((dep) => !graph.has(dep));
1073
+ if (missingRequired.length > 0) {
1074
+ throw new Error(`Module ${key} is missing required dependencies: ${missingRequired.join(", ")}`);
1075
+ }
1076
+ const allDeps = /* @__PURE__ */ new Set([...requiredDeps, ...beforeDeps, ...afterDeps]);
1077
+ if (allDeps.size < requiredDeps.length + beforeDeps.length + afterDeps.length) {
1078
+ logger$1.error(`Module ${key} has overlapping dependencies`);
1066
1079
  return;
1067
1080
  }
1068
1081
  logger$1.debug(`
1069
1082
  Module ${key} dependencies:`);
1083
+ if (requiredDeps.length)
1084
+ logger$1.debug(` Required: ${requiredDeps.join(", ")}`);
1070
1085
  if (beforeDeps.length)
1071
1086
  logger$1.debug(` Must run after: ${beforeDeps.join(", ")}`);
1072
1087
  if (afterDeps.length)
@@ -1076,31 +1091,41 @@ Module ${key} dependencies:`);
1076
1091
  const key = module.meta?.configKey;
1077
1092
  if (!key)
1078
1093
  return;
1094
+ const requiredDeps = module.meta?.requiredDependencies || [];
1079
1095
  const beforeDeps = module.meta?.beforeDependencies || [];
1080
1096
  const afterDeps = module.meta?.afterDependencies || [];
1097
+ requiredDeps.forEach((dep) => {
1098
+ if (!graph.has(dep)) {
1099
+ throw new Error(`Required dependency "${dep}" for module "${key}" is missing`);
1100
+ }
1101
+ graph.get(dep)?.add(key);
1102
+ inDegree.set(key, (inDegree.get(key) || 0) + 1);
1103
+ logger$1.debug(`${key} requires ${dep}`);
1104
+ });
1081
1105
  beforeDeps.forEach((dep) => {
1082
1106
  if (!graph.has(dep)) {
1083
- logger$1.warn(`Missing module: ${dep} required by ${key}`);
1107
+ logger$1.debug(`Optional dependency for ${key}: "${dep}" (beforeDependencies) not found, skipping`);
1084
1108
  return;
1085
1109
  }
1086
1110
  graph.get(dep)?.add(key);
1087
1111
  inDegree.set(key, (inDegree.get(key) || 0) + 1);
1088
- logger$1.debug(`${key} depends on ${dep}`);
1112
+ logger$1.debug(`${key} will run after ${dep}`);
1089
1113
  });
1090
1114
  afterDeps.forEach((dep) => {
1091
- if (!graph.has(key)) {
1092
- logger$1.warn(`Missing module: ${key} required by ${dep}`);
1115
+ if (!graph.has(dep)) {
1116
+ logger$1.debug(`Optional dependency for ${key}: "${dep}" (afterDependencies) not found, skipping`);
1093
1117
  return;
1094
1118
  }
1095
1119
  graph.get(key)?.add(dep);
1096
1120
  inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
1097
- logger$1.debug(`${dep} depends on ${key}`);
1121
+ logger$1.debug(`${key} will run before ${dep}`);
1098
1122
  });
1099
1123
  });
1100
1124
  logger$1.debug("\nDependency Graph:");
1101
1125
  for (const [module, deps] of graph.entries()) {
1102
1126
  const depsStr = Array.from(deps).join(", ");
1103
- logger$1.debug(`${module} -> [${depsStr}] (in-degree: ${inDegree.get(module)})`);
1127
+ const required = dependencyRelations.get(module)?.required || [];
1128
+ logger$1.debug(`${module} -> [${depsStr}] (required: ${required.join(", ")}) (in-degree: ${inDegree.get(module)})`);
1104
1129
  }
1105
1130
  return { graph, inDegree };
1106
1131
  }
@@ -1144,9 +1169,6 @@ function topologicalSort(graphData) {
1144
1169
  logger$1.debug(`Adding initial module: ${node} (no dependencies)`);
1145
1170
  }
1146
1171
  }
1147
- if (queue.length === 0) {
1148
- logger$1.warn("No modules without dependencies found - possible circular reference");
1149
- }
1150
1172
  while (queue.length > 0) {
1151
1173
  const node = queue.shift();
1152
1174
  order.push(node);
@@ -1,4 +1,4 @@
1
- const version = "0.8.29";
1
+ const version = "0.8.31";
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.31";
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.31",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {