@bluelibs/runner 5.0.0 → 5.1.0
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/dist/browser/index.cjs +201 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.mts +32 -3
- package/dist/browser/index.d.ts +32 -3
- package/dist/browser/index.mjs +201 -2
- package/dist/browser/index.mjs.map +1 -1
- package/dist/edge/index.cjs +201 -2
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.d.mts +32 -3
- package/dist/edge/index.d.ts +32 -3
- package/dist/edge/index.mjs +201 -2
- package/dist/edge/index.mjs.map +1 -1
- package/dist/node/node.cjs +201 -2
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.d.mts +32 -3
- package/dist/node/node.d.ts +32 -3
- package/dist/node/node.mjs +201 -2
- package/dist/node/node.mjs.map +1 -1
- package/dist/universal/index.cjs +201 -2
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.mts +32 -3
- package/dist/universal/index.d.ts +32 -3
- package/dist/universal/index.mjs +201 -2
- package/dist/universal/index.mjs.map +1 -1
- package/package.json +1 -1
- package/readmes/AI.md +4 -3
package/dist/browser/index.cjs
CHANGED
|
@@ -166,6 +166,9 @@ var symbolPhantomTask = Symbol.for(
|
|
|
166
166
|
"runner.task.phantom"
|
|
167
167
|
);
|
|
168
168
|
var symbolResource = Symbol.for("runner.resource");
|
|
169
|
+
var symbolResourceForkedFrom = Symbol.for(
|
|
170
|
+
"runner.resourceForkedFrom"
|
|
171
|
+
);
|
|
169
172
|
var symbolResourceWithConfig = Symbol.for(
|
|
170
173
|
"runner.resourceWithConfig"
|
|
171
174
|
);
|
|
@@ -898,6 +901,7 @@ __export(defs_exports, {
|
|
|
898
901
|
symbolOptionalDependency: () => symbolOptionalDependency,
|
|
899
902
|
symbolPhantomTask: () => symbolPhantomTask,
|
|
900
903
|
symbolResource: () => symbolResource,
|
|
904
|
+
symbolResourceForkedFrom: () => symbolResourceForkedFrom,
|
|
901
905
|
symbolResourceMiddleware: () => symbolResourceMiddleware,
|
|
902
906
|
symbolResourceWithConfig: () => symbolResourceWithConfig,
|
|
903
907
|
symbolTag: () => symbolTag,
|
|
@@ -1064,6 +1068,188 @@ function defineHook(hookDef) {
|
|
|
1064
1068
|
}
|
|
1065
1069
|
__name(defineHook, "defineHook");
|
|
1066
1070
|
|
|
1071
|
+
// src/definers/resourceFork.ts
|
|
1072
|
+
function resolveReId(forkId, options) {
|
|
1073
|
+
const fallback = /* @__PURE__ */ __name((id2) => `${forkId}.${id2}`, "fallback");
|
|
1074
|
+
const reId = options?.reId ?? fallback;
|
|
1075
|
+
return (id2) => {
|
|
1076
|
+
const next = reId(id2);
|
|
1077
|
+
if (typeof next !== "string" || next.length === 0) {
|
|
1078
|
+
throw new Error(`fork(reId) must return a non-empty string for "${id2}"`);
|
|
1079
|
+
}
|
|
1080
|
+
return next;
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1083
|
+
__name(resolveReId, "resolveReId");
|
|
1084
|
+
function remapResourceDependenciesInObject(deps, options) {
|
|
1085
|
+
const remapObject = /* @__PURE__ */ __name((deps2) => {
|
|
1086
|
+
const out = { ...deps2 };
|
|
1087
|
+
for (const [key, value] of Object.entries(deps2)) {
|
|
1088
|
+
if (isOptional(value)) {
|
|
1089
|
+
const inner = value.inner;
|
|
1090
|
+
if (isResource(inner)) {
|
|
1091
|
+
const forked = options.getForkedResourceByBaseId(inner.id);
|
|
1092
|
+
if (forked) {
|
|
1093
|
+
out[key] = { ...value, inner: forked };
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
continue;
|
|
1097
|
+
}
|
|
1098
|
+
if (isResource(value)) {
|
|
1099
|
+
const forked = options.getForkedResourceByBaseId(value.id);
|
|
1100
|
+
if (forked) {
|
|
1101
|
+
out[key] = forked;
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
return out;
|
|
1106
|
+
}, "remapObject");
|
|
1107
|
+
return remapObject(deps);
|
|
1108
|
+
}
|
|
1109
|
+
__name(remapResourceDependenciesInObject, "remapResourceDependenciesInObject");
|
|
1110
|
+
function toResourceOnlyRegisterItems(items) {
|
|
1111
|
+
const out = [];
|
|
1112
|
+
for (const item of items) {
|
|
1113
|
+
if (isResourceWithConfig(item)) {
|
|
1114
|
+
out.push({
|
|
1115
|
+
kind: "withConfig",
|
|
1116
|
+
resource: item.resource,
|
|
1117
|
+
config: item.config
|
|
1118
|
+
});
|
|
1119
|
+
continue;
|
|
1120
|
+
}
|
|
1121
|
+
if (isResource(item)) {
|
|
1122
|
+
out.push({ kind: "resource", resource: item });
|
|
1123
|
+
continue;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
return out;
|
|
1127
|
+
}
|
|
1128
|
+
__name(toResourceOnlyRegisterItems, "toResourceOnlyRegisterItems");
|
|
1129
|
+
function createDeepForkContext(forkId, options) {
|
|
1130
|
+
const reId = resolveReId(forkId, options);
|
|
1131
|
+
const forkedResourceByBaseId = /* @__PURE__ */ new Map();
|
|
1132
|
+
const ensureForked = /* @__PURE__ */ __name((base) => {
|
|
1133
|
+
const cached = forkedResourceByBaseId.get(base.id);
|
|
1134
|
+
if (cached) return cached;
|
|
1135
|
+
const forked = base.fork(reId(base.id), { register: "drop" });
|
|
1136
|
+
forkedResourceByBaseId.set(base.id, forked);
|
|
1137
|
+
const baseRegister = base.register;
|
|
1138
|
+
const ensureForkedForRegisterConfig = /* @__PURE__ */ __name((config) => {
|
|
1139
|
+
const items = typeof baseRegister === "function" ? baseRegister(config) : baseRegister;
|
|
1140
|
+
for (const candidate of toResourceOnlyRegisterItems(items)) {
|
|
1141
|
+
ensureForked(candidate.resource);
|
|
1142
|
+
}
|
|
1143
|
+
return items;
|
|
1144
|
+
}, "ensureForkedForRegisterConfig");
|
|
1145
|
+
const mapRegisterItems2 = /* @__PURE__ */ __name((items) => {
|
|
1146
|
+
const resourceItems = toResourceOnlyRegisterItems(items);
|
|
1147
|
+
const out = [];
|
|
1148
|
+
for (const candidate of resourceItems) {
|
|
1149
|
+
if (candidate.kind === "resource") {
|
|
1150
|
+
out.push(ensureForked(candidate.resource));
|
|
1151
|
+
continue;
|
|
1152
|
+
}
|
|
1153
|
+
out.push(ensureForked(candidate.resource).with(candidate.config));
|
|
1154
|
+
}
|
|
1155
|
+
return out;
|
|
1156
|
+
}, "mapRegisterItems");
|
|
1157
|
+
forked.register = typeof baseRegister === "function" ? (config) => {
|
|
1158
|
+
const items = ensureForkedForRegisterConfig(config);
|
|
1159
|
+
return mapRegisterItems2(items);
|
|
1160
|
+
} : (() => {
|
|
1161
|
+
ensureForkedForRegisterConfig(void 0);
|
|
1162
|
+
return mapRegisterItems2(baseRegister);
|
|
1163
|
+
})();
|
|
1164
|
+
const baseDependencies = base.dependencies;
|
|
1165
|
+
const remapDepsObject = /* @__PURE__ */ __name((deps) => remapResourceDependenciesInObject(deps, {
|
|
1166
|
+
getForkedResourceByBaseId: /* @__PURE__ */ __name((id2) => forkedResourceByBaseId.get(id2), "getForkedResourceByBaseId")
|
|
1167
|
+
}), "remapDepsObject");
|
|
1168
|
+
if (!baseDependencies) {
|
|
1169
|
+
forked.dependencies = baseDependencies;
|
|
1170
|
+
} else {
|
|
1171
|
+
forked.dependencies = (config) => {
|
|
1172
|
+
ensureForkedForRegisterConfig(config);
|
|
1173
|
+
const deps = typeof baseDependencies === "function" ? baseDependencies(config) : baseDependencies;
|
|
1174
|
+
return remapDepsObject(deps);
|
|
1175
|
+
};
|
|
1176
|
+
}
|
|
1177
|
+
return forked;
|
|
1178
|
+
}, "ensureForked");
|
|
1179
|
+
const ensureForkedForRegisterItems = /* @__PURE__ */ __name((items) => {
|
|
1180
|
+
for (const candidate of toResourceOnlyRegisterItems(items)) {
|
|
1181
|
+
ensureForked(candidate.resource);
|
|
1182
|
+
}
|
|
1183
|
+
}, "ensureForkedForRegisterItems");
|
|
1184
|
+
const mapRegisterItems = /* @__PURE__ */ __name((items) => {
|
|
1185
|
+
ensureForkedForRegisterItems(items);
|
|
1186
|
+
const resourceItems = toResourceOnlyRegisterItems(items);
|
|
1187
|
+
const out = [];
|
|
1188
|
+
for (const candidate of resourceItems) {
|
|
1189
|
+
if (candidate.kind === "resource") {
|
|
1190
|
+
out.push(ensureForked(candidate.resource));
|
|
1191
|
+
continue;
|
|
1192
|
+
}
|
|
1193
|
+
out.push(ensureForked(candidate.resource).with(candidate.config));
|
|
1194
|
+
}
|
|
1195
|
+
return out;
|
|
1196
|
+
}, "mapRegisterItems");
|
|
1197
|
+
const remapDependencies = /* @__PURE__ */ __name((dependencies) => {
|
|
1198
|
+
if (!dependencies) return dependencies;
|
|
1199
|
+
const remapObj = /* @__PURE__ */ __name((deps) => remapResourceDependenciesInObject(deps, {
|
|
1200
|
+
getForkedResourceByBaseId: /* @__PURE__ */ __name((id2) => forkedResourceByBaseId.get(id2), "getForkedResourceByBaseId")
|
|
1201
|
+
}), "remapObj");
|
|
1202
|
+
if (typeof dependencies === "function") {
|
|
1203
|
+
return (config) => remapObj(dependencies(config));
|
|
1204
|
+
}
|
|
1205
|
+
return remapObj(dependencies);
|
|
1206
|
+
}, "remapDependencies");
|
|
1207
|
+
return {
|
|
1208
|
+
reId,
|
|
1209
|
+
ensureForkedForRegisterItems,
|
|
1210
|
+
mapRegisterItems,
|
|
1211
|
+
remapDependencies,
|
|
1212
|
+
getForkedResourceByBaseId: /* @__PURE__ */ __name((id2) => forkedResourceByBaseId.get(id2), "getForkedResourceByBaseId")
|
|
1213
|
+
};
|
|
1214
|
+
}
|
|
1215
|
+
__name(createDeepForkContext, "createDeepForkContext");
|
|
1216
|
+
function resolveForkedRegisterAndDependencies(params) {
|
|
1217
|
+
const { register, dependencies, forkId, options } = params;
|
|
1218
|
+
const mode = options?.register ?? "keep";
|
|
1219
|
+
if (mode === "drop") {
|
|
1220
|
+
return { register: [], dependencies };
|
|
1221
|
+
}
|
|
1222
|
+
if (mode !== "deep") {
|
|
1223
|
+
return { register, dependencies };
|
|
1224
|
+
}
|
|
1225
|
+
if (!register) {
|
|
1226
|
+
return { register, dependencies };
|
|
1227
|
+
}
|
|
1228
|
+
const ctx = createDeepForkContext(forkId, options);
|
|
1229
|
+
if (typeof register === "function") {
|
|
1230
|
+
return {
|
|
1231
|
+
register: /* @__PURE__ */ __name((config) => {
|
|
1232
|
+
const baseItems = register(config);
|
|
1233
|
+
return ctx.mapRegisterItems(baseItems);
|
|
1234
|
+
}, "register"),
|
|
1235
|
+
dependencies: dependencies ? (config) => {
|
|
1236
|
+
const baseItems = register(config);
|
|
1237
|
+
ctx.ensureForkedForRegisterItems(baseItems);
|
|
1238
|
+
const baseDeps = typeof dependencies === "function" ? dependencies(config) : dependencies;
|
|
1239
|
+
return remapResourceDependenciesInObject(baseDeps, {
|
|
1240
|
+
getForkedResourceByBaseId: ctx.getForkedResourceByBaseId
|
|
1241
|
+
});
|
|
1242
|
+
} : dependencies
|
|
1243
|
+
};
|
|
1244
|
+
}
|
|
1245
|
+
ctx.ensureForkedForRegisterItems(register);
|
|
1246
|
+
return {
|
|
1247
|
+
register: ctx.mapRegisterItems(register),
|
|
1248
|
+
dependencies: ctx.remapDependencies(dependencies)
|
|
1249
|
+
};
|
|
1250
|
+
}
|
|
1251
|
+
__name(resolveForkedRegisterAndDependencies, "resolveForkedRegisterAndDependencies");
|
|
1252
|
+
|
|
1067
1253
|
// src/definers/defineResource.ts
|
|
1068
1254
|
function defineResource(constConfig) {
|
|
1069
1255
|
const filePath = constConfig[symbolFilePath] || getCallerFile();
|
|
@@ -1109,12 +1295,25 @@ function defineResource(constConfig) {
|
|
|
1109
1295
|
[symbolOptionalDependency]: true
|
|
1110
1296
|
};
|
|
1111
1297
|
},
|
|
1112
|
-
fork(newId) {
|
|
1113
|
-
|
|
1298
|
+
fork(newId, options) {
|
|
1299
|
+
const forkedParts = resolveForkedRegisterAndDependencies({
|
|
1300
|
+
register: constConfig.register,
|
|
1301
|
+
dependencies: constConfig.dependencies,
|
|
1302
|
+
forkId: newId,
|
|
1303
|
+
options
|
|
1304
|
+
});
|
|
1305
|
+
const forked = defineResource({
|
|
1114
1306
|
...constConfig,
|
|
1115
1307
|
id: newId,
|
|
1308
|
+
register: forkedParts.register,
|
|
1309
|
+
dependencies: forkedParts.dependencies,
|
|
1116
1310
|
[symbolFilePath]: filePath
|
|
1117
1311
|
});
|
|
1312
|
+
forked[symbolResourceForkedFrom] = {
|
|
1313
|
+
fromId: id2,
|
|
1314
|
+
forkedAtFilePath: getCallerFile()
|
|
1315
|
+
};
|
|
1316
|
+
return forked;
|
|
1118
1317
|
}
|
|
1119
1318
|
};
|
|
1120
1319
|
}
|