@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/node.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";
@@ -8786,6 +8891,7 @@ export {
8786
8891
  createScopedEnforcer,
8787
8892
  createProfilePolicy,
8788
8893
  createProfileEnforcer,
8894
+ createPolicyProfile,
8789
8895
  createPolicyEnforcer,
8790
8896
  createJobQueueFactoryWithOptions,
8791
8897
  createGraphFromGraphJSON,
@@ -8850,6 +8956,7 @@ export {
8850
8956
  TASK_CONSTRUCTORS,
8851
8957
  StreamPump,
8852
8958
  StreamProcessor,
8959
+ STATIC_SIGNAL_SOURCE,
8853
8960
  SERVER_GRANTS,
8854
8961
  RunScheduler,
8855
8962
  RunContext,
@@ -8875,6 +8982,7 @@ export {
8875
8982
  Entitlements,
8876
8983
  EdgeMaterializer,
8877
8984
  ENTITLEMENT_RESOLVER,
8985
+ ENTITLEMENT_PROFILE,
8878
8986
  ENTITLEMENT_ENFORCER,
8879
8987
  EMPTY_POLICY,
8880
8988
  EMPTY_ENTITLEMENTS,
@@ -8893,4 +9001,4 @@ export {
8893
9001
  BROWSER_GRANTS
8894
9002
  };
8895
9003
 
8896
- //# debugId=E123E818DE14140964756E2164756E21
9004
+ //# debugId=BF168934B50892FF64756E2164756E21