@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 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, resolver) {
6477
- return createPolicyEnforcer(createProfilePolicy(profile), resolver);
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 createServiceToken5, globalServiceRegistry as globalServiceRegistry4 } from "@workglow/util";
8064
- var JOB_QUEUE_FACTORY = createServiceToken5("taskgraph.jobQueueFactory");
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.setupDatabase();
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.setupDatabase();
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 createServiceToken6,
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 = createServiceToken6("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 createServiceToken7, EventEmitter as EventEmitter7 } from "@workglow/util";
8539
- var TASK_GRAPH_REPOSITORY = createServiceToken7("taskgraph.taskGraphRepository");
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=B8C3EF040C0CD90B64756E2164756E21
9641
+ //# debugId=2DFEBA289E537DDA64756E2164756E21