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.
- package/dist/StateMachine.d.ts +28 -0
- package/dist/StateMachine.d.ts.map +1 -0
- package/{src/StateMachine.ts → dist/StateMachine.js} +85 -134
- package/dist/StateMachine.js.map +1 -0
- package/dist/actions/RemoteLLMAgenticAction.d.ts +9 -0
- package/dist/actions/RemoteLLMAgenticAction.d.ts.map +1 -0
- package/{src/actions/RemoteLLMAgenticAction.ts → dist/actions/RemoteLLMAgenticAction.js} +7 -13
- package/dist/actions/RemoteLLMAgenticAction.js.map +1 -0
- package/dist/actors/Code.d.ts +9 -0
- package/dist/actors/Code.d.ts.map +1 -0
- package/dist/actors/Code.js +11 -0
- package/dist/actors/Code.js.map +1 -0
- package/dist/actors/Human.d.ts +11 -0
- package/dist/actors/Human.d.ts.map +1 -0
- package/dist/actors/Human.js +25 -0
- package/dist/actors/Human.js.map +1 -0
- package/dist/actors/agents/OpenAIAgent.d.ts +21 -0
- package/dist/actors/agents/OpenAIAgent.d.ts.map +1 -0
- package/{src/actors/agents/OpenAIAgent.ts → dist/actors/agents/OpenAIAgent.js} +17 -36
- package/dist/actors/agents/OpenAIAgent.js.map +1 -0
- package/dist/auditing/AuditorFactory.d.ts +6 -0
- package/dist/auditing/AuditorFactory.d.ts.map +1 -0
- package/dist/auditing/AuditorFactory.js +11 -0
- package/dist/auditing/AuditorFactory.js.map +1 -0
- package/dist/auditing/ConsoleAuditor.d.ts +6 -0
- package/dist/auditing/ConsoleAuditor.d.ts.map +1 -0
- package/dist/auditing/ConsoleAuditor.js +8 -0
- package/dist/auditing/ConsoleAuditor.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/persistence/InMemoryJobPersistence.d.ts +15 -0
- package/dist/persistence/InMemoryJobPersistence.d.ts.map +1 -0
- package/{src/persistence/InMemoryJobPersistence.ts → dist/persistence/InMemoryJobPersistence.js} +0 -0
- package/dist/persistence/InMemoryJobPersistence.js.map +1 -0
- package/dist/persistence/JobPersistenceFactory.d.ts +6 -0
- package/dist/persistence/JobPersistenceFactory.d.ts.map +1 -0
- package/{src/persistence/JobPersistenceFactory.ts → dist/persistence/JobPersistenceFactory.js} +6 -8
- package/dist/persistence/JobPersistenceFactory.js.map +1 -0
- package/dist/scheduling/ConsumerFactory.d.ts +6 -0
- package/dist/scheduling/ConsumerFactory.d.ts.map +1 -0
- package/dist/scheduling/ConsumerFactory.js +15 -0
- package/dist/scheduling/ConsumerFactory.js.map +1 -0
- package/dist/scheduling/InMemoryQueue.d.ts +10 -0
- package/dist/scheduling/InMemoryQueue.d.ts.map +1 -0
- package/{src/scheduling/InMemoryQueue.ts → dist/scheduling/InMemoryQueue.js} +8 -15
- package/dist/scheduling/InMemoryQueue.js.map +1 -0
- package/dist/scheduling/PullConsumer.d.ts +17 -0
- package/dist/scheduling/PullConsumer.d.ts.map +1 -0
- package/{src/scheduling/PullConsumer.ts → dist/scheduling/PullConsumer.js} +25 -28
- package/dist/scheduling/PullConsumer.js.map +1 -0
- package/dist/scheduling/QueueFactory.d.ts +6 -0
- package/dist/scheduling/QueueFactory.d.ts.map +1 -0
- package/{src/scheduling/QueueFactory.ts → dist/scheduling/QueueFactory.js} +5 -7
- package/dist/scheduling/QueueFactory.js.map +1 -0
- package/dist/sessions/InMemorySessionResolver.d.ts +8 -0
- package/dist/sessions/InMemorySessionResolver.d.ts.map +1 -0
- package/dist/sessions/InMemorySessionResolver.js +14 -0
- package/dist/sessions/InMemorySessionResolver.js.map +1 -0
- package/dist/sessions/SessionResolverFactory.d.ts +6 -0
- package/dist/sessions/SessionResolverFactory.d.ts.map +1 -0
- package/{src/sessions/SessionResolverFactory.ts → dist/sessions/SessionResolverFactory.js} +5 -7
- package/dist/sessions/SessionResolverFactory.js.map +1 -0
- package/dist/sessions/sessionCookie.d.ts +5 -0
- package/dist/sessions/sessionCookie.d.ts.map +1 -0
- package/{src/sessions/sessionCookie.ts → dist/sessions/sessionCookie.js} +5 -7
- package/dist/sessions/sessionCookie.js.map +1 -0
- package/package.json +16 -7
- package/src/actors/Code.ts +0 -16
- package/src/actors/Human.ts +0 -32
- package/src/auditing/AuditorFactory.ts +0 -14
- package/src/auditing/ConsoleAuditor.ts +0 -13
- package/src/index.ts +0 -16
- package/src/scheduling/ConsumerFactory.ts +0 -15
- 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"}
|
package/dist/index.d.ts
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.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"}
|
package/{src/persistence/InMemoryJobPersistence.ts → dist/persistence/InMemoryJobPersistence.js}
RENAMED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryJobPersistence.js","sourceRoot":"","sources":["../../src/persistence/InMemoryJobPersistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/{src/persistence/JobPersistenceFactory.ts → dist/persistence/JobPersistenceFactory.js}
RENAMED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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()
|
|
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 @@
|
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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
|
-
}
|
|
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
|
-
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
54
52
|
await this.queue.enqueue(message.jobId, message.appId, message.workflowId);
|
|
55
53
|
}
|
|
56
54
|
}
|
|
57
|
-
|
|
58
55
|
}
|
|
59
|
-
|
|
60
|
-
|
|
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 @@
|
|
|
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 {
|
|
2
|
-
import {
|
|
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()
|
|
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 @@
|
|
|
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 {
|
|
2
|
-
import {
|
|
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()
|
|
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
|
|
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)
|
|
8
|
+
if (name === SESSION_COOKIE)
|
|
9
|
+
return value.join("=");
|
|
12
10
|
}
|
|
13
11
|
return undefined;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
|
-
|
|
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.
|
|
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": "
|
|
9
|
-
"types": "
|
|
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.
|
|
19
|
-
"anbaric-tsapi": "^1.
|
|
27
|
+
"anbaric-impl-cloud": "^1.22.0",
|
|
28
|
+
"anbaric-tsapi": "^1.22.0"
|
|
20
29
|
},
|
|
21
30
|
"files": [
|
|
22
|
-
"
|
|
31
|
+
"dist"
|
|
23
32
|
]
|
|
24
33
|
}
|
package/src/actors/Code.ts
DELETED
|
@@ -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 }
|
package/src/actors/Human.ts
DELETED
|
@@ -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 }
|