@t4h.framework/core 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/.ai/skills/framework-core/SKILL.md +19 -19
  2. package/.ai/skills/framework-workflow-creation/SKILL.md +18 -17
  3. package/.ai/skills/framework-workflow-testing/SKILL.md +2 -4
  4. package/CHANGELOG.md +25 -0
  5. package/README.md +59 -7
  6. package/dist/activities/StartWorkflowActivity.d.ts +13 -13
  7. package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
  8. package/dist/activities/StartWorkflowActivity.js +1 -3
  9. package/dist/activities/StartWorkflowActivity.js.map +1 -1
  10. package/dist/activities/WorkflowBatchSizeActivity.d.ts +2 -2
  11. package/dist/activities/WorkflowBatchSizeActivity.d.ts.map +1 -1
  12. package/dist/activities/WorkflowBatchSizeActivity.js.map +1 -1
  13. package/dist/activities/WorkflowBatchTakeActivity.d.ts +2 -2
  14. package/dist/activities/WorkflowBatchTakeActivity.d.ts.map +1 -1
  15. package/dist/activities/WorkflowBatchTakeActivity.js +1 -1
  16. package/dist/activities/WorkflowBatchTakeActivity.js.map +1 -1
  17. package/dist/activities/WorkflowBatchToArrayActivity.d.ts +2 -2
  18. package/dist/activities/WorkflowBatchToArrayActivity.d.ts.map +1 -1
  19. package/dist/activities/WorkflowBatchToArrayActivity.js.map +1 -1
  20. package/dist/eslint/index.d.ts +16 -0
  21. package/dist/eslint/index.d.ts.map +1 -0
  22. package/dist/eslint/index.js +69 -0
  23. package/dist/eslint/index.js.map +1 -0
  24. package/dist/eslint/rules/env-from-env-design.d.ts +3 -0
  25. package/dist/eslint/rules/env-from-env-design.d.ts.map +1 -0
  26. package/dist/eslint/rules/env-from-env-design.js +85 -0
  27. package/dist/eslint/rules/env-from-env-design.js.map +1 -0
  28. package/dist/eslint/rules/no-binary-stream-outside-activity.d.ts +3 -0
  29. package/dist/eslint/rules/no-binary-stream-outside-activity.d.ts.map +1 -0
  30. package/dist/eslint/rules/no-binary-stream-outside-activity.js +51 -0
  31. package/dist/eslint/rules/no-binary-stream-outside-activity.js.map +1 -0
  32. package/dist/eslint/rules/no-binary-subclass.d.ts +3 -0
  33. package/dist/eslint/rules/no-binary-subclass.d.ts.map +1 -0
  34. package/dist/eslint/rules/no-binary-subclass.js +31 -0
  35. package/dist/eslint/rules/no-binary-subclass.js.map +1 -0
  36. package/dist/eslint/rules/no-framework-activity-in-app.d.ts +3 -0
  37. package/dist/eslint/rules/no-framework-activity-in-app.d.ts.map +1 -0
  38. package/dist/eslint/rules/no-framework-activity-in-app.js +41 -0
  39. package/dist/eslint/rules/no-framework-activity-in-app.js.map +1 -0
  40. package/dist/eslint/rules/no-io-in-workflow.d.ts +3 -0
  41. package/dist/eslint/rules/no-io-in-workflow.d.ts.map +1 -0
  42. package/dist/eslint/rules/no-io-in-workflow.js +92 -0
  43. package/dist/eslint/rules/no-io-in-workflow.js.map +1 -0
  44. package/dist/eslint/rules/no-literal-secret-in-authorization.d.ts +3 -0
  45. package/dist/eslint/rules/no-literal-secret-in-authorization.d.ts.map +1 -0
  46. package/dist/eslint/rules/no-literal-secret-in-authorization.js +56 -0
  47. package/dist/eslint/rules/no-literal-secret-in-authorization.js.map +1 -0
  48. package/dist/eslint/rules/no-nondeterministic-in-workflow.d.ts +3 -0
  49. package/dist/eslint/rules/no-nondeterministic-in-workflow.d.ts.map +1 -0
  50. package/dist/eslint/rules/no-nondeterministic-in-workflow.js +102 -0
  51. package/dist/eslint/rules/no-nondeterministic-in-workflow.js.map +1 -0
  52. package/dist/eslint/rules/no-secret-to-string.d.ts +3 -0
  53. package/dist/eslint/rules/no-secret-to-string.d.ts.map +1 -0
  54. package/dist/eslint/rules/no-secret-to-string.js +97 -0
  55. package/dist/eslint/rules/no-secret-to-string.js.map +1 -0
  56. package/dist/eslint/rules/no-testing-import-in-source.d.ts +3 -0
  57. package/dist/eslint/rules/no-testing-import-in-source.d.ts.map +1 -0
  58. package/dist/eslint/rules/no-testing-import-in-source.js +34 -0
  59. package/dist/eslint/rules/no-testing-import-in-source.js.map +1 -0
  60. package/dist/eslint/rules/require-workflow-id.d.ts +3 -0
  61. package/dist/eslint/rules/require-workflow-id.d.ts.map +1 -0
  62. package/dist/eslint/rules/require-workflow-id.js +38 -0
  63. package/dist/eslint/rules/require-workflow-id.js.map +1 -0
  64. package/dist/eslint/tools/bindings.d.ts +16 -0
  65. package/dist/eslint/tools/bindings.d.ts.map +1 -0
  66. package/dist/eslint/tools/bindings.js +38 -0
  67. package/dist/eslint/tools/bindings.js.map +1 -0
  68. package/dist/eslint/tools/coreTypes.d.ts +9 -0
  69. package/dist/eslint/tools/coreTypes.d.ts.map +1 -0
  70. package/dist/eslint/tools/coreTypes.js +115 -0
  71. package/dist/eslint/tools/coreTypes.js.map +1 -0
  72. package/dist/eslint/tools/workflowSides.d.ts +15 -0
  73. package/dist/eslint/tools/workflowSides.d.ts.map +1 -0
  74. package/dist/eslint/tools/workflowSides.js +61 -0
  75. package/dist/eslint/tools/workflowSides.js.map +1 -0
  76. package/dist/models/Activity.d.ts +5 -5
  77. package/dist/models/Activity.d.ts.map +1 -1
  78. package/dist/models/App.d.ts +8 -8
  79. package/dist/models/App.d.ts.map +1 -1
  80. package/dist/models/App.js.map +1 -1
  81. package/dist/models/AsyncActivity.d.ts +5 -5
  82. package/dist/models/AsyncActivity.d.ts.map +1 -1
  83. package/dist/models/AsyncActivity.js +1 -1
  84. package/dist/models/AsyncActivity.js.map +1 -1
  85. package/dist/models/AsyncActivityAdvanceResult.d.ts +4 -4
  86. package/dist/models/AsyncActivityAdvanceResult.d.ts.map +1 -1
  87. package/dist/models/AsyncActivityAdvanceResult.js.map +1 -1
  88. package/dist/models/AsyncActivityAwaitable.d.ts +1 -1
  89. package/dist/models/AsyncActivityAwaitable.d.ts.map +1 -1
  90. package/dist/models/AsyncActivityAwaitable.js +4 -1
  91. package/dist/models/AsyncActivityAwaitable.js.map +1 -1
  92. package/dist/models/Authorization.d.ts +2 -2
  93. package/dist/models/Authorization.d.ts.map +1 -1
  94. package/dist/models/Claim.d.ts +5 -4
  95. package/dist/models/Claim.d.ts.map +1 -1
  96. package/dist/models/Claim.js.map +1 -1
  97. package/dist/models/Env.d.ts.map +1 -1
  98. package/dist/models/Env.js +4 -1
  99. package/dist/models/Env.js.map +1 -1
  100. package/dist/models/EnvDesign.d.ts +2 -2
  101. package/dist/models/EnvDesign.d.ts.map +1 -1
  102. package/dist/models/EnvDesign.js +15 -14
  103. package/dist/models/EnvDesign.js.map +1 -1
  104. package/dist/models/History.d.ts +1 -1
  105. package/dist/models/History.d.ts.map +1 -1
  106. package/dist/models/History.js +2 -1
  107. package/dist/models/History.js.map +1 -1
  108. package/dist/models/Logger.d.ts.map +1 -1
  109. package/dist/models/Logger.js +7 -3
  110. package/dist/models/Logger.js.map +1 -1
  111. package/dist/models/SerializableHelper.d.ts +1 -1
  112. package/dist/models/SerializableHelper.d.ts.map +1 -1
  113. package/dist/models/SyncActivity.d.ts +2 -2
  114. package/dist/models/SyncActivity.d.ts.map +1 -1
  115. package/dist/models/SyncActivity.js.map +1 -1
  116. package/dist/models/Workflow.d.ts +6 -4
  117. package/dist/models/Workflow.d.ts.map +1 -1
  118. package/dist/models/Workflow.js +5 -5
  119. package/dist/models/Workflow.js.map +1 -1
  120. package/dist/testing/TestClock.d.ts.map +1 -1
  121. package/dist/testing/TestClock.js +1 -0
  122. package/dist/testing/TestClock.js.map +1 -1
  123. package/dist/testing/TestWorkflowEnvironment.d.ts +3 -3
  124. package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
  125. package/dist/testing/TestWorkflowEnvironment.js +2 -1
  126. package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
  127. package/dist/testing/tools/clone.d.ts +1 -1
  128. package/dist/testing/tools/clone.d.ts.map +1 -1
  129. package/dist/testing/tools/clone.js +30 -20
  130. package/dist/testing/tools/clone.js.map +1 -1
  131. package/dist/testing/tools/create-mock-claim.d.ts.map +1 -1
  132. package/dist/testing/tools/create-mock-claim.js +4 -1
  133. package/dist/testing/tools/create-mock-claim.js.map +1 -1
  134. package/dist/testing/tools/create-mock-claims.d.ts +4 -1
  135. package/dist/testing/tools/create-mock-claims.d.ts.map +1 -1
  136. package/dist/testing/tools/create-mock-claims.js.map +1 -1
  137. package/dist/testing/tools/mock-async.d.ts +3 -1
  138. package/dist/testing/tools/mock-async.d.ts.map +1 -1
  139. package/dist/testing/tools/mock-async.js +8 -6
  140. package/dist/testing/tools/mock-async.js.map +1 -1
  141. package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -1
  142. package/dist/testing/tools/resolve-async-activity.js +33 -19
  143. package/dist/testing/tools/resolve-async-activity.js.map +1 -1
  144. package/dist/testing/tools/run-workflow-ticks.d.ts +2 -2
  145. package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -1
  146. package/dist/testing/tools/run-workflow-ticks.js +15 -7
  147. package/dist/testing/tools/run-workflow-ticks.js.map +1 -1
  148. package/dist/testing/tools/run-workflow.d.ts +3 -3
  149. package/dist/testing/tools/run-workflow.d.ts.map +1 -1
  150. package/dist/testing/typings/ClaimConstructor.d.ts +2 -1
  151. package/dist/testing/typings/ClaimConstructor.d.ts.map +1 -1
  152. package/dist/tools/AsyncActivityCallback.d.ts.map +1 -1
  153. package/dist/tools/AsyncActivityCallback.js +3 -1
  154. package/dist/tools/AsyncActivityCallback.js.map +1 -1
  155. package/dist/tools/Internals.d.ts +5 -5
  156. package/dist/tools/Internals.d.ts.map +1 -1
  157. package/dist/tools/Internals.js.map +1 -1
  158. package/dist/tools/WorkflowBatchQuery.d.ts +1 -1
  159. package/dist/tools/WorkflowBatchQuery.d.ts.map +1 -1
  160. package/dist/tools/WorkflowBatchQuery.js +7 -4
  161. package/dist/tools/WorkflowBatchQuery.js.map +1 -1
  162. package/dist/typings/Serializable.d.ts +2 -1
  163. package/dist/typings/Serializable.d.ts.map +1 -1
  164. package/package.json +17 -2
  165. package/dist/tools/isActivity.d.ts +0 -4
  166. package/dist/tools/isActivity.d.ts.map +0 -1
  167. package/dist/tools/isActivity.js +0 -13
  168. package/dist/tools/isActivity.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-nondeterministic-in-workflow.js","sourceRoot":"","sources":["../../../src/eslint/rules/no-nondeterministic-in-workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ export declare const noSecretToString: Rule.RuleModule;
3
+ //# sourceMappingURL=no-secret-to-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-secret-to-string.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/no-secret-to-string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,QAAQ,CAAA;AA0EzC,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,UAiDnC,CAAA"}
@@ -0,0 +1,97 @@
1
+ import { resolveBinding } from '../tools/bindings.js';
2
+ import { createCoreTypes } from '../tools/coreTypes.js';
3
+ const SECRET_CLASSES = new Set(['Secret']);
4
+ const STRING_METHODS = new Set(['toString', 'valueOf', 'toJSON']);
5
+ function isGlobal(scope, name) {
6
+ return resolveBinding(scope, name).kind === 'global';
7
+ }
8
+ function toMember(node) {
9
+ if (node.type !== 'MemberExpression' || node.computed)
10
+ return undefined;
11
+ if (node.property.type !== 'Identifier')
12
+ return undefined;
13
+ return { object: node.object, name: node.property.name };
14
+ }
15
+ function globalCallOf(scope, callee) {
16
+ if (callee.type === 'Identifier')
17
+ return callee.name === 'String' && isGlobal(scope, 'String')
18
+ ? 'String'
19
+ : undefined;
20
+ const member = toMember(callee);
21
+ if (member?.object.type !== 'Identifier' || member.object.name !== 'JSON')
22
+ return undefined;
23
+ if (member.name !== 'stringify' || !isGlobal(scope, 'JSON'))
24
+ return undefined;
25
+ return 'JSON.stringify';
26
+ }
27
+ function propertyValues(node) {
28
+ if (node?.type !== 'ObjectExpression')
29
+ return [];
30
+ return node.properties.flatMap(property => property.type === 'Property' ? [property.value] : []);
31
+ }
32
+ function stringifiedArguments(call, argument) {
33
+ if (!argument)
34
+ return [];
35
+ if (call === 'String')
36
+ return [argument];
37
+ return [argument, ...propertyValues(argument)];
38
+ }
39
+ function stringifiedByCall(scope, node) {
40
+ if (node.type !== 'CallExpression')
41
+ return [];
42
+ const callee = node.callee;
43
+ const call = globalCallOf(scope, callee);
44
+ if (call)
45
+ return stringifiedArguments(call, node.arguments[0]);
46
+ const member = toMember(callee);
47
+ if (!member || !STRING_METHODS.has(member.name))
48
+ return [];
49
+ return [member.object];
50
+ }
51
+ export const noSecretToString = {
52
+ meta: {
53
+ type: 'problem',
54
+ docs: {
55
+ description: 'Disallows turning a Secret into a string',
56
+ },
57
+ messages: {
58
+ toString: 'Do not turn a Secret into a string. A Secret holds only the name of the variable, and it throws when it becomes a string. Pass the Secret whole to the field that takes it.',
59
+ },
60
+ schema: [],
61
+ },
62
+ create(context) {
63
+ const types = createCoreTypes(context);
64
+ function check(node) {
65
+ if (!node || node.type === 'PrivateIdentifier')
66
+ return;
67
+ if (!types.extendsCoreClass(node, SECRET_CLASSES))
68
+ return;
69
+ context.report({ node, messageId: 'toString' });
70
+ }
71
+ return {
72
+ TemplateLiteral(node) {
73
+ if (node.parent.type === 'TaggedTemplateExpression')
74
+ return;
75
+ node.expressions.forEach(expression => {
76
+ check(expression);
77
+ });
78
+ },
79
+ BinaryExpression(node) {
80
+ if (node.operator !== '+')
81
+ return;
82
+ check(node.left);
83
+ check(node.right);
84
+ },
85
+ AssignmentExpression(node) {
86
+ if (node.operator !== '+=')
87
+ return;
88
+ check(node.left);
89
+ check(node.right);
90
+ },
91
+ CallExpression(node) {
92
+ stringifiedByCall(context.sourceCode.getScope(node), node).forEach(check);
93
+ },
94
+ };
95
+ },
96
+ };
97
+ //# sourceMappingURL=no-secret-to-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-secret-to-string.js","sourceRoot":"","sources":["../../../src/eslint/rules/no-secret-to-string.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ export declare const noTestingImportInSource: Rule.RuleModule;
3
+ //# sourceMappingURL=no-testing-import-in-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-testing-import-in-source.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/no-testing-import-in-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAYlC,eAAO,MAAM,uBAAuB,EAAE,IAAI,CAAC,UA4B1C,CAAA"}
@@ -0,0 +1,34 @@
1
+ const TESTING_ENTRY = /^@t4h\.framework\/[^/]+\/testing(?:\/.*)?$/;
2
+ function testingSource(node) {
3
+ const source = node.source;
4
+ if (source?.type !== 'Literal' || typeof source.value !== 'string')
5
+ return undefined;
6
+ return TESTING_ENTRY.test(source.value) ? source.value : undefined;
7
+ }
8
+ export const noTestingImportInSource = {
9
+ meta: {
10
+ type: 'problem',
11
+ docs: {
12
+ description: 'Disallows the testing entry of a framework package out of a test file',
13
+ },
14
+ messages: {
15
+ testing: 'Do not import {{source}} here. The testing entry is for tests only. Import it only in a test file.',
16
+ },
17
+ schema: [],
18
+ },
19
+ create(context) {
20
+ function check(node) {
21
+ const source = testingSource(node);
22
+ if (!source)
23
+ return;
24
+ context.report({ node, messageId: 'testing', data: { source } });
25
+ }
26
+ return {
27
+ ImportDeclaration: check,
28
+ ExportAllDeclaration: check,
29
+ ExportNamedDeclaration: check,
30
+ ImportExpression: check,
31
+ };
32
+ },
33
+ };
34
+ //# sourceMappingURL=no-testing-import-in-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-testing-import-in-source.js","sourceRoot":"","sources":["../../../src/eslint/rules/no-testing-import-in-source.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,4CAA4C,CAAA;AAElE,SAAS,aAAa,CAAC,IAAe;IACpC,MAAM,MAAM,GAAI,IAAsC,CAAC,MAAM,CAAA;IAC7D,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChE,OAAO,SAAS,CAAA;IAElB,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACtD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,uEAAuE;SAC1E;QACD,QAAQ,EAAE;YACR,OAAO,EACL,oGAAoG;SACvG;QACD,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,SAAS,KAAK,CAAC,IAAe;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM;gBAAE,OAAM;YAEnB,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,OAAO;YACL,iBAAiB,EAAE,KAAK;YACxB,oBAAoB,EAAE,KAAK;YAC3B,sBAAsB,EAAE,KAAK;YAC7B,gBAAgB,EAAE,KAAK;SACxB,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ export declare const requireWorkflowId: Rule.RuleModule;
3
+ //# sourceMappingURL=require-workflow-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-workflow-id.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/require-workflow-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAkBlC,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,UAwBpC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { createCoreTypes } from '../tools/coreTypes.js';
2
+ const WORKFLOW_CLASSES = new Set(['Workflow']);
3
+ const FUNCTION_TYPES = new Set([
4
+ 'FunctionExpression',
5
+ 'ArrowFunctionExpression',
6
+ ]);
7
+ function lacksId(types, argument) {
8
+ if (!argument || argument.type === 'SpreadElement')
9
+ return false;
10
+ if (FUNCTION_TYPES.has(argument.type))
11
+ return true;
12
+ return !types.hasProperty(argument, 'id');
13
+ }
14
+ export const requireWorkflowId = {
15
+ meta: {
16
+ type: 'problem',
17
+ docs: {
18
+ description: 'Requires an id in the options of a Workflow',
19
+ },
20
+ messages: {
21
+ missingId: "Give this Workflow a stable id, for example new Workflow({ id: 'order' }, fn). The runtime and nested starts find a workflow by its id.",
22
+ },
23
+ schema: [],
24
+ },
25
+ create(context) {
26
+ const types = createCoreTypes(context);
27
+ return {
28
+ NewExpression(node) {
29
+ if (!types.isCoreClass(node, WORKFLOW_CLASSES))
30
+ return;
31
+ if (!lacksId(types, node.arguments[0]))
32
+ return;
33
+ context.report({ node, messageId: 'missingId' });
34
+ },
35
+ };
36
+ },
37
+ };
38
+ //# sourceMappingURL=require-workflow-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-workflow-id.js","sourceRoot":"","sources":["../../../src/eslint/rules/require-workflow-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAkB,MAAM,uBAAuB,CAAA;AAEvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AAE9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,oBAAoB;IACpB,yBAAyB;CAC1B,CAAC,CAAA;AAEF,SAAS,OAAO,CAAC,KAAgB,EAAE,QAA+B;IAChE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,KAAK,CAAA;IAChE,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAElD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,6CAA6C;SAC3D;QACD,QAAQ,EAAE;YACR,SAAS,EACP,yIAAyI;SAC5I;QACD,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO;YACL,aAAa,CAAC,IAAI;gBAChB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;oBAAE,OAAM;gBACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAA0B,CAAC;oBAAE,OAAM;gBAEvE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAA;YAClD,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { Scope } from 'eslint';
2
+ export type Binding = {
3
+ kind: 'global';
4
+ } | {
5
+ kind: 'local';
6
+ } | {
7
+ kind: 'import';
8
+ source: string;
9
+ imported: string;
10
+ };
11
+ /**
12
+ * Tells where a name comes from in a scope: a global, a local declaration or
13
+ * an import, with the module and the imported name.
14
+ */
15
+ export declare function resolveBinding(scope: Scope.Scope, name: string): Binding;
16
+ //# sourceMappingURL=bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/eslint/tools/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEzC,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAwBxD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYxE"}
@@ -0,0 +1,38 @@
1
+ function findVariable(scope, name) {
2
+ for (let current = scope; current; current = current.upper) {
3
+ const variable = current.set.get(name);
4
+ if (variable)
5
+ return variable;
6
+ }
7
+ return undefined;
8
+ }
9
+ function importedName(specifier) {
10
+ if (specifier.type === 'ImportDefaultSpecifier')
11
+ return 'default';
12
+ if (specifier.type === 'ImportNamespaceSpecifier')
13
+ return '*';
14
+ if (specifier.type !== 'ImportSpecifier')
15
+ return undefined;
16
+ if (specifier.imported.type !== 'Identifier')
17
+ return undefined;
18
+ return specifier.imported.name;
19
+ }
20
+ /**
21
+ * Tells where a name comes from in a scope: a global, a local declaration or
22
+ * an import, with the module and the imported name.
23
+ */
24
+ export function resolveBinding(scope, name) {
25
+ const definition = findVariable(scope, name)?.defs[0];
26
+ if (!definition)
27
+ return { kind: 'global' };
28
+ if (definition.type !== 'ImportBinding')
29
+ return { kind: 'local' };
30
+ const declaration = definition.parent;
31
+ if (declaration.type !== 'ImportDeclaration')
32
+ return { kind: 'local' };
33
+ const imported = importedName(definition.node);
34
+ if (!imported)
35
+ return { kind: 'local' };
36
+ return { kind: 'import', source: String(declaration.source.value), imported };
37
+ }
38
+ //# sourceMappingURL=bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../../src/eslint/tools/bindings.ts"],"names":[],"mappings":"AAOA,SAAS,YAAY,CAAC,KAAkB,EAAE,IAAY;IACpD,KACE,IAAI,OAAO,GAAuB,KAAK,EACvC,OAAO,EACP,OAAO,GAAG,OAAO,CAAC,KAAK,EACvB,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;IAC/B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,SAAoB;IACxC,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB;QAAE,OAAO,SAAS,CAAA;IACjE,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B;QAAE,OAAO,GAAG,CAAA;IAC7D,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,SAAS,CAAA;IAC1D,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,SAAS,CAAA;IAE9D,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB,EAAE,IAAY;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAEjE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAmB,CAAA;IAClD,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAEtE,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,IAAiB,CAAC,CAAA;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAEvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;AAC/E,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Rule } from 'eslint';
2
+ export interface CoreTypes {
3
+ extendsCoreClass(node: Rule.Node, names: ReadonlySet<string>): boolean;
4
+ isCoreClass(node: Rule.Node, names: ReadonlySet<string>): boolean;
5
+ isDeclaredInOtherFrameworkPackage(node: Rule.Node): boolean;
6
+ hasProperty(node: Rule.Node, name: string): boolean;
7
+ }
8
+ export declare function createCoreTypes(context: Rule.RuleContext): CoreTypes;
9
+ //# sourceMappingURL=coreTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreTypes.d.ts","sourceRoot":"","sources":["../../../src/eslint/tools/coreTypes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAQlC,MAAM,WAAW,SAAS;IACxB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;IACtE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;IACjE,iCAAiC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IAC3D,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACpD;AA0HD,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,CA6BpE"}
@@ -0,0 +1,115 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ const SCOPE = '@t4h.framework/';
4
+ const CORE_PACKAGE = '@t4h.framework/core';
5
+ const CLASS_NODES = new Set(['ClassDeclaration', 'ClassExpression']);
6
+ const packageNames = new Map();
7
+ function readPackageName(directory) {
8
+ try {
9
+ const content = fs.readFileSync(path.join(directory, 'package.json'), 'utf8');
10
+ return JSON.parse(content).name;
11
+ }
12
+ catch (error) {
13
+ if (error.code === 'ENOENT')
14
+ return undefined;
15
+ throw error;
16
+ }
17
+ }
18
+ function findPackageName(directory) {
19
+ if (packageNames.has(directory))
20
+ return packageNames.get(directory);
21
+ const own = readPackageName(directory);
22
+ const parent = path.dirname(directory);
23
+ const isRoot = parent === directory;
24
+ const name = typeof own === 'string' || isRoot ? own : findPackageName(parent);
25
+ packageNames.set(directory, typeof name === 'string' ? name : undefined);
26
+ return packageNames.get(directory);
27
+ }
28
+ function packageNameOf(fileName) {
29
+ return findPackageName(path.dirname(path.resolve(fileName)));
30
+ }
31
+ function isInsideCore(fileName) {
32
+ return packageNameOf(fileName) === CORE_PACKAGE;
33
+ }
34
+ function isInsideOtherFrameworkPackage(fileName) {
35
+ const name = packageNameOf(fileName);
36
+ if (!name?.startsWith(SCOPE))
37
+ return false;
38
+ return name !== CORE_PACKAGE;
39
+ }
40
+ function declarationFiles(symbol) {
41
+ const declarations = symbol.declarations ?? [];
42
+ return declarations.map(declaration => declaration.getSourceFile().fileName);
43
+ }
44
+ function isDeclaredInCore(symbol) {
45
+ return declarationFiles(symbol).some(isInsideCore);
46
+ }
47
+ function isDeclaredInOtherFrameworkPackage(type) {
48
+ const symbol = type.getSymbol();
49
+ if (!symbol)
50
+ return false;
51
+ return declarationFiles(symbol).some(isInsideOtherFrameworkPackage);
52
+ }
53
+ function isCoreClass(type, names) {
54
+ const symbol = type.getSymbol();
55
+ if (!symbol || !names.has(symbol.getName()))
56
+ return false;
57
+ return isDeclaredInCore(symbol);
58
+ }
59
+ function toClassOrInterface(type) {
60
+ const target = type.target ?? type;
61
+ return target.isClassOrInterface() ? target : undefined;
62
+ }
63
+ function expand(checker, type) {
64
+ const apparent = checker.getApparentType(type);
65
+ if (apparent.isUnion())
66
+ return apparent.types;
67
+ const classOrInterface = toClassOrInterface(apparent);
68
+ const bases = classOrInterface ? checker.getBaseTypes(classOrInterface) : [];
69
+ return [apparent, ...bases];
70
+ }
71
+ function typeExtendsCoreClass(checker, type, names) {
72
+ const queue = [type];
73
+ const seen = new Set();
74
+ for (let current = queue.pop(); current; current = queue.pop()) {
75
+ if (seen.has(current))
76
+ continue;
77
+ seen.add(current);
78
+ if (isCoreClass(current, names))
79
+ return true;
80
+ queue.push(...expand(checker, current));
81
+ }
82
+ return false;
83
+ }
84
+ function getTypeServices(context) {
85
+ const services = context.sourceCode.parserServices;
86
+ if (!services?.program || !services.esTreeNodeToTSNodeMap)
87
+ throw new Error(`The rule ${context.id} needs type information. Enable parserOptions.projectService for this file.`);
88
+ return services;
89
+ }
90
+ export function createCoreTypes(context) {
91
+ const services = getTypeServices(context);
92
+ const checker = services.program.getTypeChecker();
93
+ function typeOf(node) {
94
+ const type = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
95
+ if (!CLASS_NODES.has(node.type))
96
+ return type;
97
+ const symbol = type.getSymbol();
98
+ return symbol ? checker.getDeclaredTypeOfSymbol(symbol) : type;
99
+ }
100
+ return {
101
+ extendsCoreClass(node, names) {
102
+ return typeExtendsCoreClass(checker, typeOf(node), names);
103
+ },
104
+ isCoreClass(node, names) {
105
+ return isCoreClass(typeOf(node), names);
106
+ },
107
+ isDeclaredInOtherFrameworkPackage(node) {
108
+ return isDeclaredInOtherFrameworkPackage(typeOf(node));
109
+ },
110
+ hasProperty(node, name) {
111
+ return checker.getPropertyOfType(typeOf(node), name) !== undefined;
112
+ },
113
+ };
114
+ }
115
+ //# sourceMappingURL=coreTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreTypes.js","sourceRoot":"","sources":["../../../src/eslint/tools/coreTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Rule } from 'eslint';
2
+ import type { CoreTypes } from './coreTypes.js';
3
+ export interface ClassMember {
4
+ name: string;
5
+ classNode: Rule.Node;
6
+ }
7
+ export declare function findClassMember(node: Rule.Node): ClassMember | undefined;
8
+ export declare function isActivityClass(types: CoreTypes, classNode: Rule.Node): boolean;
9
+ export declare function isFrontMethodName(name: string): boolean;
10
+ /**
11
+ * Tells if the node runs again on each replay: in the body of a workflow, or
12
+ * in the `toInput` or `toOutput` method of an activity.
13
+ */
14
+ export declare function isInWorkflowFront(types: CoreTypes, node: Rule.Node): boolean;
15
+ //# sourceMappingURL=workflowSides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowSides.d.ts","sourceRoot":"","sources":["../../../src/eslint/tools/workflowSides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,CAAC,IAAI,CAAA;CACrB;AAwBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,SAAS,CAOxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,WAErE;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,WAE7C;AASD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,WAOlE"}
@@ -0,0 +1,61 @@
1
+ const ACTIVITY_CLASSES = new Set(['SyncActivity', 'AsyncActivity']);
2
+ const WORKFLOW_CLASSES = new Set(['Workflow']);
3
+ const FRONT_METHODS = new Set(['constructor', 'toInput', 'toOutput']);
4
+ const FUNCTION_TYPES = new Set([
5
+ 'FunctionExpression',
6
+ 'ArrowFunctionExpression',
7
+ ]);
8
+ function toClassMember(node) {
9
+ if (node.type !== 'MethodDefinition' && node.type !== 'PropertyDefinition')
10
+ return undefined;
11
+ if (node.computed || node.key.type !== 'Identifier')
12
+ return undefined;
13
+ const classNode = node.parent.parent;
14
+ if (!classNode)
15
+ return undefined;
16
+ return { name: node.key.name, classNode };
17
+ }
18
+ export function findClassMember(node) {
19
+ for (let current = node.parent; current; current = current.parent) {
20
+ const member = toClassMember(current);
21
+ if (member)
22
+ return member;
23
+ }
24
+ return undefined;
25
+ }
26
+ export function isActivityClass(types, classNode) {
27
+ return types.extendsCoreClass(classNode, ACTIVITY_CLASSES);
28
+ }
29
+ function isWorkflowFunction(types, node) {
30
+ if (!FUNCTION_TYPES.has(node.type))
31
+ return false;
32
+ const parent = node.parent;
33
+ if (parent?.type !== 'NewExpression')
34
+ return false;
35
+ if (!parent.arguments.some(argument => argument === node))
36
+ return false;
37
+ return types.extendsCoreClass(parent, WORKFLOW_CLASSES);
38
+ }
39
+ export function isFrontMethodName(name) {
40
+ return FRONT_METHODS.has(name);
41
+ }
42
+ function isFrontMethod(types, node) {
43
+ const member = toClassMember(node);
44
+ if (!member || !isFrontMethodName(member.name))
45
+ return false;
46
+ return isActivityClass(types, member.classNode);
47
+ }
48
+ /**
49
+ * Tells if the node runs again on each replay: in the body of a workflow, or
50
+ * in the `toInput` or `toOutput` method of an activity.
51
+ */
52
+ export function isInWorkflowFront(types, node) {
53
+ for (let current = node.parent; current; current = current.parent) {
54
+ if (isWorkflowFunction(types, current))
55
+ return true;
56
+ if (isFrontMethod(types, current))
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+ //# sourceMappingURL=workflowSides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowSides.js","sourceRoot":"","sources":["../../../src/eslint/tools/workflowSides.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { AsyncActivity } from './AsyncActivity.js';
2
2
  import type { SyncActivity } from './SyncActivity.js';
3
- import type { Serializable } from '../typings/Serializable.js';
4
- export type AnyActivity = Activity<readonly any[], any, any, any>;
5
- export type Activity<TArgs extends readonly any[] = readonly any[], TInput extends Serializable = any, TSerializableOutput extends Serializable = any, TOutput = any> = AsyncActivity<TArgs, TInput, TSerializableOutput, TOutput, any, any> | SyncActivity<TArgs, TInput, TSerializableOutput, TOutput>;
3
+ import type { Serializable, SerializableOrVoid } from '../typings/Serializable.js';
4
+ export type AnyActivity = Activity;
5
+ export type Activity<TArgs extends readonly unknown[] = readonly unknown[], TInput extends Serializable = any, TSerializableOutput extends SerializableOrVoid = SerializableOrVoid, TOutput = unknown> = AsyncActivity<TArgs, TInput, TSerializableOutput, TOutput, Serializable, any> | SyncActivity<TArgs, TInput, TSerializableOutput, TOutput>;
6
6
  export type ActivityConstructor<T extends Activity> = new () => T;
7
7
  export declare namespace Activity {
8
8
  type Constructor<T extends Activity> = new () => T;
9
9
  type Args<T extends Activity> = T extends Activity<infer TArgs> ? Exclude<TArgs, []> : never;
10
- type Input<T extends Activity> = T extends Activity<any, infer TInput> ? TInput : never;
11
- type Output<T extends Activity> = T extends Activity<any, any, any, infer TOutput> ? TOutput : never;
10
+ type Input<T extends Activity> = T extends Activity<readonly unknown[], infer TInput> ? TInput : never;
11
+ type Output<T extends Activity> = T extends Activity<readonly unknown[], Serializable, SerializableOrVoid, infer TOutput> ? TOutput : never;
12
12
  }
13
13
  //# sourceMappingURL=Activity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEjE,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,SAAS,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,EAC7C,MAAM,SAAS,YAAY,GAAG,GAAG,EACjC,mBAAmB,SAAS,YAAY,GAAG,GAAG,EAC9C,OAAO,GAAG,GAAG,IAEX,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GACpE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAA;AAE7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI,UAAU,CAAC,CAAA;AAEjE,yBAAiB,QAAQ,CAAC;IACxB,KAAY,WAAW,CAAC,CAAC,SAAS,QAAQ,IAAI,UAAU,CAAC,CAAA;IAEzD,KAAY,IAAI,CAAC,CAAC,SAAS,QAAQ,IACjC,CAAC,SAAS,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;IAE9D,KAAY,KAAK,CAAC,CAAC,SAAS,QAAQ,IAClC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;IAExD,KAAY,MAAM,CAAC,CAAC,SAAS,QAAQ,IACnC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAA;CACrE"}
1
+ {"version":3,"file":"Activity.d.ts","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAA;AAElC,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAErD,MAAM,SAAS,YAAY,GAAG,GAAG,EACjC,mBAAmB,SAAS,kBAAkB,GAAG,kBAAkB,EACnE,OAAO,GAAG,OAAO,IAEf,aAAa,CACX,KAAK,EACL,MAAM,EACN,mBAAmB,EACnB,OAAO,EACP,YAAY,EAEZ,GAAG,CACJ,GACD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAA;AAE7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI,UAAU,CAAC,CAAA;AAEjE,yBAAiB,QAAQ,CAAC;IACxB,KAAY,WAAW,CAAC,CAAC,SAAS,QAAQ,IAAI,UAAU,CAAC,CAAA;IAEzD,KAAY,IAAI,CAAC,CAAC,SAAS,QAAQ,IACjC,CAAC,SAAS,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;IAE9D,KAAY,KAAK,CAAC,CAAC,SAAS,QAAQ,IAClC,CAAC,SAAS,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;IAEvE,KAAY,MAAM,CAAC,CAAC,SAAS,QAAQ,IACnC,CAAC,SAAS,QAAQ,CAChB,SAAS,OAAO,EAAE,EAClB,YAAY,EACZ,kBAAkB,EAClB,MAAM,OAAO,CACd,GACG,OAAO,GACP,KAAK,CAAA;CACZ"}
@@ -1,30 +1,30 @@
1
1
  import type { Authorization } from './Authorization.js';
2
- import type { Workflow } from './Workflow.js';
2
+ import type { AnyWorkflow } from './Workflow.js';
3
3
  export interface AppOptions {
4
4
  id: string;
5
- authorization?: Authorization<any>;
5
+ authorization?: Authorization;
6
6
  slug?: string;
7
7
  description?: string;
8
- workflows?: readonly Workflow<any, any>[];
8
+ workflows?: readonly AnyWorkflow[];
9
9
  }
10
10
  export declare class App {
11
11
  readonly id: string;
12
12
  readonly slug?: string;
13
13
  readonly description?: string;
14
- readonly authorization?: Authorization<any>;
15
- readonly workflows: Workflow<any, any>[];
14
+ readonly authorization?: Authorization;
15
+ readonly workflows: AnyWorkflow[];
16
16
  constructor(options: AppOptions);
17
- addWorkflow(workflow: Workflow<any, any>): this;
17
+ addWorkflow(workflow: AnyWorkflow): this;
18
18
  toManifest(): {
19
19
  id: string;
20
20
  description: string | null;
21
21
  slug: string | null;
22
- authorization: import("./Authorization.js").AuthorizationManifest<any> | undefined;
22
+ authorization: import("./Authorization.js").AuthorizationManifest<object> | undefined;
23
23
  workflows: {
24
24
  id: string | null;
25
25
  description: string | null;
26
26
  schema: import("typebox").TSchema | null;
27
- authorization: import("./Authorization.js").AuthorizationManifest<any> | null;
27
+ authorization: import("./Authorization.js").AuthorizationManifest<object> | null;
28
28
  }[];
29
29
  env: import("typebox").TObject<Record<string, import("typebox").TSchema>>;
30
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/models/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;CAC1C;AAED,qBAAa,GAAG;IACd,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpC,SAAgB,aAAa,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAClD,SAAgB,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAK;gBAExC,OAAO,EAAE,UAAU;IASxB,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAiBxC,UAAU;;;;;;;;;;;;;CAUlB"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/models/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CACnC;AAED,qBAAa,GAAG;IACd,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpC,SAAgB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7C,SAAgB,SAAS,EAAE,WAAW,EAAE,CAAK;gBAEjC,OAAO,EAAE,UAAU;IASxB,WAAW,CAAC,QAAQ,EAAE,WAAW;IAiBjC,UAAU;;;;;;;;;;;;;CAUlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/models/App.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAA;AAUrF,MAAM,OAAO,GAAG;IACE,EAAE,CAAQ;IACV,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,aAAa,CAAqB;IAClC,SAAS,GAAyB,EAAE,CAAA;IAEpD,YAAY,OAAmB;QAC7B,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAE1C,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpE,CAAC;IAEM,WAAW,CAAC,QAA4B;QAC7C,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE7B,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,UAAU;QACf,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAChE,GAAG,EAAE,2BAA2B,EAAE;SACnC,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/models/App.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAA;AAUrF,MAAM,OAAO,GAAG;IACE,EAAE,CAAQ;IACV,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,aAAa,CAAgB;IAC7B,SAAS,GAAkB,EAAE,CAAA;IAE7C,YAAY,OAAmB;QAC7B,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAE1C,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpE,CAAC;IAEM,WAAW,CAAC,QAAqB;QACtC,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE7B,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,UAAU;QACf,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAChE,GAAG,EAAE,2BAA2B,EAAE;SACnC,CAAA;IACH,CAAC;CACF"}