anbaric-state-machine 1.21.4 → 1.22.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.
Files changed (76) hide show
  1. package/dist/StateMachine.d.ts +28 -0
  2. package/dist/StateMachine.d.ts.map +1 -0
  3. package/{src/StateMachine.ts → dist/StateMachine.js} +85 -134
  4. package/dist/StateMachine.js.map +1 -0
  5. package/dist/actions/RemoteLLMAgenticAction.d.ts +9 -0
  6. package/dist/actions/RemoteLLMAgenticAction.d.ts.map +1 -0
  7. package/{src/actions/RemoteLLMAgenticAction.ts → dist/actions/RemoteLLMAgenticAction.js} +7 -13
  8. package/dist/actions/RemoteLLMAgenticAction.js.map +1 -0
  9. package/dist/actors/Code.d.ts +9 -0
  10. package/dist/actors/Code.d.ts.map +1 -0
  11. package/dist/actors/Code.js +11 -0
  12. package/dist/actors/Code.js.map +1 -0
  13. package/dist/actors/Human.d.ts +11 -0
  14. package/dist/actors/Human.d.ts.map +1 -0
  15. package/dist/actors/Human.js +25 -0
  16. package/dist/actors/Human.js.map +1 -0
  17. package/dist/actors/agents/OpenAIAgent.d.ts +21 -0
  18. package/dist/actors/agents/OpenAIAgent.d.ts.map +1 -0
  19. package/{src/actors/agents/OpenAIAgent.ts → dist/actors/agents/OpenAIAgent.js} +17 -36
  20. package/dist/actors/agents/OpenAIAgent.js.map +1 -0
  21. package/dist/auditing/AuditorFactory.d.ts +6 -0
  22. package/dist/auditing/AuditorFactory.d.ts.map +1 -0
  23. package/dist/auditing/AuditorFactory.js +11 -0
  24. package/dist/auditing/AuditorFactory.js.map +1 -0
  25. package/dist/auditing/ConsoleAuditor.d.ts +6 -0
  26. package/dist/auditing/ConsoleAuditor.d.ts.map +1 -0
  27. package/dist/auditing/ConsoleAuditor.js +8 -0
  28. package/dist/auditing/ConsoleAuditor.js.map +1 -0
  29. package/dist/index.d.ts +17 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +17 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/persistence/InMemoryJobPersistence.d.ts +15 -0
  34. package/dist/persistence/InMemoryJobPersistence.d.ts.map +1 -0
  35. package/{src/persistence/InMemoryJobPersistence.ts → dist/persistence/InMemoryJobPersistence.js} +0 -0
  36. package/dist/persistence/InMemoryJobPersistence.js.map +1 -0
  37. package/dist/persistence/JobPersistenceFactory.d.ts +6 -0
  38. package/dist/persistence/JobPersistenceFactory.d.ts.map +1 -0
  39. package/{src/persistence/JobPersistenceFactory.ts → dist/persistence/JobPersistenceFactory.js} +6 -8
  40. package/dist/persistence/JobPersistenceFactory.js.map +1 -0
  41. package/dist/scheduling/ConsumerFactory.d.ts +6 -0
  42. package/dist/scheduling/ConsumerFactory.d.ts.map +1 -0
  43. package/dist/scheduling/ConsumerFactory.js +15 -0
  44. package/dist/scheduling/ConsumerFactory.js.map +1 -0
  45. package/dist/scheduling/InMemoryQueue.d.ts +10 -0
  46. package/dist/scheduling/InMemoryQueue.d.ts.map +1 -0
  47. package/{src/scheduling/InMemoryQueue.ts → dist/scheduling/InMemoryQueue.js} +8 -15
  48. package/dist/scheduling/InMemoryQueue.js.map +1 -0
  49. package/dist/scheduling/PullConsumer.d.ts +17 -0
  50. package/dist/scheduling/PullConsumer.d.ts.map +1 -0
  51. package/{src/scheduling/PullConsumer.ts → dist/scheduling/PullConsumer.js} +25 -28
  52. package/dist/scheduling/PullConsumer.js.map +1 -0
  53. package/dist/scheduling/QueueFactory.d.ts +6 -0
  54. package/dist/scheduling/QueueFactory.d.ts.map +1 -0
  55. package/{src/scheduling/QueueFactory.ts → dist/scheduling/QueueFactory.js} +5 -7
  56. package/dist/scheduling/QueueFactory.js.map +1 -0
  57. package/dist/sessions/InMemorySessionResolver.d.ts +8 -0
  58. package/dist/sessions/InMemorySessionResolver.d.ts.map +1 -0
  59. package/dist/sessions/InMemorySessionResolver.js +14 -0
  60. package/dist/sessions/InMemorySessionResolver.js.map +1 -0
  61. package/dist/sessions/SessionResolverFactory.d.ts +6 -0
  62. package/dist/sessions/SessionResolverFactory.d.ts.map +1 -0
  63. package/{src/sessions/SessionResolverFactory.ts → dist/sessions/SessionResolverFactory.js} +5 -7
  64. package/dist/sessions/SessionResolverFactory.js.map +1 -0
  65. package/dist/sessions/sessionCookie.d.ts +5 -0
  66. package/dist/sessions/sessionCookie.d.ts.map +1 -0
  67. package/{src/sessions/sessionCookie.ts → dist/sessions/sessionCookie.js} +5 -7
  68. package/dist/sessions/sessionCookie.js.map +1 -0
  69. package/package.json +16 -7
  70. package/src/actors/Code.ts +0 -16
  71. package/src/actors/Human.ts +0 -32
  72. package/src/auditing/AuditorFactory.ts +0 -14
  73. package/src/auditing/ConsoleAuditor.ts +0 -13
  74. package/src/index.ts +0 -16
  75. package/src/scheduling/ConsumerFactory.ts +0 -15
  76. package/src/sessions/InMemorySessionResolver.ts +0 -20
@@ -0,0 +1,11 @@
1
+ import { CloudAuditor } from "anbaric-impl-cloud";
2
+ import { ConsoleAuditor } from "./ConsoleAuditor.js";
3
+ const AuditorFactory = {
4
+ instance() {
5
+ if (process.env.ANBARIC_AUDITOR_TYPE === "cloud")
6
+ return new CloudAuditor();
7
+ return new ConsoleAuditor();
8
+ },
9
+ };
10
+ export { AuditorFactory };
11
+ //# sourceMappingURL=AuditorFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditorFactory.js","sourceRoot":"","sources":["../../src/auditing/AuditorFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD,MAAM,cAAc,GAAG;IAEnB,QAAQ;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO;YAAE,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5E,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;CAEJ,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Actor, Auditor } from "anbaric-tsapi";
2
+ declare class ConsoleAuditor implements Auditor {
3
+ audit(appId: string | undefined, resourceType: string, resourceId: string, actor: Actor, interaction: Array<string>, description: string, details: any): Promise<void>;
4
+ }
5
+ export { ConsoleAuditor };
6
+ //# sourceMappingURL=ConsoleAuditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleAuditor.d.ts","sourceRoot":"","sources":["../../src/auditing/ConsoleAuditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAE7C,cAAM,cAAe,YAAW,OAAO;IAE7B,KAAK,CAAC,KAAK,EAAG,MAAM,GAAG,SAAS,EAAE,YAAY,EAAG,MAAM,EAAE,UAAU,EAAG,MAAM,EAAE,KAAK,EAAG,KAAK,EACrF,WAAW,EAAG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAG,MAAM,EAAE,OAAO,EAAG,GAAG,GAAI,OAAO,CAAC,IAAI,CAAC,CAG5F;CAEJ;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ class ConsoleAuditor {
2
+ async audit(appId, resourceType, resourceId, actor, interaction, description, details) {
3
+ const scope = appId ? `${appId}/` : "";
4
+ console.log(`[${scope}${resourceType} ${resourceId}] ${actor.id} ${interaction.join(",")} ${description} ${JSON.stringify(details ?? null)}`);
5
+ }
6
+ }
7
+ export { ConsoleAuditor };
8
+ //# sourceMappingURL=ConsoleAuditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleAuditor.js","sourceRoot":"","sources":["../../src/auditing/ConsoleAuditor.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc;IAEhB,KAAK,CAAC,KAAK,CAAC,KAA0B,EAAE,YAAqB,EAAE,UAAmB,EAAE,KAAa,EACrF,WAA2B,EAAE,WAAoB,EAAE,OAAa;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAClJ,CAAC;CAEJ;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ export * from "./StateMachine.js";
2
+ export * from "./actions/RemoteLLMAgenticAction.js";
3
+ export * from "./actors/Code.js";
4
+ export * from "./actors/Human.js";
5
+ export * from "./actors/agents/OpenAIAgent.js";
6
+ export * from "./auditing/AuditorFactory.js";
7
+ export * from "./auditing/ConsoleAuditor.js";
8
+ export * from "./persistence/InMemoryJobPersistence.js";
9
+ export * from "./persistence/JobPersistenceFactory.js";
10
+ export * from "./scheduling/InMemoryQueue.js";
11
+ export * from "./scheduling/PullConsumer.js";
12
+ export * from "./scheduling/ConsumerFactory.js";
13
+ export * from "./scheduling/QueueFactory.js";
14
+ export * from "./sessions/InMemorySessionResolver.js";
15
+ export * from "./sessions/SessionResolverFactory.js";
16
+ export * from "./sessions/sessionCookie.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ export * from "./StateMachine.js";
2
+ export * from "./actions/RemoteLLMAgenticAction.js";
3
+ export * from "./actors/Code.js";
4
+ export * from "./actors/Human.js";
5
+ export * from "./actors/agents/OpenAIAgent.js";
6
+ export * from "./auditing/AuditorFactory.js";
7
+ export * from "./auditing/ConsoleAuditor.js";
8
+ export * from "./persistence/InMemoryJobPersistence.js";
9
+ export * from "./persistence/JobPersistenceFactory.js";
10
+ export * from "./scheduling/InMemoryQueue.js";
11
+ export * from "./scheduling/PullConsumer.js";
12
+ export * from "./scheduling/ConsumerFactory.js";
13
+ export * from "./scheduling/QueueFactory.js";
14
+ export * from "./sessions/InMemorySessionResolver.js";
15
+ export * from "./sessions/SessionResolverFactory.js";
16
+ export * from "./sessions/sessionCookie.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Auditor, Job, JobPersistence } from "anbaric-tsapi";
2
+ declare class InMemoryJobPersistence extends JobPersistence {
3
+ private jobs;
4
+ constructor(auditor?: Auditor);
5
+ protected saveInternal(job: Job): Promise<void>;
6
+ protected retrieveInternal(id: string): Promise<Job>;
7
+ protected deleteInternal(id: string): Promise<void>;
8
+ protected listInternal(pageSize?: number, page?: number): Promise<Array<Job>>;
9
+ protected killInternal(id: string): Promise<void>;
10
+ protected killOlderThanInternal(lastUpdatedBefore: Date): Promise<number>;
11
+ protected countByStateInternal(): Promise<Array<JobPersistence.StateCount>>;
12
+ private killedVersion;
13
+ }
14
+ export { InMemoryJobPersistence };
15
+ //# sourceMappingURL=InMemoryJobPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryJobPersistence.d.ts","sourceRoot":"","sources":["../../src/persistence/InMemoryJobPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAc,MAAM,eAAe,CAAC;AAExE,cAAM,sBAAuB,SAAQ,cAAc;IAE/C,OAAO,CAAC,IAAI,CAA0B;IAEtC,YAAY,OAAO,GAAG,OAA2B,EAEhD;IAED,UAAgB,YAAY,CAAC,GAAG,EAAG,GAAG,GAAI,OAAO,CAAC,IAAI,CAAC,CAEtD;IAED,UAAgB,gBAAgB,CAAC,EAAE,EAAG,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAM3D;IAED,UAAgB,cAAc,CAAC,EAAE,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAE1D;IAED,UAAgB,YAAY,CAAC,QAAQ,GAAG,MAAY,EAAE,IAAI,GAAG,MAAU,GAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAE7F;IAED,UAAgB,YAAY,CAAC,EAAE,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAExD;IAED,UAAgB,qBAAqB,CAAC,iBAAiB,EAAG,IAAI,GAAI,OAAO,CAAC,MAAM,CAAC,CAQhF;IAED,UAAgB,oBAAoB,IAAK,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CASjF;IAED,OAAO,CAAC,aAAa;CAIxB;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryJobPersistence.js","sourceRoot":"","sources":["../../src/persistence/InMemoryJobPersistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { JobPersistence } from "anbaric-tsapi";
2
+ declare const JobPersistenceFactory: {
3
+ instance(): JobPersistence;
4
+ };
5
+ export { JobPersistenceFactory };
6
+ //# sourceMappingURL=JobPersistenceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobPersistenceFactory.d.ts","sourceRoot":"","sources":["../../src/persistence/JobPersistenceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAK7C,QAAA,MAAM,qBAAqB;IACvB,QAAQ,IAAK,cAAc;CAU9B,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,10 +1,8 @@
1
- import {JobPersistence} from "anbaric-tsapi";
2
- import {CloudJobPersistence} from "anbaric-impl-cloud";
3
- import {InMemoryJobPersistence} from "./InMemoryJobPersistence";
4
- import {AuditorFactory} from "../auditing/AuditorFactory";
5
-
1
+ import { CloudJobPersistence } from "anbaric-impl-cloud";
2
+ import { InMemoryJobPersistence } from "./InMemoryJobPersistence.js";
3
+ import { AuditorFactory } from "../auditing/AuditorFactory.js";
6
4
  const JobPersistenceFactory = {
7
- instance() : JobPersistence {
5
+ instance() {
8
6
  const auditor = AuditorFactory.instance();
9
7
  switch (process.env.ANBARIC_JOB_PERSISTENCE_TYPE) {
10
8
  case "cloud":
@@ -14,6 +12,6 @@ const JobPersistenceFactory = {
14
12
  return new InMemoryJobPersistence(auditor);
15
13
  }
16
14
  }
17
- }
18
-
15
+ };
19
16
  export { JobPersistenceFactory };
17
+ //# sourceMappingURL=JobPersistenceFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobPersistenceFactory.js","sourceRoot":"","sources":["../../src/persistence/JobPersistenceFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAE7D,MAAM,qBAAqB,GAAG;IAC1B,QAAQ;QACJ,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC1C,QAAQ,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;YAC/C,KAAK,OAAO;gBACR,OAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACvD,KAAK,QAAQ,CAAC;YACd;gBACI,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;CACJ,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Consumer, Queue } from "anbaric-tsapi";
2
+ declare const ConsumerFactory: {
3
+ instance(queue: Queue): Consumer;
4
+ };
5
+ export { ConsumerFactory };
6
+ //# sourceMappingURL=ConsumerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsumerFactory.d.ts","sourceRoot":"","sources":["../../src/scheduling/ConsumerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAW,KAAK,EAAC,MAAM,eAAe,CAAC;AAIvD,QAAA,MAAM,eAAe;IACjB,QAAQ,QAAS,KAAK,GAAI,QAAQ;CAOrC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Dequeue } from "anbaric-tsapi";
2
+ import { PushConsumer } from "anbaric-impl-cloud";
3
+ import { PullConsumer } from "./PullConsumer.js";
4
+ const ConsumerFactory = {
5
+ instance(queue) {
6
+ if (Dequeue.supports(queue)) {
7
+ return new PullConsumer(queue);
8
+ }
9
+ else {
10
+ return new PushConsumer();
11
+ }
12
+ }
13
+ };
14
+ export { ConsumerFactory };
15
+ //# sourceMappingURL=ConsumerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsumerFactory.js","sourceRoot":"","sources":["../../src/scheduling/ConsumerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAQ,MAAM,eAAe,CAAC;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,MAAM,eAAe,GAAG;IACpB,QAAQ,CAAC,KAAa;QAClB,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,YAAY,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;CACJ,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Dequeue, QueueMessage } from "anbaric-tsapi";
2
+ declare class InMemoryQueue implements Dequeue {
3
+ private ready;
4
+ private scheduled;
5
+ enqueue(jobId: string, appId: string | undefined, workflowId: string): Promise<void>;
6
+ schedule(jobId: string, appId: string | undefined, workflowId: string, due: Date): Promise<void>;
7
+ dequeueSome(): Promise<Array<QueueMessage>>;
8
+ }
9
+ export { InMemoryQueue };
10
+ //# sourceMappingURL=InMemoryQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryQueue.d.ts","sourceRoot":"","sources":["../../src/scheduling/InMemoryQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAEpD,cAAM,aAAc,YAAW,OAAO;IAElC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAAsD;IAEjE,OAAO,CAAC,KAAK,EAAG,MAAM,EAAE,KAAK,EAAG,MAAM,GAAG,SAAS,EAAE,UAAU,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAE7F;IAEK,QAAQ,CAAC,KAAK,EAAG,MAAM,EAAE,KAAK,EAAG,MAAM,GAAG,SAAS,EAAE,UAAU,EAAG,MAAM,EAAE,GAAG,EAAG,IAAI,GAAI,OAAO,CAAC,IAAI,CAAC,CAE1G;IAEK,WAAW,IAAK,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CASjD;CAEJ;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1,19 +1,13 @@
1
- import {Dequeue, QueueMessage} from "anbaric-tsapi";
2
-
3
- class InMemoryQueue implements Dequeue {
4
-
5
- private ready : Array<QueueMessage> = [];
6
- private scheduled : Array<{ message : QueueMessage, due : Date }> = [];
7
-
8
- async enqueue(jobId : string, appId : string | undefined, workflowId : string) : Promise<void> {
1
+ class InMemoryQueue {
2
+ ready = [];
3
+ scheduled = [];
4
+ async enqueue(jobId, appId, workflowId) {
9
5
  this.ready.push({ jobId, appId, workflowId });
10
6
  }
11
-
12
- async schedule(jobId : string, appId : string | undefined, workflowId : string, due : Date) : Promise<void> {
7
+ async schedule(jobId, appId, workflowId, due) {
13
8
  this.scheduled.push({ message: { jobId, appId, workflowId }, due });
14
9
  }
15
-
16
- async dequeueSome() : Promise<Array<QueueMessage>> {
10
+ async dequeueSome() {
17
11
  const now = new Date();
18
12
  const released = this.scheduled
19
13
  .filter((entry) => entry.due <= now)
@@ -23,7 +17,6 @@ class InMemoryQueue implements Dequeue {
23
17
  this.ready = [];
24
18
  return messages;
25
19
  }
26
-
27
20
  }
28
-
29
- export { InMemoryQueue }
21
+ export { InMemoryQueue };
22
+ //# sourceMappingURL=InMemoryQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryQueue.js","sourceRoot":"","sources":["../../src/scheduling/InMemoryQueue.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa;IAEP,KAAK,GAAyB,EAAE,CAAC;IACjC,SAAS,GAAmD,EAAE,CAAC;IAEvE,KAAK,CAAC,OAAO,CAAC,KAAc,EAAE,KAA0B,EAAE,UAAmB;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAc,EAAE,KAA0B,EAAE,UAAmB,EAAE,GAAU;QACtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;aAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC;aACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACpB,CAAC;CAEJ;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { Consumer, Dequeue } from "anbaric-tsapi";
2
+ type ProcessJob = (jobId: string) => Promise<void>;
3
+ declare class PullConsumer implements Consumer {
4
+ private queue;
5
+ private pollIntervalMs;
6
+ private subscribers;
7
+ private ticker?;
8
+ private draining;
9
+ constructor(queue: Dequeue, pollIntervalMs?: number);
10
+ private key;
11
+ subscribe(appId: string | undefined, workflowId: string, processJob: ProcessJob): void;
12
+ cleanUp(): Promise<void>;
13
+ private drain;
14
+ private forward;
15
+ }
16
+ export { PullConsumer };
17
+ //# sourceMappingURL=PullConsumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullConsumer.d.ts","sourceRoot":"","sources":["../../src/scheduling/PullConsumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAE9D,KAAK,UAAU,GAAG,CAAC,KAAK,EAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpD,cAAM,YAAa,YAAW,QAAQ;IAMtB,OAAO,CAAC,KAAK;IAAY,OAAO,CAAC,cAAc;IAJ3D,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAoB,KAAK,EAAG,OAAO,EAAU,cAAc,GAAG,MAAa,EAAI;IAI/E,OAAO,CAAC,GAAG;IAIX,SAAS,CAAC,KAAK,EAAG,MAAM,GAAG,SAAS,EAAE,UAAU,EAAG,MAAM,EAAE,UAAU,EAAG,UAAU,GAAI,IAAI,CAMzF;IAEK,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC,CAI9B;YAEa,KAAK;YAYL,OAAO;CAaxB;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,48 +1,45 @@
1
- import {Consumer, Dequeue, QueueMessage} from "anbaric-tsapi";
2
-
3
- type ProcessJob = (jobId : string) => Promise<void>;
4
-
5
- class PullConsumer implements Consumer {
6
-
7
- private subscribers = new Map<string, ProcessJob>();
8
- private ticker? : NodeJS.Timeout;
9
- private draining = false;
10
-
11
- constructor(private queue : Dequeue, private pollIntervalMs : number = 1000) {}
12
-
1
+ class PullConsumer {
2
+ queue;
3
+ pollIntervalMs;
4
+ subscribers = new Map();
5
+ ticker;
6
+ draining = false;
7
+ constructor(queue, pollIntervalMs = 1000) {
8
+ this.queue = queue;
9
+ this.pollIntervalMs = pollIntervalMs;
10
+ }
13
11
  // Subscribers are keyed by the (appId, workflowId) composite, encoded as a
14
12
  // tuple so an app and a machine id can never collide.
15
- private key(appId : string | undefined, workflowId : string) : string {
13
+ key(appId, workflowId) {
16
14
  return JSON.stringify([appId || null, workflowId]);
17
15
  }
18
-
19
- subscribe(appId : string | undefined, workflowId : string, processJob : ProcessJob) : void {
16
+ subscribe(appId, workflowId, processJob) {
20
17
  this.subscribers.set(this.key(appId, workflowId), processJob);
21
18
  if (!this.ticker) {
22
19
  this.ticker = setInterval(() => void this.drain(), this.pollIntervalMs);
23
20
  this.ticker.unref();
24
21
  }
25
22
  }
26
-
27
- async cleanUp() : Promise<void> {
28
- if (this.ticker) clearInterval(this.ticker);
23
+ async cleanUp() {
24
+ if (this.ticker)
25
+ clearInterval(this.ticker);
29
26
  this.ticker = undefined;
30
27
  this.subscribers.clear();
31
28
  }
32
-
33
- private async drain() : Promise<void> {
34
- if (this.draining) return;
29
+ async drain() {
30
+ if (this.draining)
31
+ return;
35
32
  this.draining = true;
36
33
  try {
37
34
  for (const message of await this.queue.dequeueSome()) {
38
35
  await this.forward(message);
39
36
  }
40
- } finally {
37
+ }
38
+ finally {
41
39
  this.draining = false;
42
40
  }
43
41
  }
44
-
45
- private async forward(message : QueueMessage) : Promise<void> {
42
+ async forward(message) {
46
43
  const processJob = this.subscribers.get(this.key(message.appId, message.workflowId));
47
44
  if (!processJob) {
48
45
  await this.queue.enqueue(message.jobId, message.appId, message.workflowId);
@@ -50,11 +47,11 @@ class PullConsumer implements Consumer {
50
47
  }
51
48
  try {
52
49
  await processJob(message.jobId);
53
- } catch {
50
+ }
51
+ catch {
54
52
  await this.queue.enqueue(message.jobId, message.appId, message.workflowId);
55
53
  }
56
54
  }
57
-
58
55
  }
59
-
60
- export { PullConsumer }
56
+ export { PullConsumer };
57
+ //# sourceMappingURL=PullConsumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullConsumer.js","sourceRoot":"","sources":["../../src/scheduling/PullConsumer.ts"],"names":[],"mappings":"AAIA,MAAM,YAAY;IAMM,KAAK;IAAoB,cAAc;IAJnD,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,CAAmB;IACzB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAoB,KAAe,EAAU,cAAc,GAAY,IAAI;qBAAvD,KAAK;8BAAoB,cAAc;IAAmB,CAAC;IAE/E,2EAA2E;IAC3E,sDAAsD;IAC9C,GAAG,CAAC,KAA0B,EAAE,UAAmB;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,KAA0B,EAAE,UAAmB,EAAE,UAAuB;QAC9E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,KAAK;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC1B,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAsB;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3E,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;CAEJ;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Queue } from "anbaric-tsapi";
2
+ declare const QueueFactory: {
3
+ instance(): Queue;
4
+ };
5
+ export { QueueFactory };
6
+ //# sourceMappingURL=QueueFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueFactory.d.ts","sourceRoot":"","sources":["../../src/scheduling/QueueFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAIpC,QAAA,MAAM,YAAY;IACd,QAAQ,IAAK,KAAK;CASrB,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1,9 +1,7 @@
1
- import {Queue} from "anbaric-tsapi";
2
- import {CloudQueue} from "anbaric-impl-cloud";
3
- import {InMemoryQueue} from "./InMemoryQueue";
4
-
1
+ import { CloudQueue } from "anbaric-impl-cloud";
2
+ import { InMemoryQueue } from "./InMemoryQueue.js";
5
3
  const QueueFactory = {
6
- instance() : Queue {
4
+ instance() {
7
5
  switch (process.env.ANBARIC_QUEUE_TYPE) {
8
6
  case "cloud":
9
7
  return new CloudQueue();
@@ -12,6 +10,6 @@ const QueueFactory = {
12
10
  return new InMemoryQueue();
13
11
  }
14
12
  }
15
- }
16
-
13
+ };
17
14
  export { QueueFactory };
15
+ //# sourceMappingURL=QueueFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueFactory.js","sourceRoot":"","sources":["../../src/scheduling/QueueFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,MAAM,YAAY,GAAG;IACjB,QAAQ;QACJ,QAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACrC,KAAK,OAAO;gBACR,OAAO,IAAI,UAAU,EAAE,CAAC;YAC5B,KAAK,QAAQ,CAAC;YACd;gBACI,OAAO,IAAI,aAAa,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;CACJ,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ResolvedSession, SessionResolver } from "anbaric-tsapi";
2
+ declare class InMemorySessionResolver implements SessionResolver {
3
+ private sessions;
4
+ seed(sessionToken: string, session: ResolvedSession): this;
5
+ resolve(sessionToken: string): Promise<ResolvedSession | undefined>;
6
+ }
7
+ export { InMemorySessionResolver };
8
+ //# sourceMappingURL=InMemorySessionResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemorySessionResolver.d.ts","sourceRoot":"","sources":["../../src/sessions/InMemorySessionResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAI/D,cAAM,uBAAwB,YAAW,eAAe;IAEpD,OAAO,CAAC,QAAQ,CAAsC;IAEtD,IAAI,CAAC,YAAY,EAAG,MAAM,EAAE,OAAO,EAAG,eAAe,GAAI,IAAI,CAG5D;IAEK,OAAO,CAAC,YAAY,EAAG,MAAM,GAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAE1E;CAEJ;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ /* A resolver backed by a seeded token->session map, for local runs and tests.
2
+ Empty by default, so an unknown token resolves to undefined. */
3
+ class InMemorySessionResolver {
4
+ sessions = new Map();
5
+ seed(sessionToken, session) {
6
+ this.sessions.set(sessionToken, session);
7
+ return this;
8
+ }
9
+ async resolve(sessionToken) {
10
+ return this.sessions.get(sessionToken);
11
+ }
12
+ }
13
+ export { InMemorySessionResolver };
14
+ //# sourceMappingURL=InMemorySessionResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemorySessionResolver.js","sourceRoot":"","sources":["../../src/sessions/InMemorySessionResolver.ts"],"names":[],"mappings":"AAEA;kEACkE;AAClE,MAAM,uBAAuB;IAEjB,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEtD,IAAI,CAAC,YAAqB,EAAE,OAAyB;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,YAAqB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;CAEJ;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { SessionResolver } from "anbaric-tsapi";
2
+ declare const SessionResolverFactory: {
3
+ instance(): SessionResolver;
4
+ };
5
+ export { SessionResolverFactory };
6
+ //# sourceMappingURL=SessionResolverFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionResolverFactory.d.ts","sourceRoot":"","sources":["../../src/sessions/SessionResolverFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAI9C,QAAA,MAAM,sBAAsB;IACxB,QAAQ,IAAK,eAAe;CAQ/B,CAAA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,9 +1,7 @@
1
- import {SessionResolver} from "anbaric-tsapi";
2
- import {CloudSessionResolver} from "anbaric-impl-cloud";
3
- import {InMemorySessionResolver} from "./InMemorySessionResolver";
4
-
1
+ import { CloudSessionResolver } from "anbaric-impl-cloud";
2
+ import { InMemorySessionResolver } from "./InMemorySessionResolver.js";
5
3
  const SessionResolverFactory = {
6
- instance() : SessionResolver {
4
+ instance() {
7
5
  switch (process.env.ANBARIC_SESSION_RESOLVER_TYPE) {
8
6
  case "cloud":
9
7
  return new CloudSessionResolver();
@@ -11,6 +9,6 @@ const SessionResolverFactory = {
11
9
  return new InMemorySessionResolver();
12
10
  }
13
11
  }
14
- }
15
-
12
+ };
16
13
  export { SessionResolverFactory };
14
+ //# sourceMappingURL=SessionResolverFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionResolverFactory.js","sourceRoot":"","sources":["../../src/sessions/SessionResolverFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAErE,MAAM,sBAAsB,GAAG;IAC3B,QAAQ;QACJ,QAAQ,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;YAChD,KAAK,OAAO;gBACR,OAAO,IAAI,oBAAoB,EAAE,CAAC;YACtC;gBACI,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC7C,CAAC;IACL,CAAC;CACJ,CAAA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { IncomingMessage } from "node:http";
2
+ declare const SESSION_COOKIE = "anbaric_session";
3
+ declare const sessionCookie: (source: IncomingMessage | string) => string | undefined;
4
+ export { sessionCookie, SESSION_COOKIE };
5
+ //# sourceMappingURL=sessionCookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCookie.d.ts","sourceRoot":"","sources":["../../src/sessions/sessionCookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE1C,QAAA,MAAM,cAAc,oBAAoB,CAAC;AAIzC,QAAA,MAAM,aAAa,WAAa,eAAe,GAAG,MAAM,KAAI,MAAM,GAAG,SAOpE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA"}
@@ -1,16 +1,14 @@
1
- import {IncomingMessage} from "node:http";
2
-
3
1
  const SESSION_COOKIE = "anbaric_session";
4
-
5
2
  /* Reads the anbaric_session cookie value from an incoming request (or a raw
6
3
  Cookie header string). Returns undefined when the cookie is absent. */
7
- const sessionCookie = (source : IncomingMessage | string) : string | undefined => {
4
+ const sessionCookie = (source) => {
8
5
  const header = typeof source === "string" ? source : String(source.headers.cookie ?? "");
9
6
  for (const cookie of header.split(";")) {
10
7
  const [name, ...value] = cookie.trim().split("=");
11
- if (name === SESSION_COOKIE) return value.join("=");
8
+ if (name === SESSION_COOKIE)
9
+ return value.join("=");
12
10
  }
13
11
  return undefined;
14
12
  };
15
-
16
- export { sessionCookie, SESSION_COOKIE }
13
+ export { sessionCookie, SESSION_COOKIE };
14
+ //# sourceMappingURL=sessionCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCookie.js","sourceRoot":"","sources":["../../src/sessions/sessionCookie.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAEzC;yEACyE;AACzE,MAAM,aAAa,GAAG,CAAC,MAAiC,EAAuB,EAAE;IAC7E,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACzF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,cAAc;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,24 +1,33 @@
1
1
  {
2
2
  "name": "anbaric-state-machine",
3
- "version": "1.21.4",
3
+ "version": "1.22.0",
4
4
  "description": "This is the state machine library that one can use to add state management to an application. It will, by default, be locally runnable but can deployed to the Anbaric Cloud via the CLI",
5
5
  "license": "MIT",
6
6
  "author": "chris@anbaric.ai",
7
7
  "type": "module",
8
- "main": "src/index.ts",
9
- "types": "src/index.ts",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
10
17
  "scripts": {
11
- "test": "vitest run"
18
+ "test": "vitest run",
19
+ "build": "tsc -b tsconfig.build.json",
20
+ "prepublishOnly": "npm run build"
12
21
  },
13
22
  "devDependencies": {
14
23
  "@types/node": "^26.2.0",
15
24
  "typescript": "^7.0.2"
16
25
  },
17
26
  "dependencies": {
18
- "anbaric-impl-cloud": "^1.21.4",
19
- "anbaric-tsapi": "^1.21.4"
27
+ "anbaric-impl-cloud": "^1.22.0",
28
+ "anbaric-tsapi": "^1.22.0"
20
29
  },
21
30
  "files": [
22
- "src"
31
+ "dist"
23
32
  ]
24
33
  }
@@ -1,16 +0,0 @@
1
- import {Actor} from "anbaric-tsapi";
2
-
3
- class Code implements Actor {
4
-
5
- readonly type = "CODE" as const;
6
- readonly id : string;
7
- readonly roles : Array<string>;
8
-
9
- constructor(id : string, roles : Array<string> | string = "code") {
10
- this.id = id;
11
- this.roles = typeof roles === "string" ? [roles] : roles;
12
- }
13
-
14
- }
15
-
16
- export { Code }
@@ -1,32 +0,0 @@
1
- import {IncomingMessage} from "node:http";
2
- import {Actor, SessionResolver} from "anbaric-tsapi";
3
- import {SessionResolverFactory} from "../sessions/SessionResolverFactory";
4
- import {sessionCookie} from "../sessions/sessionCookie";
5
-
6
- class Human implements Actor {
7
-
8
- readonly type = "HUMAN" as const;
9
- readonly id : string;
10
- readonly roles : Array<string>;
11
-
12
- constructor(id : string, roles : Array<string> | string) {
13
- this.id = id;
14
- this.roles = typeof roles === "string" ? [roles] : roles;
15
- }
16
-
17
- /* Resolves the browser user behind a request to an app page into a Human,
18
- for auditing. Takes the platform session - either the anbaric_session
19
- token, or the incoming request to read the cookie from - and asks the
20
- platform to verify it (an app cannot: the signing secret is platform
21
- only). */
22
- static async fromSession(source : string | IncomingMessage,
23
- resolver : SessionResolver = SessionResolverFactory.instance()) : Promise<Human> {
24
- const token = typeof source === "string" ? source : sessionCookie(source);
25
- const session = token ? await resolver.resolve(token) : undefined;
26
- if (!session) throw new Error("Could not resolve the session");
27
- return new Human(session.id, session.roles);
28
- }
29
-
30
- }
31
-
32
- export { Human }
@@ -1,14 +0,0 @@
1
- import {Auditor} from "anbaric-tsapi";
2
- import {CloudAuditor} from "anbaric-impl-cloud";
3
- import {ConsoleAuditor} from "./ConsoleAuditor";
4
-
5
- const AuditorFactory = {
6
-
7
- instance() : Auditor {
8
- if (process.env.ANBARIC_AUDITOR_TYPE === "cloud") return new CloudAuditor();
9
- return new ConsoleAuditor();
10
- },
11
-
12
- };
13
-
14
- export { AuditorFactory }