@step-forge/step-forge 0.0.6 → 0.0.7-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/step-forge.js +212 -0
- package/package.json +9 -8
- package/.eslintignore +0 -6
- package/.eslintrc +0 -18
- package/.prettierignore +0 -6
- package/.prettierrc +0 -15
- package/CHANGELOG.md +0 -28
- package/cucumber.mjs +0 -38
- package/docs/assets/state_deps.gif +0 -0
- package/dts-bundle-generator.config.ts +0 -11
- package/features/basic.feature +0 -21
- package/features/exported.feature +0 -6
- package/features/steps/commonSteps.ts +0 -93
- package/features/steps/exportedSteps.ts +0 -42
- package/features/steps/world.ts +0 -29
- package/src/builderTypeUtils.js +0 -2
- package/src/builderTypeUtils.js.map +0 -1
- package/src/builderTypeUtils.ts +0 -27
- package/src/common.js +0 -73
- package/src/common.js.map +0 -1
- package/src/common.ts +0 -138
- package/src/given.js +0 -34
- package/src/given.js.map +0 -1
- package/src/given.ts +0 -102
- package/src/index.js +0 -6
- package/src/index.js.map +0 -1
- package/src/index.ts +0 -6
- package/src/then.js +0 -34
- package/src/then.js.map +0 -1
- package/src/then.ts +0 -128
- package/src/utils.js +0 -54
- package/src/utils.js.map +0 -1
- package/src/utils.ts +0 -74
- package/src/vite-env.d.ts.old +0 -1
- package/src/when.js +0 -34
- package/src/when.js.map +0 -1
- package/src/when.ts +0 -118
- package/src/world.js +0 -51
- package/src/world.js.map +0 -1
- package/src/world.ts +0 -90
- package/test/givenCompilationTests.ts +0 -130
- package/test/testUtils.ts +0 -30
- package/test/thenCompilationTests.ts +0 -207
- package/test/whenCompilationTests.ts +0 -157
- package/ts-node-esm-register.js +0 -8
- package/tsconfig.cucumber.json +0 -23
- package/tsconfig.json +0 -28
- package/vite.config.ts +0 -36
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { whenBuilder } from "../src/when";
|
|
2
|
-
import { SampleGivenState, SampleWhenState } from "./testUtils";
|
|
3
|
-
|
|
4
|
-
// Simplest possible example
|
|
5
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
6
|
-
.statement("When a user does something")
|
|
7
|
-
.step(() => {
|
|
8
|
-
return {
|
|
9
|
-
e: "action",
|
|
10
|
-
};
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
// Simple dependency on given state example
|
|
14
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
15
|
-
.statement("When a user does something")
|
|
16
|
-
.dependencies({
|
|
17
|
-
given: {
|
|
18
|
-
a: "required",
|
|
19
|
-
},
|
|
20
|
-
})
|
|
21
|
-
.step(({ given }) => {
|
|
22
|
-
return {
|
|
23
|
-
e: `Action with ${given.a}`,
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// Simple dependency on when state example
|
|
28
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
29
|
-
.statement("When a user does something")
|
|
30
|
-
.dependencies({
|
|
31
|
-
when: {
|
|
32
|
-
d: "required",
|
|
33
|
-
},
|
|
34
|
-
})
|
|
35
|
-
.step(({ when }) => {
|
|
36
|
-
return {
|
|
37
|
-
e: `Action with ${when.d}`,
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
// Simple variables example
|
|
42
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
43
|
-
.statement((v1: string, v2: number) => `When a user does ${v1} ${v2} times`)
|
|
44
|
-
.step(({ variables: [v1, v2] }) => {
|
|
45
|
-
return {
|
|
46
|
-
e: `Action ${v1} ${v2}`,
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// Complex example with both dependencies
|
|
51
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
52
|
-
.statement((v1: string, v2: number) => `When a user does ${v1} ${v2} times`)
|
|
53
|
-
.dependencies({
|
|
54
|
-
given: {
|
|
55
|
-
a: "required",
|
|
56
|
-
b: "optional",
|
|
57
|
-
},
|
|
58
|
-
when: {
|
|
59
|
-
d: "required",
|
|
60
|
-
e: "optional",
|
|
61
|
-
},
|
|
62
|
-
})
|
|
63
|
-
.step(({ variables: [v1, v2], given: { a, b }, when: { d, e } }) => {
|
|
64
|
-
return {
|
|
65
|
-
e: `Action ${v1} ${v2} with ${a} ${b} ${d} ${e}`,
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// ----- Should not compile section ----
|
|
70
|
-
|
|
71
|
-
// @ts-expect-error - Should not compile without a statement
|
|
72
|
-
whenBuilder<SampleGivenState, SampleWhenState>().step(() => {
|
|
73
|
-
return {
|
|
74
|
-
a: "action",
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
79
|
-
.statement(() => "When a user does something")
|
|
80
|
-
// @ts-expect-error - Should not compile since no variables are declared
|
|
81
|
-
.step(({ variables: [v1, v2] }) => {
|
|
82
|
-
return {
|
|
83
|
-
a: `Action ${v1} ${v2}`,
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
88
|
-
.statement("When a user does something")
|
|
89
|
-
// @ts-expect-error - Should not compile since no variables are declared
|
|
90
|
-
.step(({ variables: [v1, v2] }) => {
|
|
91
|
-
return {
|
|
92
|
-
a: `Action ${v1} ${v2}`,
|
|
93
|
-
};
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
97
|
-
.statement(
|
|
98
|
-
(v1: string, v2: number, v3: boolean) =>
|
|
99
|
-
`When a user does ${v1} ${v2} ${v3}`
|
|
100
|
-
)
|
|
101
|
-
// @ts-expect-error - Should not compile since the number of variables exceeds the number declared
|
|
102
|
-
.step(({ variables: [v1, v2, v3, v4] }) => {
|
|
103
|
-
return {
|
|
104
|
-
a: `Action ${v1} ${v2} ${v3} ${v4}`,
|
|
105
|
-
};
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
109
|
-
.statement("When a user does something")
|
|
110
|
-
.dependencies({ given: { a: "required" } })
|
|
111
|
-
.step(({ given }) => {
|
|
112
|
-
return {
|
|
113
|
-
// @ts-expect-error - Should not compile if we attempt to access a part of state that was not declared as a dependency
|
|
114
|
-
e: `Action ${given.b}`,
|
|
115
|
-
};
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
119
|
-
.statement("When a user does something")
|
|
120
|
-
.dependencies({ when: { d: "required" } })
|
|
121
|
-
.step(({ when }) => {
|
|
122
|
-
return {
|
|
123
|
-
// @ts-expect-error - Should not compile if we attempt to access a part of state that was not declared as a dependency
|
|
124
|
-
e: `Action ${when.f}`,
|
|
125
|
-
};
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
129
|
-
.statement("When a user does something")
|
|
130
|
-
.dependencies({ given: { a: "optional" } })
|
|
131
|
-
.step(({ given }) => {
|
|
132
|
-
// @ts-expect-error - Should not compile since a is optional and can be undefined
|
|
133
|
-
const strictA: string = given.a;
|
|
134
|
-
return {
|
|
135
|
-
e: `Action ${strictA}`,
|
|
136
|
-
};
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
140
|
-
.statement("When a user does something")
|
|
141
|
-
.dependencies({ when: { e: "optional" } })
|
|
142
|
-
.step(({ when }) => {
|
|
143
|
-
// @ts-expect-error - Should not compile since a is optional and can be undefined
|
|
144
|
-
const strictE: string = when.e;
|
|
145
|
-
return {
|
|
146
|
-
f: [strictE.length],
|
|
147
|
-
};
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
whenBuilder<SampleGivenState, SampleWhenState>()
|
|
151
|
-
.statement("When a user does something")
|
|
152
|
-
// @ts-expect-error - Should not compile since the return type is not a partial of when state
|
|
153
|
-
.step(() => {
|
|
154
|
-
return {
|
|
155
|
-
a: "hello",
|
|
156
|
-
};
|
|
157
|
-
});
|
package/ts-node-esm-register.js
DELETED
package/tsconfig.cucumber.json
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"module": "NodeNext",
|
|
5
|
-
"moduleResolution": "NodeNext",
|
|
6
|
-
"allowJs": true,
|
|
7
|
-
"esModuleInterop": true,
|
|
8
|
-
"allowImportingTsExtensions": true,
|
|
9
|
-
"noEmit": true,
|
|
10
|
-
"moduleDetection": "force",
|
|
11
|
-
"baseUrl": ".",
|
|
12
|
-
"paths": {
|
|
13
|
-
"@/*": ["./src/*"],
|
|
14
|
-
"@@/*": ["./*"]
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"ts-node": {
|
|
18
|
-
"esm": true,
|
|
19
|
-
"experimentalSpecifierResolution": "node"
|
|
20
|
-
},
|
|
21
|
-
"include": ["features/**/*.ts", "src/**/*.ts"],
|
|
22
|
-
"exclude": ["node_modules", "src/vite-env.d.ts"]
|
|
23
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"rootDir": ".",
|
|
4
|
-
"paths": {
|
|
5
|
-
"@/*": ["./src/*"],
|
|
6
|
-
"@@/*": ["./*"]
|
|
7
|
-
},
|
|
8
|
-
"target": "ESNext",
|
|
9
|
-
"useDefineForClassFields": true,
|
|
10
|
-
"module": "ESNext",
|
|
11
|
-
"lib": ["ESNext", "DOM"],
|
|
12
|
-
"moduleResolution": "Node",
|
|
13
|
-
"strict": true,
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
"resolveJsonModule": true,
|
|
16
|
-
"esModuleInterop": true,
|
|
17
|
-
"noEmit": false,
|
|
18
|
-
"noUnusedLocals": true,
|
|
19
|
-
"noUnusedParameters": true,
|
|
20
|
-
"noImplicitReturns": true,
|
|
21
|
-
"forceConsistentCasingInFileNames": true,
|
|
22
|
-
"types": ["vite/client", "node"],
|
|
23
|
-
"declaration": true,
|
|
24
|
-
"declarationDir": "./dist/types"
|
|
25
|
-
},
|
|
26
|
-
"include": ["src"],
|
|
27
|
-
"exclude": ["**/*.test.ts", "node_modules", "test/**", ".history/**"]
|
|
28
|
-
}
|
package/vite.config.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/// <reference types="vitest" />
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { defineConfig } from "vite";
|
|
4
|
-
import packageJson from "./package.json";
|
|
5
|
-
|
|
6
|
-
const getPackageName = () => {
|
|
7
|
-
return packageJson.name;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const fileName = {
|
|
11
|
-
es: `${getPackageName()}.js`,
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const formats = Object.keys(fileName) as Array<keyof typeof fileName>;
|
|
15
|
-
|
|
16
|
-
export default defineConfig({
|
|
17
|
-
base: "./",
|
|
18
|
-
build: {
|
|
19
|
-
outDir: "./build/dist",
|
|
20
|
-
lib: {
|
|
21
|
-
entry: path.resolve(__dirname, "src/index.ts"),
|
|
22
|
-
name: `step-forge`,
|
|
23
|
-
formats,
|
|
24
|
-
fileName: format => fileName[format],
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
test: {
|
|
28
|
-
watch: false,
|
|
29
|
-
},
|
|
30
|
-
resolve: {
|
|
31
|
-
alias: [
|
|
32
|
-
{ find: "@", replacement: path.resolve(__dirname, "src") },
|
|
33
|
-
{ find: "@@", replacement: path.resolve(__dirname) },
|
|
34
|
-
],
|
|
35
|
-
},
|
|
36
|
-
});
|