@contractspec/lib.testing 0.0.0-canary-20260113162409
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/LICENSE +21 -0
- package/README.md +51 -0
- package/dist/adapters/jest-adapter.d.ts +13 -0
- package/dist/adapters/jest-adapter.d.ts.map +1 -0
- package/dist/adapters/jest-adapter.js +28 -0
- package/dist/adapters/jest-adapter.js.map +1 -0
- package/dist/adapters/vitest-adapter.d.ts +13 -0
- package/dist/adapters/vitest-adapter.d.ts.map +1 -0
- package/dist/adapters/vitest-adapter.js +27 -0
- package/dist/adapters/vitest-adapter.js.map +1 -0
- package/dist/contracts/src/app-config/lifecycle.d.ts +1 -0
- package/dist/contracts/src/app-config/runtime.d.ts +13 -0
- package/dist/contracts/src/app-config/spec.d.ts +9 -0
- package/dist/contracts/src/app-config/validation.d.ts +8 -0
- package/dist/contracts/src/capabilities/capabilities.d.ts +1 -0
- package/dist/contracts/src/capabilities/index.d.ts +2 -0
- package/dist/contracts/src/capabilities/openbanking.d.ts +1 -0
- package/dist/contracts/src/client/index.d.ts +1 -0
- package/dist/contracts/src/client/react/drivers/rn-reusables.d.ts +1 -0
- package/dist/contracts/src/client/react/drivers/shadcn.d.ts +1 -0
- package/dist/contracts/src/client/react/feature-render.d.ts +3 -0
- package/dist/contracts/src/client/react/form-render.d.ts +4 -0
- package/dist/contracts/src/client/react/index.d.ts +4 -0
- package/dist/contracts/src/contract-registry/index.d.ts +2 -0
- package/dist/contracts/src/contract-registry/schemas.d.ts +2 -0
- package/dist/contracts/src/contract-registry/types.d.ts +1 -0
- package/dist/contracts/src/data-views/index.d.ts +3 -0
- package/dist/contracts/src/data-views/registry.d.ts +2 -0
- package/dist/contracts/src/data-views/spec.d.ts +2 -0
- package/dist/contracts/src/data-views/types.d.ts +2 -0
- package/dist/contracts/src/docs/accessibility_wcag_compliance_specs.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/index.d.ts +25 -0
- package/dist/contracts/src/docs/presentations.d.ts +2 -0
- package/dist/contracts/src/docs/registry.d.ts +10 -0
- package/dist/contracts/src/docs/registry.d.ts.map +1 -0
- package/dist/contracts/src/docs/tech/auth/better-auth-nextjs.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/contracts/README.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/contracts/openapi-export.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/contracts/openapi-import.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/lifecycle-stage-system.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/llm/llm-integration.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/mcp-endpoints.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/presentation-runtime.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/schema/README.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/learning-events.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/learning-journeys.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/platform-admin-panel.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/project-access-teams.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/project-routing.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/sandbox-unlogged.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/team-invitations.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/workspace-ops.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/studio/workspaces.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/telemetry-ingest.docblock.d.ts +1 -0
- package/dist/contracts/src/docs/tech/vscode-extension.docblock.d.ts +1 -0
- package/dist/contracts/src/events.d.ts +25 -0
- package/dist/contracts/src/events.d.ts.map +1 -0
- package/dist/contracts/src/examples/index.d.ts +4 -0
- package/dist/contracts/src/examples/registry.d.ts +2 -0
- package/dist/contracts/src/examples/schema.d.ts +2 -0
- package/dist/contracts/src/examples/types.d.ts +3 -0
- package/dist/contracts/src/examples/validation.d.ts +1 -0
- package/dist/contracts/src/experiments/evaluator.d.ts +2 -0
- package/dist/contracts/src/experiments/spec-resolver.d.ts +4 -0
- package/dist/contracts/src/experiments/spec.d.ts +4 -0
- package/dist/contracts/src/features/index.d.ts +4 -0
- package/dist/contracts/src/features/install.d.ts +6 -0
- package/dist/contracts/src/features/registry.d.ts +2 -0
- package/dist/contracts/src/features/types.d.ts +5 -0
- package/dist/contracts/src/features/validation.d.ts +2 -0
- package/dist/contracts/src/forms/forms.d.ts +3 -0
- package/dist/contracts/src/forms/index.d.ts +1 -0
- package/dist/contracts/src/index.d.ts +48 -0
- package/dist/contracts/src/install.d.ts +7 -0
- package/dist/contracts/src/integrations/connection.d.ts +1 -0
- package/dist/contracts/src/integrations/index.d.ts +6 -0
- package/dist/contracts/src/integrations/openbanking/contracts/accounts.d.ts +4 -0
- package/dist/contracts/src/integrations/openbanking/contracts/balances.d.ts +4 -0
- package/dist/contracts/src/integrations/openbanking/contracts/index.d.ts +5 -0
- package/dist/contracts/src/integrations/openbanking/contracts/transactions.d.ts +4 -0
- package/dist/contracts/src/integrations/openbanking/guards.d.ts +1 -0
- package/dist/contracts/src/integrations/openbanking/models.d.ts +1 -0
- package/dist/contracts/src/integrations/openbanking/openbanking.feature.d.ts +1 -0
- package/dist/contracts/src/integrations/operations.d.ts +4 -0
- package/dist/contracts/src/integrations/providers/elevenlabs.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/gcs-storage.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/gmail.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/google-calendar.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/index.d.ts +11 -0
- package/dist/contracts/src/integrations/providers/mistral.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/postmark.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/powens.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/qdrant.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/registry.d.ts +1 -0
- package/dist/contracts/src/integrations/providers/stripe.d.ts +2 -0
- package/dist/contracts/src/integrations/providers/twilio-sms.d.ts +2 -0
- package/dist/contracts/src/integrations/spec.d.ts +3 -0
- package/dist/contracts/src/jsonschema.d.ts +4 -0
- package/dist/contracts/src/knowledge/index.d.ts +2 -0
- package/dist/contracts/src/knowledge/operations.d.ts +4 -0
- package/dist/contracts/src/knowledge/spaces/email-threads.d.ts +1 -0
- package/dist/contracts/src/knowledge/spaces/financial-docs.d.ts +1 -0
- package/dist/contracts/src/knowledge/spaces/financial-overview.d.ts +1 -0
- package/dist/contracts/src/knowledge/spaces/index.d.ts +6 -0
- package/dist/contracts/src/knowledge/spaces/product-canon.d.ts +1 -0
- package/dist/contracts/src/knowledge/spaces/support-faq.d.ts +1 -0
- package/dist/contracts/src/knowledge/spaces/uploaded-docs.d.ts +1 -0
- package/dist/contracts/src/knowledge/spec.d.ts +3 -0
- package/dist/contracts/src/llm/exporters.d.ts +7 -0
- package/dist/contracts/src/llm/index.d.ts +3 -0
- package/dist/contracts/src/llm/prompts.d.ts +2 -0
- package/dist/contracts/src/llm/types.d.ts +5 -0
- package/dist/contracts/src/migrations.d.ts +1 -0
- package/dist/contracts/src/model-registry.d.ts +1 -0
- package/dist/contracts/src/onboarding-base.d.ts +2 -0
- package/dist/contracts/src/openapi.d.ts +1 -0
- package/dist/contracts/src/operations/index.d.ts +2 -0
- package/dist/contracts/src/operations/operation.d.ts +170 -0
- package/dist/contracts/src/operations/operation.d.ts.map +1 -0
- package/dist/contracts/src/operations/registry.d.ts +6 -0
- package/dist/contracts/src/ownership.d.ts +61 -0
- package/dist/contracts/src/ownership.d.ts.map +1 -0
- package/dist/contracts/src/policy/engine.d.ts +3 -0
- package/dist/contracts/src/policy/index.d.ts +4 -0
- package/dist/contracts/src/policy/opa-adapter.d.ts +3 -0
- package/dist/contracts/src/policy/registry.d.ts +2 -0
- package/dist/contracts/src/policy/spec.d.ts +11 -0
- package/dist/contracts/src/policy/spec.d.ts.map +1 -0
- package/dist/contracts/src/presentations/index.d.ts +3 -0
- package/dist/contracts/src/presentations/presentations.d.ts +2 -0
- package/dist/contracts/src/presentations/registry.d.ts +2 -0
- package/dist/contracts/src/presentations/transform-engine.d.ts +2 -0
- package/dist/contracts/src/prompt.d.ts +2 -0
- package/dist/contracts/src/promptRegistry.d.ts +2 -0
- package/dist/contracts/src/regenerator/adapters.d.ts +1 -0
- package/dist/contracts/src/regenerator/executor.d.ts +1 -0
- package/dist/contracts/src/regenerator/index.d.ts +6 -0
- package/dist/contracts/src/regenerator/service.d.ts +2 -0
- package/dist/contracts/src/regenerator/sinks.d.ts +2 -0
- package/dist/contracts/src/regenerator/types.d.ts +3 -0
- package/dist/contracts/src/regenerator/utils.d.ts +1 -0
- package/dist/contracts/src/registry-utils.d.ts +1 -0
- package/dist/contracts/src/registry.d.ts +3 -0
- package/dist/contracts/src/resources.d.ts +19 -0
- package/dist/contracts/src/resources.d.ts.map +1 -0
- package/dist/contracts/src/schema-to-markdown.d.ts +1 -0
- package/dist/contracts/src/server/graphql-pothos.d.ts +7 -0
- package/dist/contracts/src/server/index.d.ts +7 -0
- package/dist/contracts/src/server/mcp/createMcpServer.d.ts +5 -0
- package/dist/contracts/src/server/mcp/mcpTypes.d.ts +2 -0
- package/dist/contracts/src/server/provider-mcp.d.ts +1 -0
- package/dist/contracts/src/server/rest-elysia.d.ts +3 -0
- package/dist/contracts/src/server/rest-express.d.ts +3 -0
- package/dist/contracts/src/server/rest-generic.d.ts +2 -0
- package/dist/contracts/src/server/rest-next-app.d.ts +3 -0
- package/dist/contracts/src/server/rest-next-pages.d.ts +3 -0
- package/dist/contracts/src/telemetry/anomaly.d.ts +2 -0
- package/dist/contracts/src/telemetry/index.d.ts +3 -0
- package/dist/contracts/src/telemetry/spec.d.ts +2 -0
- package/dist/contracts/src/telemetry/tracker.d.ts +2 -0
- package/dist/contracts/src/tests/index.d.ts +2 -0
- package/dist/contracts/src/tests/runner.d.ts +3 -0
- package/dist/contracts/src/tests/spec.d.ts +11 -0
- package/dist/contracts/src/tests/spec.d.ts.map +1 -0
- package/dist/contracts/src/themes.d.ts +2 -0
- package/dist/contracts/src/types.d.ts +5 -0
- package/dist/contracts/src/workflow/adapters/db-adapter.d.ts +1 -0
- package/dist/contracts/src/workflow/adapters/file-adapter.d.ts +1 -0
- package/dist/contracts/src/workflow/adapters/index.d.ts +3 -0
- package/dist/contracts/src/workflow/adapters/memory-store.d.ts +1 -0
- package/dist/contracts/src/workflow/index.d.ts +5 -0
- package/dist/contracts/src/workflow/overview.docblock.d.ts +1 -0
- package/dist/contracts/src/workflow/runner.d.ts +5 -0
- package/dist/contracts/src/workflow/spec.d.ts +5 -0
- package/dist/contracts/src/workflow/state.d.ts +1 -0
- package/dist/contracts/src/workflow/validation.d.ts +3 -0
- package/dist/contracts/src/workspace-config/contractsrc-schema.d.ts +1 -0
- package/dist/contracts/src/workspace-config/index.d.ts +1 -0
- package/dist/contracts/src/workspace-config/workspace-config.docblock.d.ts +1 -0
- package/dist/generator/assertion-builder.d.ts +12 -0
- package/dist/generator/assertion-builder.d.ts.map +1 -0
- package/dist/generator/assertion-builder.js +16 -0
- package/dist/generator/assertion-builder.js.map +1 -0
- package/dist/generator/golden-test-generator.d.ts +27 -0
- package/dist/generator/golden-test-generator.d.ts.map +1 -0
- package/dist/generator/golden-test-generator.js +87 -0
- package/dist/generator/golden-test-generator.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/recorder/traffic-recorder.d.ts +40 -0
- package/dist/recorder/traffic-recorder.d.ts.map +1 -0
- package/dist/recorder/traffic-recorder.js +60 -0
- package/dist/recorder/traffic-recorder.js.map +1 -0
- package/dist/schema/src/EnumType.d.ts +36 -0
- package/dist/schema/src/EnumType.d.ts.map +1 -0
- package/dist/schema/src/FieldType.d.ts +30 -0
- package/dist/schema/src/FieldType.d.ts.map +1 -0
- package/dist/schema/src/GraphQLSchemaType.d.ts +2 -0
- package/dist/schema/src/JsonSchemaType.d.ts +2 -0
- package/dist/schema/src/ScalarTypeEnum.d.ts +1 -0
- package/dist/schema/src/SchemaModel.d.ts +70 -0
- package/dist/schema/src/SchemaModel.d.ts.map +1 -0
- package/dist/schema/src/SchemaModelType.d.ts +38 -0
- package/dist/schema/src/SchemaModelType.d.ts.map +1 -0
- package/dist/schema/src/ZodSchemaType.d.ts +2 -0
- package/dist/schema/src/entity/defineEntity.d.ts +1 -0
- package/dist/schema/src/entity/generator.d.ts +1 -0
- package/dist/schema/src/entity/index.d.ts +3 -0
- package/dist/schema/src/entity/types.d.ts +1 -0
- package/dist/schema/src/index.d.ts +9 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +59 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Chaman Ventures, SASU
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# @contractspec/lib.testing
|
|
2
|
+
|
|
3
|
+
Website: https://contractspec.io/
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
**Safe regeneration verification** — Capture production traffic and generate golden tests automatically.
|
|
7
|
+
|
|
8
|
+
Golden-test utilities that record real requests/responses and generate runnable test suites. Prove that regenerated code behaves identically to the original.
|
|
9
|
+
|
|
10
|
+
- **TrafficRecorder** captures production requests/responses with sampling + sanitization.
|
|
11
|
+
- **GoldenTestGenerator** converts snapshots into runnable suites.
|
|
12
|
+
- **Adapters** output Vitest or Jest files and helper runners.
|
|
13
|
+
|
|
14
|
+
### Usage
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import {
|
|
18
|
+
TrafficRecorder,
|
|
19
|
+
InMemoryTrafficStore,
|
|
20
|
+
} from '@contractspec/lib.testing/recorder';
|
|
21
|
+
|
|
22
|
+
const recorder = new TrafficRecorder({
|
|
23
|
+
store: new InMemoryTrafficStore(),
|
|
24
|
+
sampleRate: 0.01,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
await recorder.record({
|
|
28
|
+
operation: { name: 'orders.create', version: 3 },
|
|
29
|
+
input: payload,
|
|
30
|
+
output,
|
|
31
|
+
success: true,
|
|
32
|
+
timestamp: new Date(),
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
See `GoldenTestGenerator` for generating suites and CLI in `@contractspec/app.contracts-cli`.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GoldenTestCase } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/jest-adapter.d.ts
|
|
4
|
+
interface JestAdapterOptions {
|
|
5
|
+
suiteName: string;
|
|
6
|
+
cases: GoldenTestCase[];
|
|
7
|
+
runnerImport: string;
|
|
8
|
+
runnerFunction: string;
|
|
9
|
+
}
|
|
10
|
+
declare function generateJestSuite(options: JestAdapterOptions): string;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { JestAdapterOptions, generateJestSuite };
|
|
13
|
+
//# sourceMappingURL=jest-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest-adapter.d.ts","names":[],"sources":["../../src/adapters/jest-adapter.ts"],"sourcesContent":[],"mappings":";;;UAGiB,kBAAA;;EAAA,KAAA,EAER,cAF0B,EAAA;EAOnB,YAAA,EAAA,MAAiB;;;iBAAjB,iBAAA,UAA2B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { serialize } from "../generator/assertion-builder.js";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/jest-adapter.ts
|
|
4
|
+
function generateJestSuite(options) {
|
|
5
|
+
const caseBlocks = options.cases.map((testCase) => {
|
|
6
|
+
const inputConst = serialize(testCase.input);
|
|
7
|
+
const metadataConst = serialize(testCase.metadata ?? {});
|
|
8
|
+
const successBlock = `const result = await ${options.runnerFunction}(input${testCase.id}, metadata${testCase.id});
|
|
9
|
+
expect(result).toEqual(${serialize(testCase.expectedOutput ?? null)});`;
|
|
10
|
+
const failureBlock = `await expect(${options.runnerFunction}(input${testCase.id}, metadata${testCase.id})).rejects.toMatchObject(${serialize(testCase.expectedError ?? { message: "expected failure" })});`;
|
|
11
|
+
return `
|
|
12
|
+
test('${testCase.name}', async () => {
|
|
13
|
+
const input${testCase.id} = ${inputConst};
|
|
14
|
+
const metadata${testCase.id} = ${metadataConst};
|
|
15
|
+
${testCase.success ? successBlock : failureBlock}
|
|
16
|
+
});`;
|
|
17
|
+
}).join("\n");
|
|
18
|
+
return `
|
|
19
|
+
import { ${options.runnerFunction} } from '${options.runnerImport}';
|
|
20
|
+
|
|
21
|
+
describe('${options.suiteName}', () => {${caseBlocks}
|
|
22
|
+
});
|
|
23
|
+
`.trim();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { generateJestSuite };
|
|
28
|
+
//# sourceMappingURL=jest-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest-adapter.js","names":[],"sources":["../../src/adapters/jest-adapter.ts"],"sourcesContent":["import type { GoldenTestCase } from '../types';\nimport { serialize } from '../generator/assertion-builder';\n\nexport interface JestAdapterOptions {\n suiteName: string;\n cases: GoldenTestCase[];\n runnerImport: string;\n runnerFunction: string;\n}\n\nexport function generateJestSuite(options: JestAdapterOptions) {\n const caseBlocks = options.cases\n .map((testCase) => {\n const inputConst = serialize(testCase.input);\n const metadataConst = serialize(testCase.metadata ?? {});\n const successBlock = `const result = await ${options.runnerFunction}(input${testCase.id}, metadata${testCase.id});\n expect(result).toEqual(${serialize(testCase.expectedOutput ?? null)});`;\n const failureBlock = `await expect(${options.runnerFunction}(input${testCase.id}, metadata${testCase.id})).rejects.toMatchObject(${serialize(\n testCase.expectedError ?? { message: 'expected failure' }\n )});`;\n\n return `\n test('${testCase.name}', async () => {\n const input${testCase.id} = ${inputConst};\n const metadata${testCase.id} = ${metadataConst};\n ${testCase.success ? successBlock : failureBlock}\n });`;\n })\n .join('\\n');\n\n return `\nimport { ${options.runnerFunction} } from '${options.runnerImport}';\n\ndescribe('${options.suiteName}', () => {${caseBlocks}\n});\n`.trim();\n}\n"],"mappings":";;;AAUA,SAAgB,kBAAkB,SAA6B;CAC7D,MAAM,aAAa,QAAQ,MACxB,KAAK,aAAa;EACjB,MAAM,aAAa,UAAU,SAAS,MAAM;EAC5C,MAAM,gBAAgB,UAAU,SAAS,YAAY,EAAE,CAAC;EACxD,MAAM,eAAe,wBAAwB,QAAQ,eAAe,QAAQ,SAAS,GAAG,YAAY,SAAS,GAAG;6BACzF,UAAU,SAAS,kBAAkB,KAAK,CAAC;EAClE,MAAM,eAAe,gBAAgB,QAAQ,eAAe,QAAQ,SAAS,GAAG,YAAY,SAAS,GAAG,2BAA2B,UACjI,SAAS,iBAAiB,EAAE,SAAS,oBAAoB,CAC1D,CAAC;AAEF,SAAO;UACH,SAAS,KAAK;iBACP,SAAS,GAAG,KAAK,WAAW;oBACzB,SAAS,GAAG,KAAK,cAAc;MAC7C,SAAS,UAAU,eAAe,aAAa;;GAE/C,CACD,KAAK,KAAK;AAEb,QAAO;WACE,QAAQ,eAAe,WAAW,QAAQ,aAAa;;YAEtD,QAAQ,UAAU,YAAY,WAAW;;EAEnD,MAAM"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GoldenTestCase } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/vitest-adapter.d.ts
|
|
4
|
+
interface VitestAdapterOptions {
|
|
5
|
+
suiteName: string;
|
|
6
|
+
cases: GoldenTestCase[];
|
|
7
|
+
runnerImport: string;
|
|
8
|
+
runnerFunction: string;
|
|
9
|
+
}
|
|
10
|
+
declare function generateVitestSuite(options: VitestAdapterOptions): string;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { VitestAdapterOptions, generateVitestSuite };
|
|
13
|
+
//# sourceMappingURL=vitest-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-adapter.d.ts","names":[],"sources":["../../src/adapters/vitest-adapter.ts"],"sourcesContent":[],"mappings":";;;UAGiB,oBAAA;;EAAA,KAAA,EAER,cAFQ,EAAoB;EAOrB,YAAA,EAAA,MAAA;;;iBAAA,mBAAA,UAA6B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { serialize } from "../generator/assertion-builder.js";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/vitest-adapter.ts
|
|
4
|
+
function generateVitestSuite(options) {
|
|
5
|
+
const caseBlocks = options.cases.map((testCase) => {
|
|
6
|
+
const inputConst = serialize(testCase.input);
|
|
7
|
+
const metadataConst = serialize(testCase.metadata ?? {});
|
|
8
|
+
const assertions = testCase.success ? [`const result = await ${options.runnerFunction}(input${testCase.id}, metadata${testCase.id});`, `expect(result).toEqual(${serialize(testCase.expectedOutput ?? null)});`] : [`await expect(${options.runnerFunction}(input${testCase.id}, metadata${testCase.id})).rejects.toMatchObject(${serialize(testCase.expectedError ?? { message: "expected failure" })});`];
|
|
9
|
+
return `
|
|
10
|
+
it('${testCase.name}', async () => {
|
|
11
|
+
const input${testCase.id} = ${inputConst};
|
|
12
|
+
const metadata${testCase.id} = ${metadataConst};
|
|
13
|
+
${assertions.join("\n ")}
|
|
14
|
+
});`;
|
|
15
|
+
}).join("\n");
|
|
16
|
+
return `
|
|
17
|
+
import { describe, it, expect } from 'bun:test';
|
|
18
|
+
import { ${options.runnerFunction} } from '${options.runnerImport}';
|
|
19
|
+
|
|
20
|
+
describe('${options.suiteName}', () => {${caseBlocks}
|
|
21
|
+
});
|
|
22
|
+
`.trim();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { generateVitestSuite };
|
|
27
|
+
//# sourceMappingURL=vitest-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-adapter.js","names":[],"sources":["../../src/adapters/vitest-adapter.ts"],"sourcesContent":["import type { GoldenTestCase } from '../types';\nimport { serialize } from '../generator/assertion-builder';\n\nexport interface VitestAdapterOptions {\n suiteName: string;\n cases: GoldenTestCase[];\n runnerImport: string;\n runnerFunction: string;\n}\n\nexport function generateVitestSuite(options: VitestAdapterOptions) {\n const caseBlocks = options.cases\n .map((testCase) => {\n const inputConst = serialize(testCase.input);\n const metadataConst = serialize(testCase.metadata ?? {});\n const assertions = testCase.success\n ? [\n `const result = await ${options.runnerFunction}(input${testCase.id}, metadata${testCase.id});`,\n `expect(result).toEqual(${serialize(testCase.expectedOutput ?? null)});`,\n ]\n : [\n `await expect(${options.runnerFunction}(input${testCase.id}, metadata${testCase.id})).rejects.toMatchObject(${serialize(testCase.expectedError ?? { message: 'expected failure' })});`,\n ];\n\n return `\n it('${testCase.name}', async () => {\n const input${testCase.id} = ${inputConst};\n const metadata${testCase.id} = ${metadataConst};\n ${assertions.join('\\n ')}\n });`;\n })\n .join('\\n');\n\n return `\nimport { describe, it, expect } from 'bun:test';\nimport { ${options.runnerFunction} } from '${options.runnerImport}';\n\ndescribe('${options.suiteName}', () => {${caseBlocks}\n});\n`.trim();\n}\n"],"mappings":";;;AAUA,SAAgB,oBAAoB,SAA+B;CACjE,MAAM,aAAa,QAAQ,MACxB,KAAK,aAAa;EACjB,MAAM,aAAa,UAAU,SAAS,MAAM;EAC5C,MAAM,gBAAgB,UAAU,SAAS,YAAY,EAAE,CAAC;EACxD,MAAM,aAAa,SAAS,UACxB,CACE,wBAAwB,QAAQ,eAAe,QAAQ,SAAS,GAAG,YAAY,SAAS,GAAG,KAC3F,0BAA0B,UAAU,SAAS,kBAAkB,KAAK,CAAC,IACtE,GACD,CACE,gBAAgB,QAAQ,eAAe,QAAQ,SAAS,GAAG,YAAY,SAAS,GAAG,2BAA2B,UAAU,SAAS,iBAAiB,EAAE,SAAS,oBAAoB,CAAC,CAAC,IACpL;AAEL,SAAO;QACL,SAAS,KAAK;iBACL,SAAS,GAAG,KAAK,WAAW;oBACzB,SAAS,GAAG,KAAK,cAAc;MAC7C,WAAW,KAAK,SAAS,CAAC;;GAE1B,CACD,KAAK,KAAK;AAEb,QAAO;;WAEE,QAAQ,eAAe,WAAW,QAAQ,aAAa;;YAEtD,QAAQ,UAAU,YAAY,WAAW;;EAEnD,MAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./spec.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "../policy/spec.js";
|
|
2
|
+
import "../telemetry/spec.js";
|
|
3
|
+
import "../capabilities/index.js";
|
|
4
|
+
import "../experiments/spec.js";
|
|
5
|
+
import "../features/index.js";
|
|
6
|
+
import "../data-views/index.js";
|
|
7
|
+
import "../workflow/spec.js";
|
|
8
|
+
import "../policy/registry.js";
|
|
9
|
+
import "../themes.js";
|
|
10
|
+
import "../integrations/spec.js";
|
|
11
|
+
import "../integrations/connection.js";
|
|
12
|
+
import "../knowledge/spec.js";
|
|
13
|
+
import "./spec.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "../ownership.js";
|
|
2
|
+
import "../policy/spec.js";
|
|
3
|
+
import "../capabilities/index.js";
|
|
4
|
+
import "../experiments/spec.js";
|
|
5
|
+
import "../features/index.js";
|
|
6
|
+
import "../themes.js";
|
|
7
|
+
import "../integrations/spec.js";
|
|
8
|
+
import "./lifecycle.js";
|
|
9
|
+
import "../registry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../ownership.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./react/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../form-render.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../form-render.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../ownership.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./index.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "./presentations.js";
|
|
2
|
+
import { DocId } from "./registry.js";
|
|
3
|
+
import "./accessibility_wcag_compliance_specs.docblock.js";
|
|
4
|
+
import "./tech/lifecycle-stage-system.docblock.js";
|
|
5
|
+
import "./tech/presentation-runtime.docblock.js";
|
|
6
|
+
import "./tech/auth/better-auth-nextjs.docblock.js";
|
|
7
|
+
import "./tech/schema/README.docblock.js";
|
|
8
|
+
import "../workflow/overview.docblock.js";
|
|
9
|
+
import "./tech/mcp-endpoints.docblock.js";
|
|
10
|
+
import "./tech/vscode-extension.docblock.js";
|
|
11
|
+
import "./tech/telemetry-ingest.docblock.js";
|
|
12
|
+
import "./tech/contracts/README.docblock.js";
|
|
13
|
+
import "./tech/contracts/openapi-export.docblock.js";
|
|
14
|
+
import "./tech/contracts/openapi-import.docblock.js";
|
|
15
|
+
import "../workspace-config/workspace-config.docblock.js";
|
|
16
|
+
import "./tech/studio/workspaces.docblock.js";
|
|
17
|
+
import "./tech/studio/sandbox-unlogged.docblock.js";
|
|
18
|
+
import "./tech/studio/workspace-ops.docblock.js";
|
|
19
|
+
import "./tech/studio/project-routing.docblock.js";
|
|
20
|
+
import "./tech/studio/platform-admin-panel.docblock.js";
|
|
21
|
+
import "./tech/studio/learning-events.docblock.js";
|
|
22
|
+
import "./tech/studio/learning-journeys.docblock.js";
|
|
23
|
+
import "./tech/studio/project-access-teams.docblock.js";
|
|
24
|
+
import "./tech/studio/team-invitations.docblock.js";
|
|
25
|
+
import "./tech/llm/llm-integration.docblock.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","names":[],"sources":["../../../../../contracts/src/docs/registry.ts"],"sourcesContent":[],"mappings":";;;;KASY,KAAA;EAAA,OAAA,EAAK,IAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../index.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AnySchemaModel } from "../../schema/src/SchemaModel.js";
|
|
2
|
+
import "../../schema/src/index.js";
|
|
3
|
+
import { DocId } from "./docs/registry.js";
|
|
4
|
+
import { OwnerShipMeta } from "./ownership.js";
|
|
5
|
+
import "./registry.js";
|
|
6
|
+
|
|
7
|
+
//#region ../contracts/src/events.d.ts
|
|
8
|
+
interface EventSpecMeta extends Omit<OwnerShipMeta, 'docId'> {
|
|
9
|
+
/** Doc block(s) for this operation. */
|
|
10
|
+
docId?: DocId[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Typed event specification. Declare once, validate payloads at publish time,
|
|
14
|
+
* and guard emissions via the contracts runtime.
|
|
15
|
+
*/
|
|
16
|
+
interface EventSpec<T extends AnySchemaModel> {
|
|
17
|
+
meta: EventSpecMeta;
|
|
18
|
+
/** JSON-like paths to redact from logs/exports. */
|
|
19
|
+
pii?: string[];
|
|
20
|
+
/** Event payload schema from @contractspec/lib.schema. */
|
|
21
|
+
payload: T;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { EventSpec, EventSpecMeta };
|
|
25
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","names":[],"sources":["../../../../contracts/src/events.ts"],"sourcesContent":[],"mappings":";;;;;;;UAKiB,aAAA,SAAsB,KAAK;;UAElC;AAFV;;;;;AASiB,UAAA,SAAS,CAAA,UAAW,cAAX,CAAA,CAAA;EAAW,IAAA,EAC7B,aAD6B;EAC7B;EAIG,GAAA,CAAA,EAAA,MAAA,EAAA;EAAC;WAAD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./forms.js";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import "../../schema/src/index.js";
|
|
2
|
+
import { DocId } from "./docs/registry.js";
|
|
3
|
+
import "./docs/index.js";
|
|
4
|
+
import { Owner, OwnerShipMeta, OwnersEnum, Stability, StabilityEnum, Tag, TagsEnum } from "./ownership.js";
|
|
5
|
+
import "./registry-utils.js";
|
|
6
|
+
import { PolicyRef } from "./policy/spec.js";
|
|
7
|
+
import "./telemetry/index.js";
|
|
8
|
+
import "./capabilities/index.js";
|
|
9
|
+
import "./experiments/spec.js";
|
|
10
|
+
import { ResourceRefDescriptor } from "./resources.js";
|
|
11
|
+
import { TestSpecRef } from "./tests/spec.js";
|
|
12
|
+
import { EmitDecl, EmitDeclInline, EmitDeclRef, ImplementationRef, ImplementationType, OpKind, OperationSpec, OperationSpecMeta, TelemetryTrigger } from "./operations/operation.js";
|
|
13
|
+
import "./install.js";
|
|
14
|
+
import "./operations/index.js";
|
|
15
|
+
import "./presentations/index.js";
|
|
16
|
+
import "./features/index.js";
|
|
17
|
+
import "./data-views/index.js";
|
|
18
|
+
import "./themes.js";
|
|
19
|
+
import "./app-config/spec.js";
|
|
20
|
+
import "./app-config/runtime.js";
|
|
21
|
+
import "./experiments/spec-resolver.js";
|
|
22
|
+
import "./types.js";
|
|
23
|
+
import { EventSpec, EventSpecMeta } from "./events.js";
|
|
24
|
+
import "./forms/index.js";
|
|
25
|
+
import "./client/index.js";
|
|
26
|
+
import "./prompt.js";
|
|
27
|
+
import "./promptRegistry.js";
|
|
28
|
+
import "./server/index.js";
|
|
29
|
+
import "./contract-registry/index.js";
|
|
30
|
+
import "./jsonschema.js";
|
|
31
|
+
import "./openapi.js";
|
|
32
|
+
import "./model-registry.js";
|
|
33
|
+
import "./onboarding-base.js";
|
|
34
|
+
import "./policy/index.js";
|
|
35
|
+
import "./migrations.js";
|
|
36
|
+
import "./tests/index.js";
|
|
37
|
+
import "./experiments/evaluator.js";
|
|
38
|
+
import "./integrations/index.js";
|
|
39
|
+
import "./knowledge/index.js";
|
|
40
|
+
import "./integrations/operations.js";
|
|
41
|
+
import "./knowledge/operations.js";
|
|
42
|
+
import "./regenerator/index.js";
|
|
43
|
+
import "./workspace-config/index.js";
|
|
44
|
+
import "./workflow/index.js";
|
|
45
|
+
import "./schema-to-markdown.js";
|
|
46
|
+
import "./llm/index.js";
|
|
47
|
+
import "./app-config/validation.js";
|
|
48
|
+
import "./examples/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./spec.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../app-config/runtime.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../../../schema/src/index.js";
|