@workglow/task-graph 0.2.31 → 0.2.32
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.js +119 -11
- package/dist/browser.js.map +7 -6
- package/dist/bun.js +119 -11
- package/dist/bun.js.map +7 -6
- package/dist/node.js +119 -11
- package/dist/node.js.map +7 -6
- package/dist/task/EntitlementProfile.d.ts +136 -0
- package/dist/task/EntitlementProfile.d.ts.map +1 -0
- package/dist/task/EntitlementProfiles.d.ts +6 -6
- package/dist/task/EntitlementProfiles.d.ts.map +1 -1
- package/dist/task/index.d.ts +1 -0
- package/dist/task/index.d.ts.map +1 -1
- package/package.json +7 -7
package/dist/browser.js
CHANGED
|
@@ -6439,6 +6439,111 @@ function registerBuiltInTransforms() {
|
|
|
6439
6439
|
for (const t of all)
|
|
6440
6440
|
TransformRegistry.registerTransform(t);
|
|
6441
6441
|
}
|
|
6442
|
+
// src/task/EntitlementProfile.ts
|
|
6443
|
+
import { createServiceToken as createServiceToken5 } from "@workglow/util";
|
|
6444
|
+
var STATIC_SIGNAL_SOURCE = Object.freeze({
|
|
6445
|
+
subscribe(_listener) {
|
|
6446
|
+
return () => {};
|
|
6447
|
+
}
|
|
6448
|
+
});
|
|
6449
|
+
function createPolicyProfile(name, policy, options = {}) {
|
|
6450
|
+
const enforcer = createPolicyEnforcer(policy, options.resolver);
|
|
6451
|
+
const signalSource = options.signalSource ?? STATIC_SIGNAL_SOURCE;
|
|
6452
|
+
const listeners = new Set;
|
|
6453
|
+
const lastOutcome = new Map;
|
|
6454
|
+
const lastEntitlement = new Map;
|
|
6455
|
+
let disposed = false;
|
|
6456
|
+
function key(e) {
|
|
6457
|
+
const resources = e.resources === undefined ? null : [...e.resources].sort();
|
|
6458
|
+
return `${e.id}|${JSON.stringify(resources)}`;
|
|
6459
|
+
}
|
|
6460
|
+
async function evaluate(e) {
|
|
6461
|
+
if (e.optional)
|
|
6462
|
+
return "granted";
|
|
6463
|
+
const denials = await enforcer.checkAll({ entitlements: [e] });
|
|
6464
|
+
return denials.length === 0 ? "granted" : "denied";
|
|
6465
|
+
}
|
|
6466
|
+
async function emitFlipFor(e) {
|
|
6467
|
+
const k = key(e);
|
|
6468
|
+
const previous = lastOutcome.get(k);
|
|
6469
|
+
if (previous === undefined)
|
|
6470
|
+
return;
|
|
6471
|
+
const current = await evaluate(e);
|
|
6472
|
+
if (disposed)
|
|
6473
|
+
return;
|
|
6474
|
+
if (current === previous)
|
|
6475
|
+
return;
|
|
6476
|
+
lastOutcome.set(k, current);
|
|
6477
|
+
const event = {
|
|
6478
|
+
kind: current === "granted" ? "granted" : "revoked",
|
|
6479
|
+
entitlement: e
|
|
6480
|
+
};
|
|
6481
|
+
for (const l of listeners) {
|
|
6482
|
+
try {
|
|
6483
|
+
l(event);
|
|
6484
|
+
} catch (err) {
|
|
6485
|
+
console.error(`[EntitlementProfile:${name}] listener threw:`, err);
|
|
6486
|
+
}
|
|
6487
|
+
}
|
|
6488
|
+
}
|
|
6489
|
+
function safeEmitFlipFor(e) {
|
|
6490
|
+
emitFlipFor(e).catch((err) => {
|
|
6491
|
+
console.error(`[EntitlementProfile:${name}] error evaluating signal:`, err);
|
|
6492
|
+
});
|
|
6493
|
+
}
|
|
6494
|
+
const sourceUnsub = signalSource.subscribe((signal) => {
|
|
6495
|
+
if (disposed)
|
|
6496
|
+
return;
|
|
6497
|
+
if (signal.kind === "reload") {
|
|
6498
|
+
for (const [, e] of lastEntitlement) {
|
|
6499
|
+
safeEmitFlipFor(e);
|
|
6500
|
+
}
|
|
6501
|
+
} else {
|
|
6502
|
+
safeEmitFlipFor(signal.entitlement);
|
|
6503
|
+
}
|
|
6504
|
+
});
|
|
6505
|
+
const profile = {
|
|
6506
|
+
name,
|
|
6507
|
+
checkAll: enforcer.checkAll.bind(enforcer),
|
|
6508
|
+
checkTask: enforcer.checkTask.bind(enforcer),
|
|
6509
|
+
surface: () => policy.grant,
|
|
6510
|
+
async requestEntitlement(required) {
|
|
6511
|
+
if (required.optional) {
|
|
6512
|
+
return { outcome: "granted", entitlement: required };
|
|
6513
|
+
}
|
|
6514
|
+
const denials = await enforcer.checkAll({ entitlements: [required] });
|
|
6515
|
+
const k = key(required);
|
|
6516
|
+
lastEntitlement.set(k, required);
|
|
6517
|
+
if (denials.length === 0) {
|
|
6518
|
+
lastOutcome.set(k, "granted");
|
|
6519
|
+
return { outcome: "granted", entitlement: required };
|
|
6520
|
+
}
|
|
6521
|
+
lastOutcome.set(k, "denied");
|
|
6522
|
+
return { outcome: "denied", denial: denials[0] };
|
|
6523
|
+
},
|
|
6524
|
+
subscribe(listener) {
|
|
6525
|
+
listeners.add(listener);
|
|
6526
|
+
let unsubbed = false;
|
|
6527
|
+
return () => {
|
|
6528
|
+
if (unsubbed)
|
|
6529
|
+
return;
|
|
6530
|
+
unsubbed = true;
|
|
6531
|
+
listeners.delete(listener);
|
|
6532
|
+
};
|
|
6533
|
+
},
|
|
6534
|
+
async dispose() {
|
|
6535
|
+
if (disposed)
|
|
6536
|
+
return;
|
|
6537
|
+
disposed = true;
|
|
6538
|
+
sourceUnsub();
|
|
6539
|
+
listeners.clear();
|
|
6540
|
+
lastOutcome.clear();
|
|
6541
|
+
lastEntitlement.clear();
|
|
6542
|
+
}
|
|
6543
|
+
};
|
|
6544
|
+
return profile;
|
|
6545
|
+
}
|
|
6546
|
+
var ENTITLEMENT_PROFILE = createServiceToken5("workglow.entitlementProfile");
|
|
6442
6547
|
// src/task/EntitlementProfiles.ts
|
|
6443
6548
|
var BROWSER_GRANTS = [
|
|
6444
6549
|
{ id: Entitlements.NETWORK_HTTP },
|
|
@@ -6473,8 +6578,8 @@ var PROFILE_GRANTS = {
|
|
|
6473
6578
|
function createProfilePolicy(profile) {
|
|
6474
6579
|
return { deny: [], grant: PROFILE_GRANTS[profile], ask: [] };
|
|
6475
6580
|
}
|
|
6476
|
-
function createProfileEnforcer(profile,
|
|
6477
|
-
return
|
|
6581
|
+
function createProfileEnforcer(profile, options) {
|
|
6582
|
+
return createPolicyProfile(profile, createProfilePolicy(profile), options);
|
|
6478
6583
|
}
|
|
6479
6584
|
function getProfileGrants(profile) {
|
|
6480
6585
|
return PROFILE_GRANTS[profile];
|
|
@@ -8060,15 +8165,15 @@ import {
|
|
|
8060
8165
|
JobQueueServer
|
|
8061
8166
|
} from "@workglow/job-queue";
|
|
8062
8167
|
import { InMemoryQueueStorage } from "@workglow/job-queue";
|
|
8063
|
-
import { createServiceToken as
|
|
8064
|
-
var JOB_QUEUE_FACTORY =
|
|
8168
|
+
import { createServiceToken as createServiceToken6, globalServiceRegistry as globalServiceRegistry4 } from "@workglow/util";
|
|
8169
|
+
var JOB_QUEUE_FACTORY = createServiceToken6("taskgraph.jobQueueFactory");
|
|
8065
8170
|
var defaultJobQueueFactory = async ({
|
|
8066
8171
|
queueName,
|
|
8067
8172
|
jobClass,
|
|
8068
8173
|
options
|
|
8069
8174
|
}) => {
|
|
8070
8175
|
const storage = options?.storage ?? new InMemoryQueueStorage(queueName);
|
|
8071
|
-
await storage.
|
|
8176
|
+
await storage.migrate();
|
|
8072
8177
|
const server = new JobQueueServer(jobClass, {
|
|
8073
8178
|
storage,
|
|
8074
8179
|
queueName,
|
|
@@ -8102,7 +8207,7 @@ function createJobQueueFactoryWithOptions(defaultOptions = {}) {
|
|
|
8102
8207
|
...options ?? {}
|
|
8103
8208
|
};
|
|
8104
8209
|
const storage = mergedOptions.storage ?? new InMemoryQueueStorage(queueName);
|
|
8105
|
-
await storage.
|
|
8210
|
+
await storage.migrate();
|
|
8106
8211
|
const server = new JobQueueServer(jobClass, {
|
|
8107
8212
|
storage,
|
|
8108
8213
|
queueName,
|
|
@@ -8326,7 +8431,7 @@ queueMicrotask(() => {
|
|
|
8326
8431
|
});
|
|
8327
8432
|
// src/task/TaskRegistry.ts
|
|
8328
8433
|
import {
|
|
8329
|
-
createServiceToken as
|
|
8434
|
+
createServiceToken as createServiceToken7,
|
|
8330
8435
|
getLogger as getLogger9,
|
|
8331
8436
|
globalServiceRegistry as globalServiceRegistry5,
|
|
8332
8437
|
registerInputCompactor,
|
|
@@ -8366,7 +8471,7 @@ var TaskRegistry = {
|
|
|
8366
8471
|
registerTask,
|
|
8367
8472
|
unregisterTask
|
|
8368
8473
|
};
|
|
8369
|
-
var TASK_CONSTRUCTORS =
|
|
8474
|
+
var TASK_CONSTRUCTORS = createServiceToken7("task.constructors");
|
|
8370
8475
|
function getGlobalTaskConstructors() {
|
|
8371
8476
|
return globalServiceRegistry5.get(TASK_CONSTRUCTORS);
|
|
8372
8477
|
}
|
|
@@ -8535,8 +8640,8 @@ var registerBaseTasks = () => {
|
|
|
8535
8640
|
return tasks;
|
|
8536
8641
|
};
|
|
8537
8642
|
// src/storage/TaskGraphRepository.ts
|
|
8538
|
-
import { createServiceToken as
|
|
8539
|
-
var TASK_GRAPH_REPOSITORY =
|
|
8643
|
+
import { createServiceToken as createServiceToken8, EventEmitter as EventEmitter7 } from "@workglow/util";
|
|
8644
|
+
var TASK_GRAPH_REPOSITORY = createServiceToken8("taskgraph.taskGraphRepository");
|
|
8540
8645
|
|
|
8541
8646
|
class TaskGraphRepository {
|
|
8542
8647
|
type = "TaskGraphRepository";
|
|
@@ -9423,6 +9528,7 @@ export {
|
|
|
9423
9528
|
createScopedEnforcer,
|
|
9424
9529
|
createProfilePolicy,
|
|
9425
9530
|
createProfileEnforcer,
|
|
9531
|
+
createPolicyProfile,
|
|
9426
9532
|
createPolicyEnforcer,
|
|
9427
9533
|
createJobQueueFactoryWithOptions,
|
|
9428
9534
|
createGraphFromGraphJSON,
|
|
@@ -9487,6 +9593,7 @@ export {
|
|
|
9487
9593
|
TASK_CONSTRUCTORS,
|
|
9488
9594
|
StreamPump,
|
|
9489
9595
|
StreamProcessor,
|
|
9596
|
+
STATIC_SIGNAL_SOURCE,
|
|
9490
9597
|
SERVER_GRANTS,
|
|
9491
9598
|
RunScheduler,
|
|
9492
9599
|
RunContext,
|
|
@@ -9512,6 +9619,7 @@ export {
|
|
|
9512
9619
|
Entitlements,
|
|
9513
9620
|
EdgeMaterializer,
|
|
9514
9621
|
ENTITLEMENT_RESOLVER,
|
|
9622
|
+
ENTITLEMENT_PROFILE,
|
|
9515
9623
|
ENTITLEMENT_ENFORCER,
|
|
9516
9624
|
EMPTY_POLICY,
|
|
9517
9625
|
EMPTY_ENTITLEMENTS,
|
|
@@ -9530,4 +9638,4 @@ export {
|
|
|
9530
9638
|
BROWSER_GRANTS
|
|
9531
9639
|
};
|
|
9532
9640
|
|
|
9533
|
-
//# debugId=
|
|
9641
|
+
//# debugId=2DFEBA289E537DDA64756E2164756E21
|