@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/bun.js CHANGED
@@ -6440,6 +6440,111 @@ function registerBuiltInTransforms() {
6440
6440
  for (const t of all)
6441
6441
  TransformRegistry.registerTransform(t);
6442
6442
  }
6443
+ // src/task/EntitlementProfile.ts
6444
+ import { createServiceToken as createServiceToken5 } from "@workglow/util";
6445
+ var STATIC_SIGNAL_SOURCE = Object.freeze({
6446
+ subscribe(_listener) {
6447
+ return () => {};
6448
+ }
6449
+ });
6450
+ function createPolicyProfile(name, policy, options = {}) {
6451
+ const enforcer = createPolicyEnforcer(policy, options.resolver);
6452
+ const signalSource = options.signalSource ?? STATIC_SIGNAL_SOURCE;
6453
+ const listeners = new Set;
6454
+ const lastOutcome = new Map;
6455
+ const lastEntitlement = new Map;
6456
+ let disposed = false;
6457
+ function key(e) {
6458
+ const resources = e.resources === undefined ? null : [...e.resources].sort();
6459
+ return `${e.id}|${JSON.stringify(resources)}`;
6460
+ }
6461
+ async function evaluate(e) {
6462
+ if (e.optional)
6463
+ return "granted";
6464
+ const denials = await enforcer.checkAll({ entitlements: [e] });
6465
+ return denials.length === 0 ? "granted" : "denied";
6466
+ }
6467
+ async function emitFlipFor(e) {
6468
+ const k = key(e);
6469
+ const previous = lastOutcome.get(k);
6470
+ if (previous === undefined)
6471
+ return;
6472
+ const current = await evaluate(e);
6473
+ if (disposed)
6474
+ return;
6475
+ if (current === previous)
6476
+ return;
6477
+ lastOutcome.set(k, current);
6478
+ const event = {
6479
+ kind: current === "granted" ? "granted" : "revoked",
6480
+ entitlement: e
6481
+ };
6482
+ for (const l of listeners) {
6483
+ try {
6484
+ l(event);
6485
+ } catch (err) {
6486
+ console.error(`[EntitlementProfile:${name}] listener threw:`, err);
6487
+ }
6488
+ }
6489
+ }
6490
+ function safeEmitFlipFor(e) {
6491
+ emitFlipFor(e).catch((err) => {
6492
+ console.error(`[EntitlementProfile:${name}] error evaluating signal:`, err);
6493
+ });
6494
+ }
6495
+ const sourceUnsub = signalSource.subscribe((signal) => {
6496
+ if (disposed)
6497
+ return;
6498
+ if (signal.kind === "reload") {
6499
+ for (const [, e] of lastEntitlement) {
6500
+ safeEmitFlipFor(e);
6501
+ }
6502
+ } else {
6503
+ safeEmitFlipFor(signal.entitlement);
6504
+ }
6505
+ });
6506
+ const profile = {
6507
+ name,
6508
+ checkAll: enforcer.checkAll.bind(enforcer),
6509
+ checkTask: enforcer.checkTask.bind(enforcer),
6510
+ surface: () => policy.grant,
6511
+ async requestEntitlement(required) {
6512
+ if (required.optional) {
6513
+ return { outcome: "granted", entitlement: required };
6514
+ }
6515
+ const denials = await enforcer.checkAll({ entitlements: [required] });
6516
+ const k = key(required);
6517
+ lastEntitlement.set(k, required);
6518
+ if (denials.length === 0) {
6519
+ lastOutcome.set(k, "granted");
6520
+ return { outcome: "granted", entitlement: required };
6521
+ }
6522
+ lastOutcome.set(k, "denied");
6523
+ return { outcome: "denied", denial: denials[0] };
6524
+ },
6525
+ subscribe(listener) {
6526
+ listeners.add(listener);
6527
+ let unsubbed = false;
6528
+ return () => {
6529
+ if (unsubbed)
6530
+ return;
6531
+ unsubbed = true;
6532
+ listeners.delete(listener);
6533
+ };
6534
+ },
6535
+ async dispose() {
6536
+ if (disposed)
6537
+ return;
6538
+ disposed = true;
6539
+ sourceUnsub();
6540
+ listeners.clear();
6541
+ lastOutcome.clear();
6542
+ lastEntitlement.clear();
6543
+ }
6544
+ };
6545
+ return profile;
6546
+ }
6547
+ var ENTITLEMENT_PROFILE = createServiceToken5("workglow.entitlementProfile");
6443
6548
  // src/task/EntitlementProfiles.ts
6444
6549
  var BROWSER_GRANTS = [
6445
6550
  { id: Entitlements.NETWORK_HTTP },
@@ -6474,8 +6579,8 @@ var PROFILE_GRANTS = {
6474
6579
  function createProfilePolicy(profile) {
6475
6580
  return { deny: [], grant: PROFILE_GRANTS[profile], ask: [] };
6476
6581
  }
6477
- function createProfileEnforcer(profile, resolver) {
6478
- return createPolicyEnforcer(createProfilePolicy(profile), resolver);
6582
+ function createProfileEnforcer(profile, options) {
6583
+ return createPolicyProfile(profile, createProfilePolicy(profile), options);
6479
6584
  }
6480
6585
  function getProfileGrants(profile) {
6481
6586
  return PROFILE_GRANTS[profile];
@@ -8061,15 +8166,15 @@ import {
8061
8166
  JobQueueServer
8062
8167
  } from "@workglow/job-queue";
8063
8168
  import { InMemoryQueueStorage } from "@workglow/job-queue";
8064
- import { createServiceToken as createServiceToken5, globalServiceRegistry as globalServiceRegistry4 } from "@workglow/util";
8065
- var JOB_QUEUE_FACTORY = createServiceToken5("taskgraph.jobQueueFactory");
8169
+ import { createServiceToken as createServiceToken6, globalServiceRegistry as globalServiceRegistry4 } from "@workglow/util";
8170
+ var JOB_QUEUE_FACTORY = createServiceToken6("taskgraph.jobQueueFactory");
8066
8171
  var defaultJobQueueFactory = async ({
8067
8172
  queueName,
8068
8173
  jobClass,
8069
8174
  options
8070
8175
  }) => {
8071
8176
  const storage = options?.storage ?? new InMemoryQueueStorage(queueName);
8072
- await storage.setupDatabase();
8177
+ await storage.migrate();
8073
8178
  const server = new JobQueueServer(jobClass, {
8074
8179
  storage,
8075
8180
  queueName,
@@ -8103,7 +8208,7 @@ function createJobQueueFactoryWithOptions(defaultOptions = {}) {
8103
8208
  ...options ?? {}
8104
8209
  };
8105
8210
  const storage = mergedOptions.storage ?? new InMemoryQueueStorage(queueName);
8106
- await storage.setupDatabase();
8211
+ await storage.migrate();
8107
8212
  const server = new JobQueueServer(jobClass, {
8108
8213
  storage,
8109
8214
  queueName,
@@ -8327,7 +8432,7 @@ queueMicrotask(() => {
8327
8432
  });
8328
8433
  // src/task/TaskRegistry.ts
8329
8434
  import {
8330
- createServiceToken as createServiceToken6,
8435
+ createServiceToken as createServiceToken7,
8331
8436
  getLogger as getLogger9,
8332
8437
  globalServiceRegistry as globalServiceRegistry5,
8333
8438
  registerInputCompactor,
@@ -8367,7 +8472,7 @@ var TaskRegistry = {
8367
8472
  registerTask,
8368
8473
  unregisterTask
8369
8474
  };
8370
- var TASK_CONSTRUCTORS = createServiceToken6("task.constructors");
8475
+ var TASK_CONSTRUCTORS = createServiceToken7("task.constructors");
8371
8476
  function getGlobalTaskConstructors() {
8372
8477
  return globalServiceRegistry5.get(TASK_CONSTRUCTORS);
8373
8478
  }
@@ -8536,8 +8641,8 @@ var registerBaseTasks = () => {
8536
8641
  return tasks;
8537
8642
  };
8538
8643
  // src/storage/TaskGraphRepository.ts
8539
- import { createServiceToken as createServiceToken7, EventEmitter as EventEmitter7 } from "@workglow/util";
8540
- var TASK_GRAPH_REPOSITORY = createServiceToken7("taskgraph.taskGraphRepository");
8644
+ import { createServiceToken as createServiceToken8, EventEmitter as EventEmitter7 } from "@workglow/util";
8645
+ var TASK_GRAPH_REPOSITORY = createServiceToken8("taskgraph.taskGraphRepository");
8541
8646
 
8542
8647
  class TaskGraphRepository {
8543
8648
  type = "TaskGraphRepository";
@@ -8787,6 +8892,7 @@ export {
8787
8892
  createScopedEnforcer,
8788
8893
  createProfilePolicy,
8789
8894
  createProfileEnforcer,
8895
+ createPolicyProfile,
8790
8896
  createPolicyEnforcer,
8791
8897
  createJobQueueFactoryWithOptions,
8792
8898
  createGraphFromGraphJSON,
@@ -8851,6 +8957,7 @@ export {
8851
8957
  TASK_CONSTRUCTORS,
8852
8958
  StreamPump,
8853
8959
  StreamProcessor,
8960
+ STATIC_SIGNAL_SOURCE,
8854
8961
  SERVER_GRANTS,
8855
8962
  RunScheduler,
8856
8963
  RunContext,
@@ -8876,6 +8983,7 @@ export {
8876
8983
  Entitlements,
8877
8984
  EdgeMaterializer,
8878
8985
  ENTITLEMENT_RESOLVER,
8986
+ ENTITLEMENT_PROFILE,
8879
8987
  ENTITLEMENT_ENFORCER,
8880
8988
  EMPTY_POLICY,
8881
8989
  EMPTY_ENTITLEMENTS,
@@ -8894,4 +9002,4 @@ export {
8894
9002
  BROWSER_GRANTS
8895
9003
  };
8896
9004
 
8897
- //# debugId=70AF17E20B1A815F64756E2164756E21
9005
+ //# debugId=896F2287B3DD5F3464756E2164756E21