@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.
- package/.ai/skills/framework-core/SKILL.md +19 -19
- package/.ai/skills/framework-workflow-creation/SKILL.md +18 -17
- package/.ai/skills/framework-workflow-testing/SKILL.md +2 -4
- package/CHANGELOG.md +25 -0
- package/README.md +59 -7
- package/dist/activities/StartWorkflowActivity.d.ts +13 -13
- package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
- package/dist/activities/StartWorkflowActivity.js +1 -3
- package/dist/activities/StartWorkflowActivity.js.map +1 -1
- package/dist/activities/WorkflowBatchSizeActivity.d.ts +2 -2
- package/dist/activities/WorkflowBatchSizeActivity.d.ts.map +1 -1
- package/dist/activities/WorkflowBatchSizeActivity.js.map +1 -1
- package/dist/activities/WorkflowBatchTakeActivity.d.ts +2 -2
- package/dist/activities/WorkflowBatchTakeActivity.d.ts.map +1 -1
- package/dist/activities/WorkflowBatchTakeActivity.js +1 -1
- package/dist/activities/WorkflowBatchTakeActivity.js.map +1 -1
- package/dist/activities/WorkflowBatchToArrayActivity.d.ts +2 -2
- package/dist/activities/WorkflowBatchToArrayActivity.d.ts.map +1 -1
- package/dist/activities/WorkflowBatchToArrayActivity.js.map +1 -1
- package/dist/eslint/index.d.ts +16 -0
- package/dist/eslint/index.d.ts.map +1 -0
- package/dist/eslint/index.js +69 -0
- package/dist/eslint/index.js.map +1 -0
- package/dist/eslint/rules/env-from-env-design.d.ts +3 -0
- package/dist/eslint/rules/env-from-env-design.d.ts.map +1 -0
- package/dist/eslint/rules/env-from-env-design.js +85 -0
- package/dist/eslint/rules/env-from-env-design.js.map +1 -0
- package/dist/eslint/rules/no-binary-stream-outside-activity.d.ts +3 -0
- package/dist/eslint/rules/no-binary-stream-outside-activity.d.ts.map +1 -0
- package/dist/eslint/rules/no-binary-stream-outside-activity.js +51 -0
- package/dist/eslint/rules/no-binary-stream-outside-activity.js.map +1 -0
- package/dist/eslint/rules/no-binary-subclass.d.ts +3 -0
- package/dist/eslint/rules/no-binary-subclass.d.ts.map +1 -0
- package/dist/eslint/rules/no-binary-subclass.js +31 -0
- package/dist/eslint/rules/no-binary-subclass.js.map +1 -0
- package/dist/eslint/rules/no-framework-activity-in-app.d.ts +3 -0
- package/dist/eslint/rules/no-framework-activity-in-app.d.ts.map +1 -0
- package/dist/eslint/rules/no-framework-activity-in-app.js +41 -0
- package/dist/eslint/rules/no-framework-activity-in-app.js.map +1 -0
- package/dist/eslint/rules/no-io-in-workflow.d.ts +3 -0
- package/dist/eslint/rules/no-io-in-workflow.d.ts.map +1 -0
- package/dist/eslint/rules/no-io-in-workflow.js +92 -0
- package/dist/eslint/rules/no-io-in-workflow.js.map +1 -0
- package/dist/eslint/rules/no-literal-secret-in-authorization.d.ts +3 -0
- package/dist/eslint/rules/no-literal-secret-in-authorization.d.ts.map +1 -0
- package/dist/eslint/rules/no-literal-secret-in-authorization.js +56 -0
- package/dist/eslint/rules/no-literal-secret-in-authorization.js.map +1 -0
- package/dist/eslint/rules/no-nondeterministic-in-workflow.d.ts +3 -0
- package/dist/eslint/rules/no-nondeterministic-in-workflow.d.ts.map +1 -0
- package/dist/eslint/rules/no-nondeterministic-in-workflow.js +102 -0
- package/dist/eslint/rules/no-nondeterministic-in-workflow.js.map +1 -0
- package/dist/eslint/rules/no-secret-to-string.d.ts +3 -0
- package/dist/eslint/rules/no-secret-to-string.d.ts.map +1 -0
- package/dist/eslint/rules/no-secret-to-string.js +97 -0
- package/dist/eslint/rules/no-secret-to-string.js.map +1 -0
- package/dist/eslint/rules/no-testing-import-in-source.d.ts +3 -0
- package/dist/eslint/rules/no-testing-import-in-source.d.ts.map +1 -0
- package/dist/eslint/rules/no-testing-import-in-source.js +34 -0
- package/dist/eslint/rules/no-testing-import-in-source.js.map +1 -0
- package/dist/eslint/rules/require-workflow-id.d.ts +3 -0
- package/dist/eslint/rules/require-workflow-id.d.ts.map +1 -0
- package/dist/eslint/rules/require-workflow-id.js +38 -0
- package/dist/eslint/rules/require-workflow-id.js.map +1 -0
- package/dist/eslint/tools/bindings.d.ts +16 -0
- package/dist/eslint/tools/bindings.d.ts.map +1 -0
- package/dist/eslint/tools/bindings.js +38 -0
- package/dist/eslint/tools/bindings.js.map +1 -0
- package/dist/eslint/tools/coreTypes.d.ts +9 -0
- package/dist/eslint/tools/coreTypes.d.ts.map +1 -0
- package/dist/eslint/tools/coreTypes.js +115 -0
- package/dist/eslint/tools/coreTypes.js.map +1 -0
- package/dist/eslint/tools/workflowSides.d.ts +15 -0
- package/dist/eslint/tools/workflowSides.d.ts.map +1 -0
- package/dist/eslint/tools/workflowSides.js +61 -0
- package/dist/eslint/tools/workflowSides.js.map +1 -0
- package/dist/models/Activity.d.ts +5 -5
- package/dist/models/Activity.d.ts.map +1 -1
- package/dist/models/App.d.ts +8 -8
- package/dist/models/App.d.ts.map +1 -1
- package/dist/models/App.js.map +1 -1
- package/dist/models/AsyncActivity.d.ts +5 -5
- package/dist/models/AsyncActivity.d.ts.map +1 -1
- package/dist/models/AsyncActivity.js +1 -1
- package/dist/models/AsyncActivity.js.map +1 -1
- package/dist/models/AsyncActivityAdvanceResult.d.ts +4 -4
- package/dist/models/AsyncActivityAdvanceResult.d.ts.map +1 -1
- package/dist/models/AsyncActivityAdvanceResult.js.map +1 -1
- package/dist/models/AsyncActivityAwaitable.d.ts +1 -1
- package/dist/models/AsyncActivityAwaitable.d.ts.map +1 -1
- package/dist/models/AsyncActivityAwaitable.js +4 -1
- package/dist/models/AsyncActivityAwaitable.js.map +1 -1
- package/dist/models/Authorization.d.ts +2 -2
- package/dist/models/Authorization.d.ts.map +1 -1
- package/dist/models/Claim.d.ts +5 -4
- package/dist/models/Claim.d.ts.map +1 -1
- package/dist/models/Claim.js.map +1 -1
- package/dist/models/Env.d.ts.map +1 -1
- package/dist/models/Env.js +4 -1
- package/dist/models/Env.js.map +1 -1
- package/dist/models/EnvDesign.d.ts +2 -2
- package/dist/models/EnvDesign.d.ts.map +1 -1
- package/dist/models/EnvDesign.js +15 -14
- package/dist/models/EnvDesign.js.map +1 -1
- package/dist/models/History.d.ts +1 -1
- package/dist/models/History.d.ts.map +1 -1
- package/dist/models/History.js +2 -1
- package/dist/models/History.js.map +1 -1
- package/dist/models/Logger.d.ts.map +1 -1
- package/dist/models/Logger.js +7 -3
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/SerializableHelper.d.ts +1 -1
- package/dist/models/SerializableHelper.d.ts.map +1 -1
- package/dist/models/SyncActivity.d.ts +2 -2
- package/dist/models/SyncActivity.d.ts.map +1 -1
- package/dist/models/SyncActivity.js.map +1 -1
- package/dist/models/Workflow.d.ts +6 -4
- package/dist/models/Workflow.d.ts.map +1 -1
- package/dist/models/Workflow.js +5 -5
- package/dist/models/Workflow.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +1 -0
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.d.ts +3 -3
- package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.js +2 -1
- package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
- package/dist/testing/tools/clone.d.ts +1 -1
- package/dist/testing/tools/clone.d.ts.map +1 -1
- package/dist/testing/tools/clone.js +30 -20
- package/dist/testing/tools/clone.js.map +1 -1
- package/dist/testing/tools/create-mock-claim.d.ts.map +1 -1
- package/dist/testing/tools/create-mock-claim.js +4 -1
- package/dist/testing/tools/create-mock-claim.js.map +1 -1
- package/dist/testing/tools/create-mock-claims.d.ts +4 -1
- package/dist/testing/tools/create-mock-claims.d.ts.map +1 -1
- package/dist/testing/tools/create-mock-claims.js.map +1 -1
- package/dist/testing/tools/mock-async.d.ts +3 -1
- package/dist/testing/tools/mock-async.d.ts.map +1 -1
- package/dist/testing/tools/mock-async.js +8 -6
- package/dist/testing/tools/mock-async.js.map +1 -1
- package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -1
- package/dist/testing/tools/resolve-async-activity.js +33 -19
- package/dist/testing/tools/resolve-async-activity.js.map +1 -1
- package/dist/testing/tools/run-workflow-ticks.d.ts +2 -2
- package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -1
- package/dist/testing/tools/run-workflow-ticks.js +15 -7
- package/dist/testing/tools/run-workflow-ticks.js.map +1 -1
- package/dist/testing/tools/run-workflow.d.ts +3 -3
- package/dist/testing/tools/run-workflow.d.ts.map +1 -1
- package/dist/testing/typings/ClaimConstructor.d.ts +2 -1
- package/dist/testing/typings/ClaimConstructor.d.ts.map +1 -1
- package/dist/tools/AsyncActivityCallback.d.ts.map +1 -1
- package/dist/tools/AsyncActivityCallback.js +3 -1
- package/dist/tools/AsyncActivityCallback.js.map +1 -1
- package/dist/tools/Internals.d.ts +5 -5
- package/dist/tools/Internals.d.ts.map +1 -1
- package/dist/tools/Internals.js.map +1 -1
- package/dist/tools/WorkflowBatchQuery.d.ts +1 -1
- package/dist/tools/WorkflowBatchQuery.d.ts.map +1 -1
- package/dist/tools/WorkflowBatchQuery.js +7 -4
- package/dist/tools/WorkflowBatchQuery.js.map +1 -1
- package/dist/typings/Serializable.d.ts +2 -1
- package/dist/typings/Serializable.d.ts.map +1 -1
- package/package.json +17 -2
- package/dist/tools/isActivity.d.ts +0 -4
- package/dist/tools/isActivity.d.ts.map +0 -1
- package/dist/tools/isActivity.js +0 -13
- package/dist/tools/isActivity.js.map +0 -1
|
@@ -36,7 +36,7 @@ Node `>=22`. Schemas use TypeBox (`typebox`). See [README.md](../../../README.md
|
|
|
36
36
|
|
|
37
37
|
- **Workflow** — an orchestration entrypoint: a plain async function wrapped in `new Workflow(...)`. It coordinates steps; it does not implement the steps.
|
|
38
38
|
- **App** — registers workflows so the runtime can discover and run them.
|
|
39
|
-
- **Replay & determinism** — the runtime may re-run a workflow from its recorded history.
|
|
39
|
+
- **Replay & determinism** — the runtime may re-run a workflow from its recorded history. Branch on inputs and on the results of the steps you call, not on ambient state. Use framework primitives (e.g. `sleep`) when you need time to pass.
|
|
40
40
|
- **env** — configuration values supplied by the runtime; the single source for URLs, tokens, and tenants.
|
|
41
41
|
- **Composition** — external work is performed by calling primitives from the other framework packages inside the workflow body.
|
|
42
42
|
|
|
@@ -48,8 +48,6 @@ Node `>=22`. Schemas use TypeBox (`typebox`). See [README.md](../../../README.md
|
|
|
48
48
|
import Type from 'typebox'
|
|
49
49
|
import { Workflow } from '@t4h.framework/core'
|
|
50
50
|
|
|
51
|
-
const bare = new Workflow(async () => ({ ok: true }))
|
|
52
|
-
|
|
53
51
|
const withMeta = new Workflow(
|
|
54
52
|
{ id: 'cashback', description: 'Process cashback' },
|
|
55
53
|
async input => ({ value: input.amount * 0.05 }),
|
|
@@ -61,7 +59,7 @@ const validated = new Workflow({ id: 'cashback', schema }, async input => ({
|
|
|
61
59
|
}))
|
|
62
60
|
```
|
|
63
61
|
|
|
64
|
-
- `new Workflow(
|
|
62
|
+
- `new Workflow(options, fn)`. `@t4h.framework/core/require-workflow-id` rejects a workflow with no `id`.
|
|
65
63
|
- `WorkflowInput<T>` — derived from `schema`; `undefined` when no schema is set.
|
|
66
64
|
- `workflow.validate` — an Ajv validator when `schema` is set; otherwise `null`.
|
|
67
65
|
- Optional `authorization` on a workflow or app surfaces in `toManifest()`.
|
|
@@ -75,12 +73,14 @@ import { Workflow, startWorkflow } from '@t4h.framework/core'
|
|
|
75
73
|
import { childWorkflow } from './child-workflow.js'
|
|
76
74
|
|
|
77
75
|
export const parent = new Workflow({ id: 'parent' }, async input => {
|
|
78
|
-
const
|
|
79
|
-
|
|
76
|
+
const started = await startWorkflow(childWorkflow, input)
|
|
77
|
+
const ref = await started.wait()
|
|
78
|
+
|
|
79
|
+
return ref.output
|
|
80
80
|
})
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
`
|
|
83
|
+
`startWorkflow` resolves when the child starts. `wait()` suspends the parent until the child settles and gives a `WorkflowRef` (`status` is `'fulfilled'` or `'rejected'`, `output` is `Serializable`). The last argument is `parallel`: `startWorkflow(childWorkflow, input, true)` does not wait for the child, and `wait()` gives `output: null` at once.
|
|
84
84
|
|
|
85
85
|
---
|
|
86
86
|
|
|
@@ -92,7 +92,7 @@ import { App, Workflow } from '@t4h.framework/core'
|
|
|
92
92
|
const app = new App({
|
|
93
93
|
id: 'my-automation',
|
|
94
94
|
description: 'Cashback automation',
|
|
95
|
-
workflows: [myWorkflow, anotherWorkflow],
|
|
95
|
+
workflows: [myWorkflow, anotherWorkflow],
|
|
96
96
|
})
|
|
97
97
|
```
|
|
98
98
|
|
|
@@ -102,7 +102,7 @@ const app = new App({
|
|
|
102
102
|
|
|
103
103
|
## Environment
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
Configure environment access through `EnvDesign`. `EnvDesign` gives you typed, validated, self-documenting configuration that also feeds the app manifest automatically.
|
|
106
106
|
|
|
107
107
|
### The standard: one `constants/environments.ts` with the `EnvDesign`
|
|
108
108
|
|
|
@@ -135,13 +135,13 @@ if (environments.RETRIES > 0) { /* number, parsed */ }
|
|
|
135
135
|
**Why this is safe and preferred:**
|
|
136
136
|
|
|
137
137
|
- `EnvDesign({...})` does **not** read `env` at construction — only when you access a key (`environments.API_URL`). So the top-level `export const environments = EnvDesign(...)` is safe at import time; the read + parse + validation happen lazily, inside a running workflow.
|
|
138
|
-
- Access **keys inside the workflow body / functions
|
|
138
|
+
- Access **keys inside the workflow body / functions**. The dev host and the runtime import the app inside its env, so a key read at module top level works there. A test or a script that imports the module has no env, and the read throws `No env storage`.
|
|
139
139
|
- Each key is parsed to its declared `type` (`String` | `Number` | `Boolean` | `Secret` | a custom `(raw: string) => T` parser), `defaultValue` fills in when unset, and `isOptional: true` allows `undefined` instead of throwing.
|
|
140
|
-
- A key declared `type: Secret` hands out a `Secret` — the **name** of the variable, never its value. Pass it whole to whatever needs the credential (`auth: { bearer: environments.API_TOKEN }`, `new Sftp(environments.SFTP_URL)`, `clientSecret: environments.OAUTH_SECRET`); the host reads the value where the activity runs (`Secret.read`, host-only), so it never enters the workflow, an input or the history.
|
|
140
|
+
- A key declared `type: Secret` hands out a `Secret` — the **name** of the variable, never its value. Pass it whole to whatever needs the credential (`auth: { bearer: environments.API_TOKEN }`, `new Sftp(environments.SFTP_URL)`, `clientSecret: environments.OAUTH_SECRET`); the host reads the value where the activity runs (`Secret.read`, host-only), so it never enters the workflow, an input or the history. `@t4h.framework/core/no-secret-to-string` rejects a `Secret` in a string, `EnvDesign` throws on a `Secret` entry with a `defaultValue`, and `tsc` rejects a string in a credential field.
|
|
141
141
|
- A required key that is unset throws `Environment variable X is not set` on access — fail-fast, no silent `undefined`.
|
|
142
142
|
- Declaring via `EnvDesign` registers the entry in the **app manifest** (`app.toManifest().env`) automatically — the runtime knows exactly which vars the app requires.
|
|
143
143
|
|
|
144
|
-
Never inline URLs, secrets, tokens, or tenants in workflow code
|
|
144
|
+
Never inline URLs, secrets, tokens, or tenants in workflow code. Declare every credential with `type: Secret`.
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
|
|
@@ -196,19 +196,19 @@ env.clock.set(now) // set the pinned clock to a Date | number
|
|
|
196
196
|
|
|
197
197
|
> Wiring specific providers or controlling a specific step's outcome (e.g. an HTTP response or a `sleep` timeout) is documented in that package's skill — **framework-http**, **framework-sleep**, etc. `@t4h.framework/core/testing` exposes helpers those skills reference; you don't wire them by hand here.
|
|
198
198
|
|
|
199
|
-
Do **not** import `@t4h.framework/core/testing` in production app code.
|
|
200
|
-
|
|
201
199
|
---
|
|
202
200
|
|
|
203
201
|
## Anti-patterns
|
|
204
202
|
|
|
205
|
-
|
|
203
|
+
`defineConfig()` from `@t4h.framework/eslint-config` in `eslint.config.mjs` turns on the lint rules named below.
|
|
204
|
+
|
|
205
|
+
- `@t4h.framework/core/env-from-env-design` rejects `process.env` and the raw `env` from `@t4h.framework/core`.
|
|
206
206
|
- Inlining URLs/secrets/tenants in workflow code instead of pulling them from the shared `EnvDesign`.
|
|
207
|
-
- Accessing an `EnvDesign` key at module top level
|
|
208
|
-
-
|
|
207
|
+
- Accessing an `EnvDesign` key at module top level. A test that imports the module throws `No env storage`; read keys inside the workflow body/functions.
|
|
208
|
+
- `@t4h.framework/core/no-nondeterministic-in-workflow` rejects `Date.now()`, `Math.random()` and similar calls in a workflow. `TestWorkflowEnvironment.execute()` throws `NonDeterministicWorkflowError` when the replay output is different.
|
|
209
209
|
- Non-`Serializable` workflow input, output, or step values.
|
|
210
|
-
-
|
|
211
|
-
-
|
|
210
|
+
- `App` throws on a duplicate `workflow.id`.
|
|
211
|
+
- `@t4h.framework/core/no-testing-import-in-source` rejects `@t4h.framework/core/testing` out of a test file.
|
|
212
212
|
- Building low-level infrastructure inside a workflow instead of composing the framework packages that already provide it.
|
|
213
213
|
|
|
214
214
|
---
|
|
@@ -39,7 +39,7 @@ Create workflows that:
|
|
|
39
39
|
| Configuration | `environments.MY_KEY` from a shared `EnvDesign` | `@t4h.framework/core` |
|
|
40
40
|
| Branching / mapping | plain TypeScript | — |
|
|
41
41
|
|
|
42
|
-
Keep the body **deterministic** so it replays safely: branch on inputs and step results,
|
|
42
|
+
Keep the body **deterministic** so it replays safely: branch on inputs and step results, not on ambient state. Use `sleep` when you need time to pass.
|
|
43
43
|
|
|
44
44
|
## Expected project shape
|
|
45
45
|
|
|
@@ -71,7 +71,7 @@ export default new App({
|
|
|
71
71
|
|
|
72
72
|
### Environment constants module — `constants/environments.ts`
|
|
73
73
|
|
|
74
|
-
**Standard pattern: declare every env var in a single `EnvDesign` inside `src/constants/environments.ts`, export it, and import it wherever configuration is needed.**
|
|
74
|
+
**Standard pattern: declare every env var in a single `EnvDesign` inside `src/constants/environments.ts`, export it, and import it wherever configuration is needed.**
|
|
75
75
|
|
|
76
76
|
```ts
|
|
77
77
|
// src/constants/environments.ts
|
|
@@ -96,8 +96,8 @@ import { environments } from '../constants/environments.js'
|
|
|
96
96
|
Why `EnvDesign` and not raw `env`:
|
|
97
97
|
|
|
98
98
|
- **Typed & validated:** each key is parsed to its declared `type` (`String` | `Number` | `Boolean` | `Secret` | a custom `(raw: string) => T` parser); a missing required key throws on access (fail-fast), `defaultValue` fills gaps, `isOptional: true` allows `undefined`.
|
|
99
|
-
- **Secrets stay secret:** a key declared `type: Secret` yields a `Secret` (the variable's name), which the workflow passes whole to the activity that needs it — `auth: { bearer }`, `new Sftp(...)`, `new Smtp(...)`, `new ORM({ connectionString })`, OAuth2 `clientSecret`, webhook `auth.secret`. The host reads the value where the activity runs
|
|
100
|
-
- **Lazy & safe at import:** `EnvDesign({...})` does not read `env` at construction, so the top-level `export const environments = ...` is safe. Values are read/parsed only when a key is accessed — so **access keys inside the workflow body/functions,
|
|
99
|
+
- **Secrets stay secret:** a key declared `type: Secret` yields a `Secret` (the variable's name), which the workflow passes whole to the activity that needs it — `auth: { bearer }`, `new Sftp(...)`, `new Smtp(...)`, `new ORM({ connectionString })`, OAuth2 `clientSecret`, webhook `auth.secret`. The host reads the value where the activity runs.
|
|
100
|
+
- **Lazy & safe at import:** `EnvDesign({...})` does not read `env` at construction, so the top-level `export const environments = ...` is safe. Values are read/parsed only when a key is accessed — so **access keys inside the workflow body/functions**. The dev host and the runtime import the app inside its env, but a test that imports the module has no env, and a top-level read throws `No env storage`.
|
|
101
101
|
- **Manifest for free:** declaring vars via `EnvDesign` registers them in `app.toManifest().env`, so the runtime knows which vars the app requires.
|
|
102
102
|
|
|
103
103
|
One `environments` object is the single source of configuration for the whole project — import it anywhere instead of re-declaring env access.
|
|
@@ -105,10 +105,10 @@ One `environments` object is the single source of configuration for the whole pr
|
|
|
105
105
|
## Authoring rules
|
|
106
106
|
|
|
107
107
|
1. Keep workflows orchestration-focused — coordinate steps, don't implement them.
|
|
108
|
-
2. Perform every external effect through a framework package primitive (`http`, `sleep`, …), not
|
|
109
|
-
3.
|
|
108
|
+
2. Perform every external effect through a framework package primitive (`http`, `sleep`, …), not a raw SDK. `@t4h.framework/core/no-io-in-workflow` checks only the modules listed in `docs/eslint.md`.
|
|
109
|
+
3. `@t4h.framework/core/require-workflow-id` rejects a workflow with no `id`. Keep the `id` stable.
|
|
110
110
|
4. Add a `schema` when input validation is needed.
|
|
111
|
-
5. Import all configuration from the shared `EnvDesign` in `constants/environments.ts
|
|
111
|
+
5. Import all configuration from the shared `EnvDesign` in `constants/environments.ts`.
|
|
112
112
|
6. Keep the body deterministic so replay produces the same result.
|
|
113
113
|
7. Obtain a `Binary` from the framework — an HTTP response body, `sftp.get`, `write`, `join` — never by implementing one.
|
|
114
114
|
|
|
@@ -116,9 +116,7 @@ One `environments` object is the single source of configuration for the whole pr
|
|
|
116
116
|
|
|
117
117
|
- Do not hardcode URLs, client IDs, client secrets, API keys, tenants, or tokens.
|
|
118
118
|
- Do not initialize third-party clients with inline credentials inside workflow files.
|
|
119
|
-
-
|
|
120
|
-
- Do not call `fetch`/`axios` or other non-framework I/O directly — that breaks replay safety.
|
|
121
|
-
- **Do not declare a class that extends `Binary`** (`BufferBinary`, `StringBinary`, `stringToBinary` helpers, …). To hand content to a primitive that takes a `Binary` — `sftp.put`, `sftp.append`, an HTTP body — build it with `write` from `@t4h.framework/fs`:
|
|
119
|
+
- To hand content to a primitive that takes a `Binary` — `sftp.put`, `sftp.append`, an HTTP body — build it with `write` from `@t4h.framework/fs`:
|
|
122
120
|
|
|
123
121
|
```ts
|
|
124
122
|
import { write } from '@t4h.framework/fs'
|
|
@@ -128,7 +126,7 @@ One `environments` object is the single source of configuration for the whole pr
|
|
|
128
126
|
await sftp.put('/out/data.json', file)
|
|
129
127
|
```
|
|
130
128
|
|
|
131
|
-
A value handed to a primitive
|
|
129
|
+
A value handed to a primitive is serialized to storage before the activity runs, and a `Binary` that holds bytes in memory cannot be serialized. See the **framework-fs-write** skill.
|
|
132
130
|
|
|
133
131
|
Required keys declared in the `EnvDesign` fail fast automatically: accessing an unset required key throws `Environment variable X is not set`. Use `isOptional`/`defaultValue` when a key may be absent.
|
|
134
132
|
|
|
@@ -138,7 +136,7 @@ Required keys declared in the `EnvDesign` fail fast automatically: accessing an
|
|
|
138
136
|
|
|
139
137
|
- Open (or create) `src/constants/environments.ts` and add the required keys to the exported `EnvDesign`.
|
|
140
138
|
- Give each key a `type` (`String`/`Number`/`Boolean`/custom parser) and, when applicable, `defaultValue` or `isOptional`.
|
|
141
|
-
- Import `environments` where needed; do not add per-key getters
|
|
139
|
+
- Import `environments` where needed; do not add per-key getters.
|
|
142
140
|
|
|
143
141
|
### Step 2: create the workflow file
|
|
144
142
|
|
|
@@ -223,14 +221,17 @@ export const parentWorkflow = new Workflow({ id: 'parent-workflow' }, async inpu
|
|
|
223
221
|
|
|
224
222
|
## Anti-patterns to remove on sight
|
|
225
223
|
|
|
224
|
+
`defineConfig()` from `@t4h.framework/eslint-config` in `eslint.config.mjs` turns on the lint rules named below.
|
|
225
|
+
|
|
226
226
|
- Inline `"https://..."` endpoints or `"secret"` / `"clientId"` literals in the workflow body — pull them from the shared `EnvDesign`.
|
|
227
|
-
-
|
|
228
|
-
-
|
|
227
|
+
- `@t4h.framework/core/env-from-env-design` rejects `process.env` and the raw `env` from `@t4h.framework/core`.
|
|
228
|
+
- `tsc` rejects `.output` on the `startWorkflow` result. Call `wait()` first.
|
|
229
|
+
- Scattering per-key env getters instead of one `EnvDesign` in `constants/environments.ts`.
|
|
230
|
+
- Accessing an `EnvDesign` key at module top level. A test that imports the module throws `No env storage`.
|
|
229
231
|
- Creating SDK/API clients with literal credentials inside the workflow function.
|
|
230
|
-
-
|
|
232
|
+
- `@t4h.framework/core/no-io-in-workflow` rejects `fetch`, `axios` and other raw I/O in a workflow. Use the framework's `http` primitive.
|
|
231
233
|
- Building custom low-level infrastructure inside a consuming app to make a workflow work — use the framework packages that already provide it.
|
|
232
|
-
-
|
|
233
|
-
- Reading `.output` straight off the value `startWorkflow` returns — it resolves to an awaitable; call `wait()` to get the `WorkflowRef`.
|
|
234
|
+
- `@t4h.framework/core/no-binary-subclass` rejects a class that extends `Binary`. Use `write` from `@t4h.framework/fs` (**framework-fs-write**).
|
|
234
235
|
- Large workflow functions doing plumbing instead of orchestration.
|
|
235
236
|
- Registering workflows in scattered places instead of the centralized `App` declaration.
|
|
236
237
|
|
|
@@ -75,7 +75,7 @@ env.clock.set(now) // set pinned clock to a Date | number
|
|
|
75
75
|
|--------|------|---------|
|
|
76
76
|
| `claims` | `readonly ClaimProvider[]` | Claim implementations |
|
|
77
77
|
| `env` | `Env.Entries` | String env vars |
|
|
78
|
-
| `mockAsyncActivity` | `MockAsyncActivity` |
|
|
78
|
+
| `mockAsyncActivity` | `MockAsyncActivity` | Resolves a `pending` activity that `resolveActivityTimeouts` does not cover. Without it, `execute()` throws on that activity |
|
|
79
79
|
|
|
80
80
|
After `execute()` returns, the clock is advanced to wherever the run left it.
|
|
81
81
|
Subsequent `env.clock.advance()` calls build on that value between tests.
|
|
@@ -140,8 +140,7 @@ Use `mockImplementation` (not `mockResolvedValue`) for mocks that return streams
|
|
|
140
140
|
objects that can only be consumed once — replay runs the workflow a second time and
|
|
141
141
|
needs fresh values.
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
workflow may call.
|
|
143
|
+
A mock claim throws on a call to a method that you did not configure.
|
|
145
144
|
|
|
146
145
|
## Async activities with `mockAsync()`
|
|
147
146
|
|
|
@@ -221,6 +220,5 @@ await env.execute(workflow, undefined, {
|
|
|
221
220
|
- Test file lives in a `__tests__` folder next to the file under test.
|
|
222
221
|
- Harness imported from `@t4h.framework/core/testing`.
|
|
223
222
|
- Claims built with `mockClaim` / `createMockClaims` — avoid `as unknown as`.
|
|
224
|
-
- Pending async paths have `mockAsyncActivity` via `mockAsync()` builder.
|
|
225
223
|
- Mocks returning streams use `mockImplementation`, not `mockResolvedValue`.
|
|
226
224
|
- Assertions cover output, side effects, and expected ordering.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @t4h.framework/core
|
|
2
2
|
|
|
3
|
+
## 0.20.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#238](https://github.com/tech4humans-brasil/framework/pull/238) [`8567806`](https://github.com/tech4humans-brasil/framework/commit/8567806ec537288076c3a18a4816f26d58a67905) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds the `./eslint` entry with three rules for code that uses the core. `no-binary-stream-outside-activity` allows `Binary.stream()` only in the methods of an activity class, not in its `constructor`, `toInput` or `toOutput`. `no-nondeterministic-in-workflow` reports the clock and random values (also from `node:crypto` and `node:perf_hooks`) in a workflow and in the `constructor`, `toInput` and `toOutput` of an activity. `env-from-env-design` reports `env` from `@t4h.framework/core` and `process.env` in `src/`. `eslint` is a new optional peer dependency.
|
|
8
|
+
|
|
9
|
+
- [#241](https://github.com/tech4humans-brasil/framework/pull/241) [`f6b8454`](https://github.com/tech4humans-brasil/framework/commit/f6b845484d22e7c8e7240fe2e113f1cdea7c8ce3) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds seven rules to `@t4h.framework/core/eslint` and turns them on in `configs.recommended`:
|
|
10
|
+
- `no-io-in-workflow` reports `fetch` and calls to network, file, database and mail modules in a workflow and in the `constructor`, `toInput` and `toOutput` of an activity. It also reports `zlib` and `stream` calls there, because they work on the content in memory on each replay.
|
|
11
|
+
- `no-binary-subclass` reports a class that extends `Binary`.
|
|
12
|
+
- `no-framework-activity-in-app` reports `new` and `extends` on an activity of a framework package other than the core.
|
|
13
|
+
- `no-testing-import-in-source` reports an import of a `@t4h.framework/<package>/testing` entry out of a test file.
|
|
14
|
+
- `require-workflow-id` reports a `Workflow` with no `id`.
|
|
15
|
+
- `no-secret-to-string` reports a `Secret` that becomes a string.
|
|
16
|
+
- `no-literal-secret-in-authorization` reports a string literal in the `secret` or `clientSecret` field of an `Authorization`.
|
|
17
|
+
|
|
18
|
+
The package skills now name these rules in place of the text that the rules enforce. The docs and skills give each `Workflow` an `id`, read the HMAC secret from `EnvDesign`, and do not document a custom HTTP activity.
|
|
19
|
+
|
|
20
|
+
- [#225](https://github.com/tech4humans-brasil/framework/pull/225) [`6d3ac91`](https://github.com/tech4humans-brasil/framework/commit/6d3ac91054fa3ecbe77fbe25d112439007e2df11) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Makes the public types more precise. `any` becomes `unknown` or an exact type in `Activity` defaults, `IHistoryItem.output`, `Authorization` defaults, `ClaimProvider` lists and `EnvEntryDesign` parsers. `runWorkflow` returns `WorkflowOutput<T>`, and `createMockClaims` returns a typed tuple. New exports: `AnyWorkflow`, `WorkflowOutput`, `ClaimClass` and `SerializableOrVoid`. Code that read these values as `any` may need a type or a check.
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- [#243](https://github.com/tech4humans-brasil/framework/pull/243) [`0ffd663`](https://github.com/tech4humans-brasil/framework/commit/0ffd663ce8369edd7b54206cb3216568ad1de471) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The README examples read each value from `environments`, an `EnvDesign` in `src/constants/environments.ts`, and pass each credential as a `Secret`. They no longer use `process.env`, the raw `env` from the core or a literal in a `Secret` field. The jwks README describes the real context fields (`signature`, `rawPayload`) and says that a token that `jwt.verify` rejects throws.
|
|
25
|
+
|
|
26
|
+
- [#240](https://github.com/tech4humans-brasil/framework/pull/240) [`0606115`](https://github.com/tech4humans-brasil/framework/commit/0606115e2e0baa994e9f0ed3559ee54ecac88e44) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The skills do not repeat a rule that a lint rule, `tsc` or a runtime error already enforces. Each such rule is now one line that names the gate. The examples that broke a gate (`process.env`, `as any`, an inline secret, an `EnvDesign` in a workflow file, `ref.output` before `wait()`) are correct now.
|
|
27
|
+
|
|
3
28
|
## 0.19.0
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ A workflow is a function that orchestrates activities and business logic.
|
|
|
28
28
|
```javascript
|
|
29
29
|
import { Workflow } from '@t4h.framework/core'
|
|
30
30
|
|
|
31
|
-
const myWorkflow = new Workflow(async () => {
|
|
31
|
+
const myWorkflow = new Workflow({ id: 'my-workflow' }, async () => {
|
|
32
32
|
// orchestration here
|
|
33
33
|
return { ok: true }
|
|
34
34
|
})
|
|
@@ -86,12 +86,31 @@ const myWorkflow = new Workflow({ id: 'cashback', schema }, async input => {
|
|
|
86
86
|
|
|
87
87
|
### Using environment variables
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
Declare every variable in one `EnvDesign` in `src/constants/environments.ts`. Declare a credential with `type: Secret`: the workflow gets the name of the variable, never its value.
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// src/constants/environments.ts
|
|
93
|
+
import { EnvDesign, Secret } from '@t4h.framework/core'
|
|
94
|
+
|
|
95
|
+
export const environments = EnvDesign({
|
|
96
|
+
API_URL: { type: String },
|
|
97
|
+
API_TOKEN: { type: Secret },
|
|
98
|
+
})
|
|
99
|
+
```
|
|
91
100
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
Import it from there. Do not import `env` from `@t4h.framework/core` and do not read `process.env`.
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { Workflow } from '@t4h.framework/core'
|
|
105
|
+
import { http } from '@t4h.framework/http'
|
|
106
|
+
|
|
107
|
+
import { environments } from './constants/environments.js'
|
|
108
|
+
|
|
109
|
+
const myWorkflow = new Workflow({ id: 'status' }, async () => {
|
|
110
|
+
const response = await http.get(`${environments.API_URL}/status`, {
|
|
111
|
+
auth: { bearer: environments.API_TOKEN },
|
|
112
|
+
})
|
|
113
|
+
return { status: response.status }
|
|
95
114
|
})
|
|
96
115
|
```
|
|
97
116
|
|
|
@@ -302,7 +321,7 @@ and the activity tells the host how to match an event to a wait:
|
|
|
302
321
|
|
|
303
322
|
```typescript
|
|
304
323
|
class TransferTicketActivity extends AsyncActivity<...> {
|
|
305
|
-
public async bootstrap(input: { ticketId: string }) {
|
|
324
|
+
public async bootstrap(input: { ticketId: string; secret: Secret }) {
|
|
306
325
|
// ...asks the partner to transfer the ticket...
|
|
307
326
|
return this.pending({
|
|
308
327
|
schema,
|
|
@@ -579,3 +598,36 @@ import { createTestEnv } from '@t4h.framework/core/testing'
|
|
|
579
598
|
|
|
580
599
|
const envEntries = createTestEnv({ API_URL: 'https://example.com' })
|
|
581
600
|
```
|
|
601
|
+
|
|
602
|
+
---
|
|
603
|
+
|
|
604
|
+
## ESLint rules
|
|
605
|
+
|
|
606
|
+
The `@t4h.framework/core/eslint` entry has ESLint rules for code that uses the
|
|
607
|
+
core:
|
|
608
|
+
|
|
609
|
+
- `no-binary-stream-outside-activity`
|
|
610
|
+
- `no-nondeterministic-in-workflow`
|
|
611
|
+
- `no-io-in-workflow`
|
|
612
|
+
- `no-binary-subclass`
|
|
613
|
+
- `no-framework-activity-in-app`
|
|
614
|
+
- `no-testing-import-in-source`
|
|
615
|
+
- `require-workflow-id`
|
|
616
|
+
- `no-secret-to-string`
|
|
617
|
+
- `no-literal-secret-in-authorization`
|
|
618
|
+
- `env-from-env-design`
|
|
619
|
+
|
|
620
|
+
`@t4h.framework/eslint-config` turns them on when the project depends on
|
|
621
|
+
`@t4h.framework/core`:
|
|
622
|
+
|
|
623
|
+
```javascript
|
|
624
|
+
// eslint.config.mjs
|
|
625
|
+
import { defineConfig } from '@t4h.framework/eslint-config'
|
|
626
|
+
|
|
627
|
+
export default defineConfig()
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
All rules other than `no-testing-import-in-source` and `env-from-env-design`
|
|
631
|
+
need type information. `no-binary-subclass`, `no-framework-activity-in-app`,
|
|
632
|
+
`no-testing-import-in-source` and `no-literal-secret-in-authorization` do not
|
|
633
|
+
apply to test files. See `docs/eslint.md` for each rule.
|
|
@@ -2,7 +2,7 @@ import Type from 'typebox';
|
|
|
2
2
|
import type { Binary } from '../core.js';
|
|
3
3
|
import { AsyncActivity } from '../models/AsyncActivity.js';
|
|
4
4
|
import { Claim } from '../models/Claim.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { AnyWorkflow, WorkflowInput } from '../models/Workflow.js';
|
|
6
6
|
import { WorkflowBatchClaim } from '../models/WorkflowBatchClaim.js';
|
|
7
7
|
import { WorkflowBatchCollectionRef } from '../models/WorkflowBatchCollectionRef.js';
|
|
8
8
|
import { WorkflowRef } from '../models/WorkflowRef.js';
|
|
@@ -17,18 +17,18 @@ export declare const workflowBatchSchema: Type.TObject<{
|
|
|
17
17
|
}>;
|
|
18
18
|
type StartManyWorkflowsResult = Type.Static<typeof workflowBatchSchema>;
|
|
19
19
|
export declare abstract class WorkflowClaim {
|
|
20
|
-
abstract start<TWorkflow extends
|
|
21
|
-
abstract startMany<TWorkflow extends
|
|
20
|
+
abstract start<TWorkflow extends AnyWorkflow>(workflow: TWorkflow | string, input?: WorkflowInput<TWorkflow>, parallel?: boolean): Serializable | Promise<Serializable>;
|
|
21
|
+
abstract startMany<TWorkflow extends AnyWorkflow>(workflow: TWorkflow | string, inputs: Iterable<WorkflowInput<TWorkflow> | Binary> | AsyncIterable<WorkflowInput<TWorkflow> | Binary>, parallel?: boolean): Promise<WorkflowBatchCollectionRef>;
|
|
22
22
|
}
|
|
23
23
|
type StartWorkflowActivityInput = {
|
|
24
24
|
workflow: string;
|
|
25
25
|
input?: Serializable;
|
|
26
26
|
parallel?: boolean;
|
|
27
27
|
};
|
|
28
|
-
type StartWorkflowArgs<TWorkflow extends
|
|
28
|
+
type StartWorkflowArgs<TWorkflow extends AnyWorkflow> = WorkflowInput<TWorkflow> extends undefined ? [parallel?: boolean] : [input: Serializable, parallel?: boolean];
|
|
29
29
|
export declare class StartWorkflowActivity extends AsyncActivity<[
|
|
30
|
-
workflow:
|
|
31
|
-
inputOrParallel?: Serializable
|
|
30
|
+
workflow: AnyWorkflow,
|
|
31
|
+
inputOrParallel?: Serializable,
|
|
32
32
|
parallel?: boolean
|
|
33
33
|
], StartWorkflowActivityInput, StartWorkflowResult, WorkflowRef, StartWorkflowActivityInput, typeof workflowBatchSchema> {
|
|
34
34
|
readonly claims: Claim<{
|
|
@@ -39,22 +39,22 @@ export declare class StartWorkflowActivity extends AsyncActivity<[
|
|
|
39
39
|
batch: Type.TString;
|
|
40
40
|
count: Type.TNumber;
|
|
41
41
|
}>> | import("../core.js").AsyncActivityResultFulfilled<StartWorkflowResult | undefined>>;
|
|
42
|
-
advance(payload: StartManyWorkflowsResult): Promise<import("../core.js").AsyncActivityResultRejected<
|
|
43
|
-
toInput(workflow:
|
|
42
|
+
advance(payload: StartManyWorkflowsResult): Promise<import("../core.js").AsyncActivityResultRejected<import("../core.js").SerializableOrVoid> | import("../core.js").AsyncActivityResultFulfilled<StartWorkflowResult | undefined>>;
|
|
43
|
+
toInput(workflow: AnyWorkflow, inputOrParallel?: Serializable, maybeParallel?: boolean): StartWorkflowActivityInput;
|
|
44
44
|
toOutput(payload: StartWorkflowResult): WorkflowRef;
|
|
45
45
|
}
|
|
46
|
-
export declare function startWorkflow<TWorkflow extends
|
|
46
|
+
export declare function startWorkflow<TWorkflow extends AnyWorkflow>(workflow: TWorkflow, ...args: StartWorkflowArgs<TWorkflow>): Promise<import("../core.js").AsyncActivityAwaitable<StartWorkflowActivity>>;
|
|
47
47
|
type StartManyWorkflowsActivityInput = {
|
|
48
48
|
workflow: string;
|
|
49
49
|
inputs: Serializable[];
|
|
50
50
|
parallel?: boolean;
|
|
51
51
|
};
|
|
52
|
-
type StartWorkflowManyArgs<TWorkflow extends
|
|
52
|
+
type StartWorkflowManyArgs<TWorkflow extends AnyWorkflow> = [
|
|
53
53
|
inputs: Iterable<WorkflowInput<TWorkflow>>,
|
|
54
54
|
parallel?: boolean
|
|
55
55
|
];
|
|
56
56
|
export declare class StartManyWorkflowsActivity extends AsyncActivity<[
|
|
57
|
-
workflow:
|
|
57
|
+
workflow: AnyWorkflow,
|
|
58
58
|
inputs: Iterable<Serializable>,
|
|
59
59
|
parallel?: boolean
|
|
60
60
|
], StartManyWorkflowsActivityInput, StartManyWorkflowsResult, WorkflowBatchCollectionRef, StartManyWorkflowsActivityInput, typeof workflowBatchSchema> {
|
|
@@ -72,9 +72,9 @@ export declare class StartManyWorkflowsActivity extends AsyncActivity<[
|
|
|
72
72
|
batch: string;
|
|
73
73
|
count: number;
|
|
74
74
|
} | undefined>;
|
|
75
|
-
toInput(workflow:
|
|
75
|
+
toInput(workflow: AnyWorkflow, inputs: Iterable<Serializable>, parallel?: boolean): StartManyWorkflowsActivityInput;
|
|
76
76
|
toOutput(payload: StartManyWorkflowsResult): WorkflowBatchCollectionRef;
|
|
77
77
|
}
|
|
78
|
-
export declare function startWorkflowMany<TWorkflow extends
|
|
78
|
+
export declare function startWorkflowMany<TWorkflow extends AnyWorkflow>(workflow: TWorkflow, ...args: StartWorkflowManyArgs<TWorkflow>): Promise<import("../core.js").AsyncActivityAwaitable<StartManyWorkflowsActivity>>;
|
|
79
79
|
export {};
|
|
80
80
|
//# sourceMappingURL=StartWorkflowActivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkflowActivity.d.ts","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"StartWorkflowActivity.d.ts","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,7 @@ export class StartWorkflowActivity extends AsyncActivity {
|
|
|
43
43
|
if (!workflow.id)
|
|
44
44
|
throw new TypeError('Could not start workflow without an id');
|
|
45
45
|
const hasSchema = workflow.schema !== null;
|
|
46
|
-
const input = hasSchema
|
|
47
|
-
? inputOrParallel
|
|
48
|
-
: undefined;
|
|
46
|
+
const input = hasSchema ? inputOrParallel : undefined;
|
|
49
47
|
const parallel = hasSchema
|
|
50
48
|
? maybeParallel
|
|
51
49
|
: inputOrParallel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkflowActivity.js","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAQtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAIF,MAAM,OAAgB,aAAa;CAclC;AAaD,MAAM,OAAO,qBAAsB,SAAQ,
|
|
1
|
+
{"version":3,"file":"StartWorkflowActivity.js","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ export type WorkflowBatchSizeActivityInput = {
|
|
|
4
4
|
batch: string;
|
|
5
5
|
filter?: WorkflowBatchFilter;
|
|
6
6
|
};
|
|
7
|
-
export declare class WorkflowBatchSizeActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef
|
|
7
|
+
export declare class WorkflowBatchSizeActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef], WorkflowBatchSizeActivityInput, number, number> {
|
|
8
8
|
private readonly claims;
|
|
9
|
-
toInput(batch: WorkflowBatchCollectionRef
|
|
9
|
+
toInput(batch: WorkflowBatchCollectionRef): WorkflowBatchSizeActivityInput;
|
|
10
10
|
run({ batch, filter, }: WorkflowBatchSizeActivityInput): Promise<number>;
|
|
11
11
|
toOutput(output: number): number;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchSizeActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchSizeActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,SAAS,CAAC,KAAK,EAAE,0BAA0B,CAAC,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchSizeActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchSizeActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,SAAS,CAAC,KAAK,EAAE,0BAA0B,CAAC,EAC5C,8BAA8B,EAC9B,MAAM,EACN,MAAM,CACP;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAE3D,OAAO,CACZ,KAAK,EAAE,0BAA0B,GAChC,8BAA8B;IAYpB,GAAG,CAAC,EACf,KAAK,EACL,MAAM,GACP,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchSizeActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchSizeActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAKpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAOnE,MAAM,OAAO,yBAA0B,SAAQ,YAK9C;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchSizeActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchSizeActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAKpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAOnE,MAAM,OAAO,yBAA0B,SAAQ,YAK9C;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,KAAiC;QAEjC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;QAE7D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,EACf,KAAK,EACL,MAAM,GACyB;QAC/B,IAAI,IAAI,GAAG,CAAC,CAAA;QAEZ,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAChC,MAAM,CACP,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QAEzB,OAAO,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;YAAE,IAAI,EAAE,CAAA;QAE3C,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,QAAQ,CAAC,MAAc;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -6,9 +6,9 @@ export type WorkflowBatchTakeActivityInput = {
|
|
|
6
6
|
filter?: WorkflowBatchFilter;
|
|
7
7
|
limit: number;
|
|
8
8
|
};
|
|
9
|
-
export declare class WorkflowBatchTakeActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef
|
|
9
|
+
export declare class WorkflowBatchTakeActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef, limit: number], WorkflowBatchTakeActivityInput, WorkflowBatchOutput[], WorkflowBatchOutput[]> {
|
|
10
10
|
private readonly claims;
|
|
11
|
-
toInput(batch: WorkflowBatchCollectionRef
|
|
11
|
+
toInput(batch: WorkflowBatchCollectionRef, limit: number): WorkflowBatchTakeActivityInput;
|
|
12
12
|
run({ batch, filter, limit, }: WorkflowBatchTakeActivityInput): Promise<WorkflowBatchOutput[]>;
|
|
13
13
|
toOutput(output: WorkflowBatchOutput[]): WorkflowBatchOutput[];
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchTakeActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchTakeActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,SAAS,CAAC,KAAK,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchTakeActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchTakeActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,SAAS,CAAC,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,CAAC,EAC3D,8BAA8B,EAC9B,mBAAmB,EAAE,EACrB,mBAAmB,EAAE,CACtB;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAE3D,OAAO,CACZ,KAAK,EAAE,0BAA0B,EACjC,KAAK,EAAE,MAAM,GACZ,8BAA8B;IAkBpB,GAAG,CAAC,EACf,KAAK,EACL,MAAM,EACN,KAAK,GACN,EAAE,8BAA8B,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAe3D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE;CAGtE"}
|
|
@@ -6,7 +6,7 @@ export class WorkflowBatchTakeActivity extends SyncActivity {
|
|
|
6
6
|
claims = new Claim({ batch: WorkflowBatchClaim });
|
|
7
7
|
toInput(batch, limit) {
|
|
8
8
|
if (!Number.isInteger(limit) || limit < 1)
|
|
9
|
-
throw new RangeError(`Could not take ${limit} outputs from a batch: expected a positive integer`);
|
|
9
|
+
throw new RangeError(`Could not take ${String(limit)} outputs from a batch: expected a positive integer`);
|
|
10
10
|
if (!batch.status && !batch.where)
|
|
11
11
|
return { batch: batch.id, limit };
|
|
12
12
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchTakeActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchTakeActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAQnE,MAAM,OAAO,yBAA0B,SAAQ,YAK9C;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchTakeActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchTakeActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAQnE,MAAM,OAAO,yBAA0B,SAAQ,YAK9C;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,KAAiC,EACjC,KAAa;QAEb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YACvC,MAAM,IAAI,UAAU,CAClB,kBAAkB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CACpF,CAAA;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAA;QAEpE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD,KAAK;SACN,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,EACf,KAAK,EACL,MAAM,EACN,KAAK,GAC0B;QAC/B,MAAM,OAAO,GAA0B,EAAE,CAAA;QAEzC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,kBAAkB,CAAC,MAAM,CACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAChC,MAAM,CACP,EAAE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEnB,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;gBAAE,MAAK;QACpC,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEM,QAAQ,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -5,9 +5,9 @@ export type WorkflowBatchToArrayActivityInput = {
|
|
|
5
5
|
batch: string;
|
|
6
6
|
filter?: WorkflowBatchFilter;
|
|
7
7
|
};
|
|
8
|
-
export declare class WorkflowBatchToArrayActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef
|
|
8
|
+
export declare class WorkflowBatchToArrayActivity extends SyncActivity<readonly [batch: WorkflowBatchCollectionRef], WorkflowBatchToArrayActivityInput, WorkflowBatchOutput[], WorkflowBatchOutput[]> {
|
|
9
9
|
private readonly claims;
|
|
10
|
-
toInput(batch: WorkflowBatchCollectionRef
|
|
10
|
+
toInput(batch: WorkflowBatchCollectionRef): WorkflowBatchToArrayActivityInput;
|
|
11
11
|
run({ batch, filter, }: WorkflowBatchToArrayActivityInput): Promise<WorkflowBatchOutput[]>;
|
|
12
12
|
toOutput(output: WorkflowBatchOutput[]): WorkflowBatchOutput[];
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchToArrayActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchToArrayActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,qBAAa,4BAA6B,SAAQ,YAAY,CAC5D,SAAS,CAAC,KAAK,EAAE,0BAA0B,CAAC,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchToArrayActivity.d.ts","sourceRoot":"","sources":["../../src/activities/WorkflowBatchToArrayActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,yCAAyC,CAAA;AAGhD,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,qBAAa,4BAA6B,SAAQ,YAAY,CAC5D,SAAS,CAAC,KAAK,EAAE,0BAA0B,CAAC,EAC5C,iCAAiC,EACjC,mBAAmB,EAAE,EACrB,mBAAmB,EAAE,CACtB;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAE3D,OAAO,CACZ,KAAK,EAAE,0BAA0B,GAChC,iCAAiC;IAYvB,GAAG,CAAC,EACf,KAAK,EACL,MAAM,GACP,EAAE,iCAAiC,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAM9D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE;CAGtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBatchToArrayActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchToArrayActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAOnE,MAAM,OAAO,4BAA6B,SAAQ,YAKjD;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,
|
|
1
|
+
{"version":3,"file":"WorkflowBatchToArrayActivity.js","sourceRoot":"","sources":["../../src/activities/WorkflowBatchToArrayActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAOnE,MAAM,OAAO,4BAA6B,SAAQ,YAKjD;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3D,OAAO,CACZ,KAAiC;QAEjC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;QAE7D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,EACf,KAAK,EACL,MAAM,GAC4B;QAClC,OAAO,MAAM,KAAK,CAAC,SAAS,CAC1B,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CACpE,CAAA;IACH,CAAC;IAEM,QAAQ,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ESLint, Linter } from 'eslint';
|
|
2
|
+
/**
|
|
3
|
+
* An ESLint plugin with a `recommended` config that turns on its rules.
|
|
4
|
+
*/
|
|
5
|
+
export interface FrameworkEslintPlugin extends ESLint.Plugin {
|
|
6
|
+
configs: {
|
|
7
|
+
recommended: Linter.Config[];
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
declare const core: FrameworkEslintPlugin;
|
|
11
|
+
/**
|
|
12
|
+
* The ESLint plugin of `@t4h.framework/core`, with the rules for code that
|
|
13
|
+
* uses the core.
|
|
14
|
+
*/
|
|
15
|
+
export default core;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAyE5C;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM;IAC1D,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;KAAE,CAAA;CAC1C;AAED,QAAA,MAAM,IAAI,EAAE,qBAA+D,CAAA;AAE3E;;;GAGG;AACH,eAAe,IAAI,CAAA"}
|