@t4h.framework/dev 0.0.0-experimental-5535fb8-124ed92bbb5f8ca2e9fd
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/.ai/skills/framework-dev/SKILL.md +346 -0
- package/README.md +172 -0
- package/dist/DevServer.d.ts +24 -0
- package/dist/DevServer.js +87 -0
- package/dist/DevServer.js.map +1 -0
- package/dist/__tests__/fixtures.d.ts +57 -0
- package/dist/__tests__/fixtures.js +31 -0
- package/dist/__tests__/fixtures.js.map +1 -0
- package/dist/claims.d.ts +2 -0
- package/dist/claims.js +54 -0
- package/dist/claims.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/models/DevFileBinary.d.ts +15 -0
- package/dist/models/DevFileBinary.js +27 -0
- package/dist/models/DevFileBinary.js.map +1 -0
- package/dist/models/InMemoryDatabase.d.ts +20 -0
- package/dist/models/InMemoryDatabase.js +86 -0
- package/dist/models/InMemoryDatabase.js.map +1 -0
- package/dist/models/JSONCodec.d.ts +30 -0
- package/dist/models/JSONCodec.js +110 -0
- package/dist/models/JSONCodec.js.map +1 -0
- package/dist/models/JSONCodecKindFrameworkSerializableClass.d.ts +8 -0
- package/dist/models/JSONCodecKindFrameworkSerializableClass.js +7 -0
- package/dist/models/JSONCodecKindFrameworkSerializableClass.js.map +1 -0
- package/dist/models/JSONRPCClient.d.ts +11 -0
- package/dist/models/JSONRPCClient.js +50 -0
- package/dist/models/JSONRPCClient.js.map +1 -0
- package/dist/models/JSONRPCServer.d.ts +63 -0
- package/dist/models/JSONRPCServer.js +61 -0
- package/dist/models/JSONRPCServer.js.map +1 -0
- package/dist/models/WorkflowRun.d.ts +18 -0
- package/dist/models/WorkflowRun.js +20 -0
- package/dist/models/WorkflowRun.js.map +1 -0
- package/dist/models/WorkflowRunActivity.d.ts +40 -0
- package/dist/models/WorkflowRunActivity.js +52 -0
- package/dist/models/WorkflowRunActivity.js.map +1 -0
- package/dist/models/claims/DevCacheClaim.d.ts +6 -0
- package/dist/models/claims/DevCacheClaim.js +12 -0
- package/dist/models/claims/DevCacheClaim.js.map +1 -0
- package/dist/models/claims/DevFileSystemClaim.d.ts +7 -0
- package/dist/models/claims/DevFileSystemClaim.js +30 -0
- package/dist/models/claims/DevFileSystemClaim.js.map +1 -0
- package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.d.ts +7 -0
- package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.js +31 -0
- package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.js.map +1 -0
- package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.d.ts +6 -0
- package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.js +13 -0
- package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.js.map +1 -0
- package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.d.ts +6 -0
- package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.js +13 -0
- package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.js.map +1 -0
- package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.d.ts +7 -0
- package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js +31 -0
- package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js.map +1 -0
- package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.d.ts +7 -0
- package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.js +31 -0
- package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.js.map +1 -0
- package/dist/models/claims/DevHttpClientRequestClaim.d.ts +5 -0
- package/dist/models/claims/DevHttpClientRequestClaim.js +39 -0
- package/dist/models/claims/DevHttpClientRequestClaim.js.map +1 -0
- package/dist/models/claims/DevORMClaim.d.ts +8 -0
- package/dist/models/claims/DevORMClaim.js +39 -0
- package/dist/models/claims/DevORMClaim.js.map +1 -0
- package/dist/models/claims/DevSftpClaim.d.ts +20 -0
- package/dist/models/claims/DevSftpClaim.js +148 -0
- package/dist/models/claims/DevSftpClaim.js.map +1 -0
- package/dist/models/claims/DevSmtpSendEmailClaim.d.ts +6 -0
- package/dist/models/claims/DevSmtpSendEmailClaim.js +32 -0
- package/dist/models/claims/DevSmtpSendEmailClaim.js.map +1 -0
- package/dist/models/claims/DevWorkflowClaim.d.ts +7 -0
- package/dist/models/claims/DevWorkflowClaim.js +38 -0
- package/dist/models/claims/DevWorkflowClaim.js.map +1 -0
- package/dist/repositories/WorkflowRun.repository.d.ts +8 -0
- package/dist/repositories/WorkflowRun.repository.js +27 -0
- package/dist/repositories/WorkflowRun.repository.js.map +1 -0
- package/dist/repositories/WorkflowRunActivity.repository.d.ts +8 -0
- package/dist/repositories/WorkflowRunActivity.repository.js +36 -0
- package/dist/repositories/WorkflowRunActivity.repository.js.map +1 -0
- package/dist/services/BuildWorkflowRunResult.service.d.ts +8 -0
- package/dist/services/BuildWorkflowRunResult.service.js +49 -0
- package/dist/services/BuildWorkflowRunResult.service.js.map +1 -0
- package/dist/services/RuntimeContext.service.d.ts +10 -0
- package/dist/services/RuntimeContext.service.js +22 -0
- package/dist/services/RuntimeContext.service.js.map +1 -0
- package/dist/services/TimeoutScheduler.service.d.ts +5 -0
- package/dist/services/TimeoutScheduler.service.js +33 -0
- package/dist/services/TimeoutScheduler.service.js.map +1 -0
- package/dist/services/WorkflowRunAsyncActivityFacade.service.d.ts +20 -0
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js +54 -0
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js.map +1 -0
- package/dist/services/WorkflowRunFacade.service.d.ts +13 -0
- package/dist/services/WorkflowRunFacade.service.js +40 -0
- package/dist/services/WorkflowRunFacade.service.js.map +1 -0
- package/dist/services/WorkflowRunSyncActivityFacade.service.d.ts +7 -0
- package/dist/services/WorkflowRunSyncActivityFacade.service.js +26 -0
- package/dist/services/WorkflowRunSyncActivityFacade.service.js.map +1 -0
- package/dist/tools/build-tools.d.ts +6 -0
- package/dist/tools/build-tools.js +7 -0
- package/dist/tools/build-tools.js.map +1 -0
- package/dist/tools/find-claim-by-constructor.d.ts +1 -0
- package/dist/tools/find-claim-by-constructor.js +8 -0
- package/dist/tools/find-claim-by-constructor.js.map +1 -0
- package/dist/tools/is-workflow-waiting.d.ts +4 -0
- package/dist/tools/is-workflow-waiting.js +12 -0
- package/dist/tools/is-workflow-waiting.js.map +1 -0
- package/dist/tools/json-codec.d.ts +8 -0
- package/dist/tools/json-codec.js +14 -0
- package/dist/tools/json-codec.js.map +1 -0
- package/dist/tools/json-schema-to-inquirer-question.d.ts +11 -0
- package/dist/tools/json-schema-to-inquirer-question.js +34 -0
- package/dist/tools/json-schema-to-inquirer-question.js.map +1 -0
- package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.d.ts +1 -0
- package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js +11 -0
- package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js.map +1 -0
- package/dist/tools/resolve-package-json-path.d.ts +1 -0
- package/dist/tools/resolve-package-json-path.js +21 -0
- package/dist/tools/resolve-package-json-path.js.map +1 -0
- package/dist/tools/resolve-tsconfig-path-from-package-json-path.d.ts +1 -0
- package/dist/tools/resolve-tsconfig-path-from-package-json-path.js +14 -0
- package/dist/tools/resolve-tsconfig-path-from-package-json-path.js.map +1 -0
- package/dist/tools/ts-build-watch.d.ts +12 -0
- package/dist/tools/ts-build-watch.js +46 -0
- package/dist/tools/ts-build-watch.js.map +1 -0
- package/dist/tools/ts-build.d.ts +6 -0
- package/dist/tools/ts-build.js +37 -0
- package/dist/tools/ts-build.js.map +1 -0
- package/dist/tools/up-app.d.ts +2 -0
- package/dist/tools/up-app.js +10 -0
- package/dist/tools/up-app.js.map +1 -0
- package/dist/transport/DevServerJsonRpc.d.ts +2 -0
- package/dist/transport/DevServerJsonRpc.js +42 -0
- package/dist/transport/DevServerJsonRpc.js.map +1 -0
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.d.ts +14 -0
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js +64 -0
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js.map +1 -0
- package/dist/use-cases/CreateWorkflowRun.usecase.d.ts +14 -0
- package/dist/use-cases/CreateWorkflowRun.usecase.js +43 -0
- package/dist/use-cases/CreateWorkflowRun.usecase.js.map +1 -0
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.d.ts +9 -0
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js +68 -0
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js.map +1 -0
- package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +20 -0
- package/dist/use-cases/NextTickWorkflowRun.usecase.js +151 -0
- package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -0
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.d.ts +8 -0
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js +38 -0
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.d.ts +7 -0
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js +44 -0
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.d.ts +10 -0
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js +57 -0
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunBuildHistory.usecase.d.ts +8 -0
- package/dist/use-cases/WorkflowRunBuildHistory.usecase.js +41 -0
- package/dist/use-cases/WorkflowRunBuildHistory.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.d.ts +4 -0
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.js +26 -0
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.js.map +1 -0
- package/dist/workers/app-process.d.ts +3 -0
- package/dist/workers/app-process.js +42 -0
- package/dist/workers/app-process.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AsyncActivity, SyncActivity } from '@t4h.framework/core';
|
|
2
|
+
import Type from 'typebox';
|
|
3
|
+
export class TestSyncActivity extends SyncActivity {
|
|
4
|
+
toInput() {
|
|
5
|
+
return { value: 'input' };
|
|
6
|
+
}
|
|
7
|
+
run(input) {
|
|
8
|
+
return { result: input.value };
|
|
9
|
+
}
|
|
10
|
+
toOutput(output) {
|
|
11
|
+
return output;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const TestAsyncSchema = Type.Object({
|
|
15
|
+
approved: Type.Boolean(),
|
|
16
|
+
});
|
|
17
|
+
export class TestAsyncActivity extends AsyncActivity {
|
|
18
|
+
toInput() {
|
|
19
|
+
return { value: 'input' };
|
|
20
|
+
}
|
|
21
|
+
bootstrap() {
|
|
22
|
+
return this.pending({ schema: TestAsyncSchema });
|
|
23
|
+
}
|
|
24
|
+
advance(payload) {
|
|
25
|
+
return this.done(payload);
|
|
26
|
+
}
|
|
27
|
+
toOutput(output) {
|
|
28
|
+
return output;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,MAAM,OAAO,gBAAiB,SAAQ,YAKrC;IACQ,OAAO;QACZ,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC3B,CAAC;IAEM,GAAG,CAAC,KAAwB;QACjC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;IAEM,QAAQ,CAAC,MAA0B;QACxC,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;CACzB,CAAC,CAAA;AAEF,MAAM,OAAO,iBAAkB,SAAQ,aAOtC;IACQ,OAAO;QACZ,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC3B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;IAClD,CAAC;IAEM,OAAO,CAAC,OAA8B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAEM,QAAQ,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
package/dist/claims.d.ts
ADDED
package/dist/claims.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CacheClaim } from '@t4h.framework/cache';
|
|
2
|
+
import { GetActivityUniqueIdentifierClaim, GetWorkflowUniqueIdentifierClaim, WorkflowClaim, } from '@t4h.framework/core';
|
|
3
|
+
import { FileSystemClaim } from '@t4h.framework/fs';
|
|
4
|
+
import { HttpClientRequestClaim } from '@t4h.framework/http';
|
|
5
|
+
import { ORMClaim } from '@t4h.framework/orm';
|
|
6
|
+
import { GetProjectUniqueIdentifierClaim, GetProjectVersionUniqueIdentifierClaim, GetProjectVersionWorkflowUniqueIdentifierClaim, } from '@t4h.framework/runtime-claims';
|
|
7
|
+
import { SmtpSendEmailClaim } from '@t4h.framework/smtp';
|
|
8
|
+
import { container } from 'pleroma';
|
|
9
|
+
import { DevCacheClaim } from './models/claims/DevCacheClaim.js';
|
|
10
|
+
import { DevFileSystemClaim } from './models/claims/DevFileSystemClaim.js';
|
|
11
|
+
import { DevGetActivityUniqueIdentifierClaim } from './models/claims/DevGetActivityUniqueIdentifierClaim.js';
|
|
12
|
+
import { DevGetProjectUniqueIdentifierClaim } from './models/claims/DevGetProjectUniqueIdentifierClaim.js';
|
|
13
|
+
import { DevGetProjectVersionUniqueIdentifierClaim } from './models/claims/DevGetProjectVersionUniqueIdentifierClaim.js';
|
|
14
|
+
import { DevGetProjectVersionWorkflowUniqueIdentifierClaim } from './models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js';
|
|
15
|
+
import { DevGetWorkflowUniqueIdentifierClaim } from './models/claims/DevGetWorkflowUniqueIdentifierClaim.js';
|
|
16
|
+
import { DevHttpClientRequestClaim } from './models/claims/DevHttpClientRequestClaim.js';
|
|
17
|
+
import { DevORMClaim } from './models/claims/DevORMClaim.js';
|
|
18
|
+
import { DevSftpClaim } from './models/claims/DevSftpClaim.js';
|
|
19
|
+
import { DevSmtpSendEmailClaim } from './models/claims/DevSmtpSendEmailClaim.js';
|
|
20
|
+
import { DevWorkflowClaim } from './models/claims/DevWorkflowClaim.js';
|
|
21
|
+
import { SftpClaim } from '../../sftp/dist/models/SftpClaim.js';
|
|
22
|
+
export const claims = [
|
|
23
|
+
{ provide: ORMClaim, value: new DevORMClaim() },
|
|
24
|
+
{
|
|
25
|
+
provide: HttpClientRequestClaim,
|
|
26
|
+
value: new DevHttpClientRequestClaim(),
|
|
27
|
+
},
|
|
28
|
+
{ provide: FileSystemClaim, value: new DevFileSystemClaim() },
|
|
29
|
+
{ provide: SmtpSendEmailClaim, value: new DevSmtpSendEmailClaim() },
|
|
30
|
+
{ provide: WorkflowClaim, value: container.resolve(DevWorkflowClaim) },
|
|
31
|
+
{ provide: CacheClaim, value: new DevCacheClaim() },
|
|
32
|
+
{ provide: SftpClaim, value: new DevSftpClaim() },
|
|
33
|
+
{
|
|
34
|
+
provide: GetActivityUniqueIdentifierClaim,
|
|
35
|
+
value: container.resolve(DevGetActivityUniqueIdentifierClaim),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
provide: GetWorkflowUniqueIdentifierClaim,
|
|
39
|
+
value: container.resolve(DevGetWorkflowUniqueIdentifierClaim),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
provide: GetProjectUniqueIdentifierClaim,
|
|
43
|
+
value: new DevGetProjectUniqueIdentifierClaim(),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
provide: GetProjectVersionUniqueIdentifierClaim,
|
|
47
|
+
value: new DevGetProjectVersionUniqueIdentifierClaim(),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
provide: GetProjectVersionWorkflowUniqueIdentifierClaim,
|
|
51
|
+
value: container.resolve(DevGetProjectVersionWorkflowUniqueIdentifierClaim),
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,aAAa,GAEd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EACL,+BAA+B,EAC/B,sCAAsC,EACtC,8CAA8C,GAC/C,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAA;AAC5G,OAAO,EAAE,kCAAkC,EAAE,MAAM,uDAAuD,CAAA;AAC1G,OAAO,EAAE,yCAAyC,EAAE,MAAM,8DAA8D,CAAA;AACxH,OAAO,EAAE,iDAAiD,EAAE,MAAM,sEAAsE,CAAA;AACxI,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAA;AAC5G,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAE/D,MAAM,CAAC,MAAM,MAAM,GAAkC;IACnD,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,EAAE;IAC/C;QACE,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,IAAI,yBAAyB,EAAE;KACvC;IACD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,kBAAkB,EAAE,EAAE;IAC7D,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,qBAAqB,EAAE,EAAE;IACnE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;IACtE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,EAAE;IACnD,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE;IACjD;QACE,OAAO,EAAE,gCAAgC;QACzC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;KAC9D;IACD;QACE,OAAO,EAAE,gCAAgC;QACzC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;KAC9D;IACD;QACE,OAAO,EAAE,+BAA+B;QACxC,KAAK,EAAE,IAAI,kCAAkC,EAAE;KAChD;IACD;QACE,OAAO,EAAE,sCAAsC;QAC/C,KAAK,EAAE,IAAI,yCAAyC,EAAE;KACvD;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,iDAAiD,CAAC;KAC5E;CACF,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './DevServer.js';
|
|
2
|
+
export * from './claims.js';
|
|
3
|
+
export * from './models/claims/DevCacheClaim.js';
|
|
4
|
+
export * from './models/claims/DevFileSystemClaim.js';
|
|
5
|
+
export * from './models/claims/DevGetActivityUniqueIdentifierClaim.js';
|
|
6
|
+
export * from './models/claims/DevGetProjectUniqueIdentifierClaim.js';
|
|
7
|
+
export * from './models/claims/DevGetProjectVersionUniqueIdentifierClaim.js';
|
|
8
|
+
export * from './models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js';
|
|
9
|
+
export * from './models/claims/DevGetWorkflowUniqueIdentifierClaim.js';
|
|
10
|
+
export * from './models/claims/DevHttpClientRequestClaim.js';
|
|
11
|
+
export * from './models/claims/DevORMClaim.js';
|
|
12
|
+
export * from './models/claims/DevSmtpSendEmailClaim.js';
|
|
13
|
+
export * from './models/claims/DevWorkflowClaim.js';
|
|
14
|
+
export * from './tools/find-claim-by-constructor.js';
|
|
15
|
+
export * from './tools/is-workflow-waiting.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './DevServer.js';
|
|
2
|
+
export * from './claims.js';
|
|
3
|
+
export * from './models/claims/DevCacheClaim.js';
|
|
4
|
+
export * from './models/claims/DevFileSystemClaim.js';
|
|
5
|
+
export * from './models/claims/DevGetActivityUniqueIdentifierClaim.js';
|
|
6
|
+
export * from './models/claims/DevGetProjectUniqueIdentifierClaim.js';
|
|
7
|
+
export * from './models/claims/DevGetProjectVersionUniqueIdentifierClaim.js';
|
|
8
|
+
export * from './models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js';
|
|
9
|
+
export * from './models/claims/DevGetWorkflowUniqueIdentifierClaim.js';
|
|
10
|
+
export * from './models/claims/DevHttpClientRequestClaim.js';
|
|
11
|
+
export * from './models/claims/DevORMClaim.js';
|
|
12
|
+
export * from './models/claims/DevSmtpSendEmailClaim.js';
|
|
13
|
+
export * from './models/claims/DevWorkflowClaim.js';
|
|
14
|
+
export * from './tools/find-claim-by-constructor.js';
|
|
15
|
+
export * from './tools/is-workflow-waiting.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,wDAAwD,CAAA;AACtE,cAAc,uDAAuD,CAAA;AACrE,cAAc,8DAA8D,CAAA;AAC5E,cAAc,sEAAsE,CAAA;AACpF,cAAc,wDAAwD,CAAA;AACtE,cAAc,8CAA8C,CAAA;AAC5D,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { Binary } from '@t4h.framework/core';
|
|
3
|
+
export declare class DevFileBinary extends Binary {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly contentType: string;
|
|
6
|
+
readonly contentLength: number;
|
|
7
|
+
protected constructor(path: string, contentType: string, contentLength: number);
|
|
8
|
+
stream(): Promise<fs.ReadStream>;
|
|
9
|
+
static from(file: ReturnType<DevFileBinary['toJSON']>): DevFileBinary;
|
|
10
|
+
toJSON(): {
|
|
11
|
+
path: string;
|
|
12
|
+
contentType: string;
|
|
13
|
+
contentLength: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { Binary } from '@t4h.framework/core';
|
|
3
|
+
export class DevFileBinary extends Binary {
|
|
4
|
+
path;
|
|
5
|
+
contentType;
|
|
6
|
+
contentLength;
|
|
7
|
+
constructor(path, contentType, contentLength) {
|
|
8
|
+
super();
|
|
9
|
+
this.path = path;
|
|
10
|
+
this.contentType = contentType;
|
|
11
|
+
this.contentLength = contentLength;
|
|
12
|
+
}
|
|
13
|
+
async stream() {
|
|
14
|
+
return fs.createReadStream(this.path);
|
|
15
|
+
}
|
|
16
|
+
static from(file) {
|
|
17
|
+
return new this(file.path, file.contentType, file.contentLength);
|
|
18
|
+
}
|
|
19
|
+
toJSON() {
|
|
20
|
+
return {
|
|
21
|
+
path: this.path,
|
|
22
|
+
contentType: this.contentType,
|
|
23
|
+
contentLength: this.contentLength,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=DevFileBinary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevFileBinary.js","sourceRoot":"","sources":["../../src/models/DevFileBinary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,OAAO,aAAc,SAAQ,MAAM;IAErB;IACA;IACA;IAHlB,YACkB,IAAY,EACZ,WAAmB,EACnB,aAAqB;QAErC,KAAK,EAAE,CAAA;QAJS,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,kBAAa,GAAb,aAAa,CAAQ;IAGvC,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,IAAyC;QAC1D,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAClE,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import type { FindOptions } from '@t4h.framework/orm';
|
|
3
|
+
export type Row = Record<string, any> & {
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
export declare class InMemoryDatabaseTable extends EventEmitter {
|
|
7
|
+
private readonly rows;
|
|
8
|
+
private _sort;
|
|
9
|
+
find(options: FindOptions<Row>): Row[];
|
|
10
|
+
insert(rows: Omit<Row, 'id'>[]): string[];
|
|
11
|
+
update(where: FindOptions<Row>['where'], row: object): number;
|
|
12
|
+
delete(where: FindOptions<Row>['where']): void;
|
|
13
|
+
toJSON(): Row[];
|
|
14
|
+
}
|
|
15
|
+
export declare class InMemoryDatabase extends EventEmitter {
|
|
16
|
+
private readonly tables;
|
|
17
|
+
constructor(initial?: Record<string, Row[]>);
|
|
18
|
+
table(name: string): InMemoryDatabaseTable;
|
|
19
|
+
toJSON(): Record<string, Row[]>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import sift from 'sift';
|
|
3
|
+
import { uuidv7 } from 'uuidv7';
|
|
4
|
+
export class InMemoryDatabaseTable extends EventEmitter {
|
|
5
|
+
rows = [];
|
|
6
|
+
_sort(rows, orderBy) {
|
|
7
|
+
const entries = Object.entries(orderBy);
|
|
8
|
+
return rows.toSorted((rowA, rowB) => {
|
|
9
|
+
for (const [key, dir] of entries) {
|
|
10
|
+
const rowAPropertyValue = rowA[key];
|
|
11
|
+
const rowBPropertyValue = rowB[key];
|
|
12
|
+
if (rowAPropertyValue === rowBPropertyValue)
|
|
13
|
+
continue;
|
|
14
|
+
if (rowAPropertyValue == null)
|
|
15
|
+
return dir === 'asc' ? -1 : 1;
|
|
16
|
+
if (rowBPropertyValue == null)
|
|
17
|
+
return dir === 'asc' ? 1 : -1;
|
|
18
|
+
const cmp = rowAPropertyValue < rowBPropertyValue ? -1 : 1;
|
|
19
|
+
return dir === 'asc' ? cmp : -cmp;
|
|
20
|
+
}
|
|
21
|
+
return 0;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
find(options) {
|
|
25
|
+
// @ts-expect-error: todo
|
|
26
|
+
let rows = this.rows.filter(sift(options.where));
|
|
27
|
+
if (options.orderBy)
|
|
28
|
+
rows = this._sort(rows, options.orderBy);
|
|
29
|
+
if (options.offset)
|
|
30
|
+
rows = rows.slice(options.offset);
|
|
31
|
+
if (options.limit)
|
|
32
|
+
rows = rows.slice(0, options.limit);
|
|
33
|
+
return rows;
|
|
34
|
+
}
|
|
35
|
+
insert(rows) {
|
|
36
|
+
const ids = rows.map(row => {
|
|
37
|
+
const id = uuidv7();
|
|
38
|
+
this.rows.push({ id, ...row });
|
|
39
|
+
return id;
|
|
40
|
+
});
|
|
41
|
+
this.emit('change');
|
|
42
|
+
return ids;
|
|
43
|
+
}
|
|
44
|
+
update(where, row) {
|
|
45
|
+
const rows = this.find({ where });
|
|
46
|
+
for (const inMemoryRow of rows)
|
|
47
|
+
this.rows.splice(this.rows.indexOf(inMemoryRow), 1, {
|
|
48
|
+
...inMemoryRow,
|
|
49
|
+
...row,
|
|
50
|
+
});
|
|
51
|
+
this.emit('change');
|
|
52
|
+
return rows.length;
|
|
53
|
+
}
|
|
54
|
+
delete(where) {
|
|
55
|
+
const rows = this.find({ where });
|
|
56
|
+
for (const inMemoryRow of rows)
|
|
57
|
+
this.rows.splice(this.rows.indexOf(inMemoryRow), 1);
|
|
58
|
+
this.emit('change');
|
|
59
|
+
}
|
|
60
|
+
toJSON() {
|
|
61
|
+
return this.rows;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class InMemoryDatabase extends EventEmitter {
|
|
65
|
+
tables = new Map();
|
|
66
|
+
constructor(initial = {}) {
|
|
67
|
+
super();
|
|
68
|
+
for (const [name, rows] of Object.entries(initial))
|
|
69
|
+
this.table(name).insert(rows);
|
|
70
|
+
}
|
|
71
|
+
table(name) {
|
|
72
|
+
if (!this.tables.has(name)) {
|
|
73
|
+
const table = new InMemoryDatabaseTable();
|
|
74
|
+
this.tables.set(name, table);
|
|
75
|
+
table.on('change', () => this.emit('change', table));
|
|
76
|
+
}
|
|
77
|
+
return this.tables.get(name);
|
|
78
|
+
}
|
|
79
|
+
toJSON() {
|
|
80
|
+
return Object.fromEntries(Array.from(this.tables.entries()).map(([name, table]) => [
|
|
81
|
+
name,
|
|
82
|
+
table.toJSON(),
|
|
83
|
+
]));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=InMemoryDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryDatabase.js","sourceRoot":"","sources":["../../src/models/InMemoryDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare class JSONCodecKind<TKind extends string, TSerialized, TParsed extends object, TSerializeOptions extends object = {}, TParseOptions extends object = {}> {
|
|
2
|
+
readonly kind: TKind;
|
|
3
|
+
readonly test: (value: object) => value is TParsed;
|
|
4
|
+
readonly serialize: (value: TParsed, options: TSerializeOptions, serializer: (value: any) => any) => TSerialized | Promise<TSerialized>;
|
|
5
|
+
readonly parse: (value: TSerialized & {
|
|
6
|
+
'~kind': TKind;
|
|
7
|
+
}, options: TParseOptions, parser: (value: any) => any) => TParsed | Promise<TParsed>;
|
|
8
|
+
constructor(kind: TKind, test: (value: object) => value is TParsed, serialize: (value: TParsed, options: TSerializeOptions, serializer: (value: any) => any) => TSerialized | Promise<TSerialized>, parse: (value: TSerialized & {
|
|
9
|
+
'~kind': TKind;
|
|
10
|
+
}, options: TParseOptions, parser: (value: any) => any) => TParsed | Promise<TParsed>);
|
|
11
|
+
}
|
|
12
|
+
export type JSONCodeKindSerializeOptions<TKinds extends readonly JSONCodecKind<any, any, any, any, any>[]> = TKinds extends readonly [
|
|
13
|
+
JSONCodecKind<any, any, any, infer T, any>,
|
|
14
|
+
...infer TRest extends readonly JSONCodecKind<any, any, any, any, any>[]
|
|
15
|
+
] ? T & JSONCodeKindSerializeOptions<TRest> : {};
|
|
16
|
+
export type JSONCodeKindParseOptions<TKinds extends readonly JSONCodecKind<any, any, any, any, any>[]> = TKinds extends readonly [
|
|
17
|
+
JSONCodecKind<any, any, any, any, infer T>,
|
|
18
|
+
...infer TRest extends readonly JSONCodecKind<any, any, any, any, any>[]
|
|
19
|
+
] ? T & JSONCodeKindParseOptions<TRest> : {};
|
|
20
|
+
export declare class JSONCodec<TKinds extends readonly JSONCodecKind<any, any, any, any, any>[]> {
|
|
21
|
+
protected readonly kinds: Map<string, JSONCodecKind<string, any, any, any, any>>;
|
|
22
|
+
constructor(...kinds: TKinds);
|
|
23
|
+
private _isKind;
|
|
24
|
+
private _getKind;
|
|
25
|
+
private transform;
|
|
26
|
+
private _parse;
|
|
27
|
+
parse(text: string, options: JSONCodeKindParseOptions<TKinds>): Promise<any>;
|
|
28
|
+
private _stringify;
|
|
29
|
+
stringify(value: any, options: JSONCodeKindSerializeOptions<TKinds>): Promise<string>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export class JSONCodecKind {
|
|
2
|
+
kind;
|
|
3
|
+
test;
|
|
4
|
+
serialize;
|
|
5
|
+
parse;
|
|
6
|
+
constructor(kind, test, serialize, parse) {
|
|
7
|
+
this.kind = kind;
|
|
8
|
+
this.test = test;
|
|
9
|
+
this.serialize = serialize;
|
|
10
|
+
this.parse = parse;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class JSONCodec {
|
|
14
|
+
kinds = new Map();
|
|
15
|
+
constructor(...kinds) {
|
|
16
|
+
for (const kind of kinds) {
|
|
17
|
+
if (this.kinds.has(kind.kind))
|
|
18
|
+
throw new Error(`Kind ${kind.kind} already registered`);
|
|
19
|
+
this.kinds.set(kind.kind, kind);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
_isKind(value) {
|
|
23
|
+
if (typeof value !== 'object')
|
|
24
|
+
return false;
|
|
25
|
+
if (value === null)
|
|
26
|
+
return false;
|
|
27
|
+
if (!('~kind' in value))
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof value['~kind'] !== 'string')
|
|
30
|
+
return false;
|
|
31
|
+
return this.kinds.has(value['~kind']);
|
|
32
|
+
}
|
|
33
|
+
_getKind(value) {
|
|
34
|
+
if (!this._isKind(value))
|
|
35
|
+
throw new Error('Invalid kind');
|
|
36
|
+
return this.kinds.get(value['~kind']);
|
|
37
|
+
}
|
|
38
|
+
async transform(value, config) {
|
|
39
|
+
if (value === null)
|
|
40
|
+
return null;
|
|
41
|
+
if (typeof value !== 'object')
|
|
42
|
+
return value;
|
|
43
|
+
if (Array.isArray(value)) {
|
|
44
|
+
const out = new Array(value.length);
|
|
45
|
+
for (let i = 0; i < value.length; i++) {
|
|
46
|
+
const transformedValue = await this.transform(value[i], config);
|
|
47
|
+
out[i] = transformedValue === undefined ? null : transformedValue;
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
const { seen, cache, get, mapper } = config;
|
|
52
|
+
const kind = get(value);
|
|
53
|
+
if (kind) {
|
|
54
|
+
if (!cache.has(value))
|
|
55
|
+
cache.set(value, mapper(value, kind));
|
|
56
|
+
return cache.get(value);
|
|
57
|
+
}
|
|
58
|
+
const previous = seen.get(value);
|
|
59
|
+
if (previous)
|
|
60
|
+
return previous;
|
|
61
|
+
const out = {};
|
|
62
|
+
seen.set(value, out);
|
|
63
|
+
for (const [key, v] of Object.entries(value)) {
|
|
64
|
+
const tv = await this.transform(v, config);
|
|
65
|
+
if (tv !== undefined)
|
|
66
|
+
out[key] = tv;
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
async _parse(value, options) {
|
|
71
|
+
const seen = new WeakMap();
|
|
72
|
+
const cache = new WeakMap();
|
|
73
|
+
const get = (value) => this._isKind(value) && this._getKind(value);
|
|
74
|
+
return await this.transform(value, {
|
|
75
|
+
seen,
|
|
76
|
+
cache,
|
|
77
|
+
get,
|
|
78
|
+
mapper: (value, kind) => {
|
|
79
|
+
if ('~value' in value)
|
|
80
|
+
value = value['~value'];
|
|
81
|
+
return kind.parse(value, options, value => this._parse(value, options));
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async parse(text, options) {
|
|
86
|
+
return await this._parse(JSON.parse(text), options);
|
|
87
|
+
}
|
|
88
|
+
async _stringify(value, options) {
|
|
89
|
+
const seen = new WeakMap();
|
|
90
|
+
const cache = new WeakMap();
|
|
91
|
+
return await this.transform(value, {
|
|
92
|
+
seen,
|
|
93
|
+
cache,
|
|
94
|
+
get: value => this.kinds.values().find(kind => kind.test(value)),
|
|
95
|
+
mapper: async (value, kind) => {
|
|
96
|
+
const serializedValue = await kind.serialize(value, options, value => this._stringify(value, options));
|
|
97
|
+
if (typeof serializedValue === 'string')
|
|
98
|
+
return {
|
|
99
|
+
'~kind': kind.kind,
|
|
100
|
+
'~value': serializedValue,
|
|
101
|
+
};
|
|
102
|
+
return { '~kind': kind.kind, ...serializedValue };
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async stringify(value, options) {
|
|
107
|
+
return JSON.stringify(await this._stringify(value, options));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=JSONCodec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JSONCodec.js","sourceRoot":"","sources":["../../src/models/JSONCodec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Deserializer, PromiseLikeType, SerializableClass } from '@t4h.framework/core';
|
|
2
|
+
import { JSONCodecKind } from './JSONCodec.js';
|
|
3
|
+
export declare class JSONCodecKindFrameworkSerializableClass<TKind extends string, T extends SerializableClass> extends JSONCodecKind<TKind, PromiseLikeType<ReturnType<T['toSerializable']>>, T, {}, {}> {
|
|
4
|
+
constructor(kind: TKind, constructor: {
|
|
5
|
+
new (...args: any[]): T;
|
|
6
|
+
fromSerializable(serializable: PromiseLikeType<ReturnType<T['toSerializable']>>, deserializer: Deserializer): T | Promise<T>;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { JSONCodecKind } from './JSONCodec.js';
|
|
2
|
+
export class JSONCodecKindFrameworkSerializableClass extends JSONCodecKind {
|
|
3
|
+
constructor(kind, constructor) {
|
|
4
|
+
super(kind, (value) => value instanceof constructor, (value, options, serializer) => value.toSerializable(serializer), (value, options, deserializer) => constructor.fromSerializable(value, deserializer));
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=JSONCodecKindFrameworkSerializableClass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JSONCodecKindFrameworkSerializableClass.js","sourceRoot":"","sources":["../../src/models/JSONCodecKindFrameworkSerializableClass.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,OAAO,uCAGX,SAAQ,aAQT;IACC,YACE,IAAW,EACX,WAMC;QAED,KAAK,CACH,IAAI,EACJ,CAAC,KAAK,EAAc,EAAE,CAAC,KAAK,YAAY,WAAW,EACnD,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAC7B,KAAK,CAAC,cAAc,CAAC,UAAU,CAE9B,EACH,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAC/B,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CACpD,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { JSONRPCResponseFulfilled, JSONRPCResponseRejected } from './JSONRPCServer.js';
|
|
2
|
+
export type JSONRPCClientSend = (message: string) => void | Promise<void>;
|
|
3
|
+
export declare class JSONRPCClient {
|
|
4
|
+
private readonly send;
|
|
5
|
+
private readonly listeners;
|
|
6
|
+
constructor(send: JSONRPCClientSend);
|
|
7
|
+
addListener(listener: (response: JSONRPCResponseFulfilled | JSONRPCResponseRejected) => void): () => void;
|
|
8
|
+
call(method: string, ...params: any[]): Promise<any>;
|
|
9
|
+
notify(method: string, ...params: any[]): Promise<void>;
|
|
10
|
+
handle(message: any): Promise<unknown>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { uuidv7 } from 'uuidv7';
|
|
2
|
+
export class JSONRPCClient {
|
|
3
|
+
send;
|
|
4
|
+
listeners = [];
|
|
5
|
+
constructor(send) {
|
|
6
|
+
this.send = send;
|
|
7
|
+
}
|
|
8
|
+
addListener(listener) {
|
|
9
|
+
this.listeners.push(listener);
|
|
10
|
+
return () => {
|
|
11
|
+
this.listeners.splice(this.listeners.indexOf(listener), 1);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
async call(method, ...params) {
|
|
15
|
+
const id = uuidv7();
|
|
16
|
+
const message = { jsonrpc: '2.0', id, method, params };
|
|
17
|
+
const promise = new Promise((resolve, reject) => {
|
|
18
|
+
const off = this.addListener(response => {
|
|
19
|
+
if (response.id !== id)
|
|
20
|
+
return;
|
|
21
|
+
off();
|
|
22
|
+
if ('result' in response)
|
|
23
|
+
resolve(response.result);
|
|
24
|
+
else
|
|
25
|
+
reject(new Error(response.error.message));
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
await this.send(JSON.stringify(message));
|
|
29
|
+
return promise;
|
|
30
|
+
}
|
|
31
|
+
async notify(method, ...params) {
|
|
32
|
+
const message = { jsonrpc: '2.0', method, params };
|
|
33
|
+
await this.send(JSON.stringify(message));
|
|
34
|
+
}
|
|
35
|
+
async handle(message) {
|
|
36
|
+
if (typeof message === 'string')
|
|
37
|
+
return this.handle(JSON.parse(message));
|
|
38
|
+
if (Buffer.isBuffer(message))
|
|
39
|
+
return this.handle(message.toString());
|
|
40
|
+
const json = message;
|
|
41
|
+
if (json.jsonrpc !== '2.0')
|
|
42
|
+
throw new Error('Invalid JSON-RPC message');
|
|
43
|
+
if (!('id' in json))
|
|
44
|
+
return;
|
|
45
|
+
if (json.id === undefined)
|
|
46
|
+
return;
|
|
47
|
+
this.listeners.forEach(listener => listener(json));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=JSONRPCClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JSONRPCClient.js","sourceRoot":"","sources":["../../src/models/JSONRPCClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAU/B,MAAM,OAAO,aAAa;IAKK;IAJZ,SAAS,GAEX,EAAE,CAAA;IAEjB,YAA6B,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;IAEjD,WAAW,CAChB,QAES;QAET,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,GAAG,MAAa;QAChD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;QAEnB,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAW,CAAA;QAE/D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACtC,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE;oBAAE,OAAM;gBAE9B,GAAG,EAAE,CAAA;gBAEL,IAAI,QAAQ,IAAI,QAAQ;oBAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;;oBAC7C,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAExC,OAAO,OAAO,CAAA;IAChB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,GAAG,MAAa;QAClD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAW,CAAA;QAE3D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1C,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAY;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QAExE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEpE,MAAM,IAAI,GAAG,OAA0B,CAAA;QAEvC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAEvE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAM;QAE3B,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;YAAE,OAAM;QAEjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type ValidateFunction } from 'ajv';
|
|
2
|
+
import Type from 'typebox';
|
|
3
|
+
export interface JSONRPCServerServerMethodConfig<TSchema extends Type.TSchema | null = null> {
|
|
4
|
+
schema?: TSchema;
|
|
5
|
+
}
|
|
6
|
+
export type ParamsSchema = readonly Type.TSchema[];
|
|
7
|
+
export type ParamsSchemaToParams<TParamsSchema extends ParamsSchema> = TParamsSchema extends readonly [
|
|
8
|
+
infer TParamSchema extends Type.TSchema,
|
|
9
|
+
...infer TRestParamsSchema extends ParamsSchema
|
|
10
|
+
] ? readonly [
|
|
11
|
+
Type.Static<TParamSchema>,
|
|
12
|
+
...ParamsSchemaToParams<TRestParamsSchema>
|
|
13
|
+
] : readonly [];
|
|
14
|
+
export type ParamsSchemaToParamsValidate<TParamsSchema extends ParamsSchema> = TParamsSchema extends readonly [
|
|
15
|
+
infer TParamSchema extends Type.TSchema,
|
|
16
|
+
...infer TRestParamsSchema extends ParamsSchema
|
|
17
|
+
] ? readonly [
|
|
18
|
+
ValidateFunction<Type.Static<TParamSchema>>,
|
|
19
|
+
...ParamsSchemaToParamsValidate<TRestParamsSchema>
|
|
20
|
+
] : readonly [];
|
|
21
|
+
export type JSONRPCServerServerMethodFn<TParamsSchema extends readonly Type.TSchema[] = [], TOutput = any> = (...args: ParamsSchemaToParams<TParamsSchema>) => TOutput | Promise<TOutput>;
|
|
22
|
+
export declare class JSONRPCServerMethod<TParamsSchema extends readonly Type.TSchema[] = [], TOutput = any> {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly schema: TParamsSchema;
|
|
25
|
+
readonly validate: ParamsSchemaToParamsValidate<TParamsSchema>;
|
|
26
|
+
readonly fn: JSONRPCServerServerMethodFn<TParamsSchema, TOutput>;
|
|
27
|
+
constructor(name: string, fn: JSONRPCServerServerMethodFn<TParamsSchema, TOutput>);
|
|
28
|
+
constructor(name: string, config: JSONRPCServerServerMethodConfig<TParamsSchema>, fn: JSONRPCServerServerMethodFn<TParamsSchema, TOutput>);
|
|
29
|
+
call(params: any): Promise<TOutput>;
|
|
30
|
+
}
|
|
31
|
+
export type JSONRPCCall = {
|
|
32
|
+
jsonrpc: '2.0';
|
|
33
|
+
id: string;
|
|
34
|
+
method: string;
|
|
35
|
+
params: any[];
|
|
36
|
+
};
|
|
37
|
+
export type JSONRPCResponseFulfilled = {
|
|
38
|
+
jsonrpc: '2.0';
|
|
39
|
+
id: string;
|
|
40
|
+
result: any;
|
|
41
|
+
};
|
|
42
|
+
export type JSONRPCResponseRejected = {
|
|
43
|
+
jsonrpc: '2.0';
|
|
44
|
+
id: string;
|
|
45
|
+
error: {
|
|
46
|
+
code: number;
|
|
47
|
+
message: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export type JSONRPCResponseNotification = {
|
|
51
|
+
jsonrpc: '2.0';
|
|
52
|
+
method: string;
|
|
53
|
+
params: any[];
|
|
54
|
+
};
|
|
55
|
+
export type JSONRPCResponse = JSONRPCResponseFulfilled | JSONRPCResponseRejected | JSONRPCResponseNotification;
|
|
56
|
+
export type JSONRPCServerSend = (message: string) => void | Promise<void>;
|
|
57
|
+
export declare class JSONRPCServer {
|
|
58
|
+
private readonly methods;
|
|
59
|
+
private readonly send;
|
|
60
|
+
constructor(methods: readonly JSONRPCServerMethod<any, any>[], send: JSONRPCServerSend);
|
|
61
|
+
handle(message: any): Promise<unknown>;
|
|
62
|
+
notify(method: string, ...params: any[]): Promise<void>;
|
|
63
|
+
}
|