@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.
Files changed (165) hide show
  1. package/.ai/skills/framework-dev/SKILL.md +346 -0
  2. package/README.md +172 -0
  3. package/dist/DevServer.d.ts +24 -0
  4. package/dist/DevServer.js +87 -0
  5. package/dist/DevServer.js.map +1 -0
  6. package/dist/__tests__/fixtures.d.ts +57 -0
  7. package/dist/__tests__/fixtures.js +31 -0
  8. package/dist/__tests__/fixtures.js.map +1 -0
  9. package/dist/claims.d.ts +2 -0
  10. package/dist/claims.js +54 -0
  11. package/dist/claims.js.map +1 -0
  12. package/dist/index.d.ts +15 -0
  13. package/dist/index.js +16 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/models/DevFileBinary.d.ts +15 -0
  16. package/dist/models/DevFileBinary.js +27 -0
  17. package/dist/models/DevFileBinary.js.map +1 -0
  18. package/dist/models/InMemoryDatabase.d.ts +20 -0
  19. package/dist/models/InMemoryDatabase.js +86 -0
  20. package/dist/models/InMemoryDatabase.js.map +1 -0
  21. package/dist/models/JSONCodec.d.ts +30 -0
  22. package/dist/models/JSONCodec.js +110 -0
  23. package/dist/models/JSONCodec.js.map +1 -0
  24. package/dist/models/JSONCodecKindFrameworkSerializableClass.d.ts +8 -0
  25. package/dist/models/JSONCodecKindFrameworkSerializableClass.js +7 -0
  26. package/dist/models/JSONCodecKindFrameworkSerializableClass.js.map +1 -0
  27. package/dist/models/JSONRPCClient.d.ts +11 -0
  28. package/dist/models/JSONRPCClient.js +50 -0
  29. package/dist/models/JSONRPCClient.js.map +1 -0
  30. package/dist/models/JSONRPCServer.d.ts +63 -0
  31. package/dist/models/JSONRPCServer.js +61 -0
  32. package/dist/models/JSONRPCServer.js.map +1 -0
  33. package/dist/models/WorkflowRun.d.ts +18 -0
  34. package/dist/models/WorkflowRun.js +20 -0
  35. package/dist/models/WorkflowRun.js.map +1 -0
  36. package/dist/models/WorkflowRunActivity.d.ts +40 -0
  37. package/dist/models/WorkflowRunActivity.js +52 -0
  38. package/dist/models/WorkflowRunActivity.js.map +1 -0
  39. package/dist/models/claims/DevCacheClaim.d.ts +6 -0
  40. package/dist/models/claims/DevCacheClaim.js +12 -0
  41. package/dist/models/claims/DevCacheClaim.js.map +1 -0
  42. package/dist/models/claims/DevFileSystemClaim.d.ts +7 -0
  43. package/dist/models/claims/DevFileSystemClaim.js +30 -0
  44. package/dist/models/claims/DevFileSystemClaim.js.map +1 -0
  45. package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.d.ts +7 -0
  46. package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.js +31 -0
  47. package/dist/models/claims/DevGetActivityUniqueIdentifierClaim.js.map +1 -0
  48. package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.d.ts +6 -0
  49. package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.js +13 -0
  50. package/dist/models/claims/DevGetProjectUniqueIdentifierClaim.js.map +1 -0
  51. package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.d.ts +6 -0
  52. package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.js +13 -0
  53. package/dist/models/claims/DevGetProjectVersionUniqueIdentifierClaim.js.map +1 -0
  54. package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.d.ts +7 -0
  55. package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js +31 -0
  56. package/dist/models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js.map +1 -0
  57. package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.d.ts +7 -0
  58. package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.js +31 -0
  59. package/dist/models/claims/DevGetWorkflowUniqueIdentifierClaim.js.map +1 -0
  60. package/dist/models/claims/DevHttpClientRequestClaim.d.ts +5 -0
  61. package/dist/models/claims/DevHttpClientRequestClaim.js +39 -0
  62. package/dist/models/claims/DevHttpClientRequestClaim.js.map +1 -0
  63. package/dist/models/claims/DevORMClaim.d.ts +8 -0
  64. package/dist/models/claims/DevORMClaim.js +39 -0
  65. package/dist/models/claims/DevORMClaim.js.map +1 -0
  66. package/dist/models/claims/DevSftpClaim.d.ts +20 -0
  67. package/dist/models/claims/DevSftpClaim.js +148 -0
  68. package/dist/models/claims/DevSftpClaim.js.map +1 -0
  69. package/dist/models/claims/DevSmtpSendEmailClaim.d.ts +6 -0
  70. package/dist/models/claims/DevSmtpSendEmailClaim.js +32 -0
  71. package/dist/models/claims/DevSmtpSendEmailClaim.js.map +1 -0
  72. package/dist/models/claims/DevWorkflowClaim.d.ts +7 -0
  73. package/dist/models/claims/DevWorkflowClaim.js +38 -0
  74. package/dist/models/claims/DevWorkflowClaim.js.map +1 -0
  75. package/dist/repositories/WorkflowRun.repository.d.ts +8 -0
  76. package/dist/repositories/WorkflowRun.repository.js +27 -0
  77. package/dist/repositories/WorkflowRun.repository.js.map +1 -0
  78. package/dist/repositories/WorkflowRunActivity.repository.d.ts +8 -0
  79. package/dist/repositories/WorkflowRunActivity.repository.js +36 -0
  80. package/dist/repositories/WorkflowRunActivity.repository.js.map +1 -0
  81. package/dist/services/BuildWorkflowRunResult.service.d.ts +8 -0
  82. package/dist/services/BuildWorkflowRunResult.service.js +49 -0
  83. package/dist/services/BuildWorkflowRunResult.service.js.map +1 -0
  84. package/dist/services/RuntimeContext.service.d.ts +10 -0
  85. package/dist/services/RuntimeContext.service.js +22 -0
  86. package/dist/services/RuntimeContext.service.js.map +1 -0
  87. package/dist/services/TimeoutScheduler.service.d.ts +5 -0
  88. package/dist/services/TimeoutScheduler.service.js +33 -0
  89. package/dist/services/TimeoutScheduler.service.js.map +1 -0
  90. package/dist/services/WorkflowRunAsyncActivityFacade.service.d.ts +20 -0
  91. package/dist/services/WorkflowRunAsyncActivityFacade.service.js +54 -0
  92. package/dist/services/WorkflowRunAsyncActivityFacade.service.js.map +1 -0
  93. package/dist/services/WorkflowRunFacade.service.d.ts +13 -0
  94. package/dist/services/WorkflowRunFacade.service.js +40 -0
  95. package/dist/services/WorkflowRunFacade.service.js.map +1 -0
  96. package/dist/services/WorkflowRunSyncActivityFacade.service.d.ts +7 -0
  97. package/dist/services/WorkflowRunSyncActivityFacade.service.js +26 -0
  98. package/dist/services/WorkflowRunSyncActivityFacade.service.js.map +1 -0
  99. package/dist/tools/build-tools.d.ts +6 -0
  100. package/dist/tools/build-tools.js +7 -0
  101. package/dist/tools/build-tools.js.map +1 -0
  102. package/dist/tools/find-claim-by-constructor.d.ts +1 -0
  103. package/dist/tools/find-claim-by-constructor.js +8 -0
  104. package/dist/tools/find-claim-by-constructor.js.map +1 -0
  105. package/dist/tools/is-workflow-waiting.d.ts +4 -0
  106. package/dist/tools/is-workflow-waiting.js +12 -0
  107. package/dist/tools/is-workflow-waiting.js.map +1 -0
  108. package/dist/tools/json-codec.d.ts +8 -0
  109. package/dist/tools/json-codec.js +14 -0
  110. package/dist/tools/json-codec.js.map +1 -0
  111. package/dist/tools/json-schema-to-inquirer-question.d.ts +11 -0
  112. package/dist/tools/json-schema-to-inquirer-question.js +34 -0
  113. package/dist/tools/json-schema-to-inquirer-question.js.map +1 -0
  114. package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.d.ts +1 -0
  115. package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js +11 -0
  116. package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js.map +1 -0
  117. package/dist/tools/resolve-package-json-path.d.ts +1 -0
  118. package/dist/tools/resolve-package-json-path.js +21 -0
  119. package/dist/tools/resolve-package-json-path.js.map +1 -0
  120. package/dist/tools/resolve-tsconfig-path-from-package-json-path.d.ts +1 -0
  121. package/dist/tools/resolve-tsconfig-path-from-package-json-path.js +14 -0
  122. package/dist/tools/resolve-tsconfig-path-from-package-json-path.js.map +1 -0
  123. package/dist/tools/ts-build-watch.d.ts +12 -0
  124. package/dist/tools/ts-build-watch.js +46 -0
  125. package/dist/tools/ts-build-watch.js.map +1 -0
  126. package/dist/tools/ts-build.d.ts +6 -0
  127. package/dist/tools/ts-build.js +37 -0
  128. package/dist/tools/ts-build.js.map +1 -0
  129. package/dist/tools/up-app.d.ts +2 -0
  130. package/dist/tools/up-app.js +10 -0
  131. package/dist/tools/up-app.js.map +1 -0
  132. package/dist/transport/DevServerJsonRpc.d.ts +2 -0
  133. package/dist/transport/DevServerJsonRpc.js +42 -0
  134. package/dist/transport/DevServerJsonRpc.js.map +1 -0
  135. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.d.ts +14 -0
  136. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js +64 -0
  137. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js.map +1 -0
  138. package/dist/use-cases/CreateWorkflowRun.usecase.d.ts +14 -0
  139. package/dist/use-cases/CreateWorkflowRun.usecase.js +43 -0
  140. package/dist/use-cases/CreateWorkflowRun.usecase.js.map +1 -0
  141. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.d.ts +9 -0
  142. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js +68 -0
  143. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js.map +1 -0
  144. package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +20 -0
  145. package/dist/use-cases/NextTickWorkflowRun.usecase.js +151 -0
  146. package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -0
  147. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.d.ts +8 -0
  148. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js +38 -0
  149. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js.map +1 -0
  150. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.d.ts +7 -0
  151. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js +44 -0
  152. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js.map +1 -0
  153. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.d.ts +10 -0
  154. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js +57 -0
  155. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js.map +1 -0
  156. package/dist/use-cases/WorkflowRunBuildHistory.usecase.d.ts +8 -0
  157. package/dist/use-cases/WorkflowRunBuildHistory.usecase.js +41 -0
  158. package/dist/use-cases/WorkflowRunBuildHistory.usecase.js.map +1 -0
  159. package/dist/use-cases/WorkflowRunSyncActivity.usecase.d.ts +4 -0
  160. package/dist/use-cases/WorkflowRunSyncActivity.usecase.js +26 -0
  161. package/dist/use-cases/WorkflowRunSyncActivity.usecase.js.map +1 -0
  162. package/dist/workers/app-process.d.ts +3 -0
  163. package/dist/workers/app-process.js +42 -0
  164. package/dist/workers/app-process.js.map +1 -0
  165. 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"}
@@ -0,0 +1,2 @@
1
+ import { type ClaimProvider } from '@t4h.framework/core';
2
+ export declare const claims: readonly ClaimProvider<any>[];
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"}
@@ -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
+ }