@ogygie/generate 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +39 -2
- package/dist/behavior-binding.d.ts +47 -0
- package/dist/behavior-grammar.d.ts +53 -0
- package/dist/check-spec.d.ts +53 -0
- package/dist/chunk-WVFHAPGC.js +10992 -0
- package/dist/cli/check-command.d.ts +3 -0
- package/dist/cli/fill-command.d.ts +39 -0
- package/dist/cli/generate-command.d.ts +8 -0
- package/dist/cli/generate-screen-command.d.ts +6 -0
- package/dist/cli/output.d.ts +9 -0
- package/dist/cli/preview-command.d.ts +19 -0
- package/dist/cli/project.d.ts +97 -0
- package/dist/cli/run.d.ts +13 -0
- package/dist/cli/run.js +1127 -0
- package/dist/cli/schemas-command.d.ts +31 -0
- package/dist/cli/verify-command.d.ts +3 -0
- package/dist/consumed-feature.d.ts +32 -0
- package/dist/emit/db.d.ts +27 -0
- package/dist/emit/factories.d.ts +14 -0
- package/dist/emit/hole-doc.d.ts +18 -0
- package/dist/emit/hole-tests.d.ts +28 -0
- package/dist/emit/manifest-entry.d.ts +44 -0
- package/dist/emit/mssql/migration.d.ts +2 -0
- package/dist/emit/mssql/repository.d.ts +17 -0
- package/dist/emit/mssql/sql-types.d.ts +23 -0
- package/dist/emit/mssql/statements.d.ts +55 -0
- package/dist/emit/mssql/stub.d.ts +17 -0
- package/dist/emit/names.d.ts +34 -0
- package/dist/emit/plan.d.ts +428 -0
- package/dist/emit/repository.d.ts +16 -0
- package/dist/emit/routes.d.ts +22 -0
- package/dist/emit/runtime.d.ts +47 -0
- package/dist/emit/screen/container.d.ts +17 -0
- package/dist/emit/screen/fixtures.d.ts +14 -0
- package/dist/emit/screen/hole-doc.d.ts +2 -0
- package/dist/emit/screen/previews.d.ts +24 -0
- package/dist/emit/screen/queries.d.ts +10 -0
- package/dist/emit/screen/shared.d.ts +35 -0
- package/dist/emit/screen/spec-contracts.d.ts +10 -0
- package/dist/emit/screen/tests-static.d.ts +21 -0
- package/dist/emit/screen/tests.d.ts +19 -0
- package/dist/emit/screen/views.d.ts +10 -0
- package/dist/emit/screen/writes.d.ts +9 -0
- package/dist/emit/screen-plan.d.ts +187 -0
- package/dist/emit/service.d.ts +18 -0
- package/dist/emit/spec-contracts.d.ts +27 -0
- package/dist/emit/tests.d.ts +3 -0
- package/dist/fill/body.d.ts +26 -0
- package/dist/fill/fill.d.ts +97 -0
- package/dist/fill/model-draw.d.ts +25 -0
- package/dist/generate-feature.d.ts +23 -0
- package/dist/generate-screen.d.ts +19 -0
- package/dist/generation-block.schema.d.ts +1279 -0
- package/dist/hole-shape.d.ts +100 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +401 -0
- package/dist/manifest-generation.schema.d.ts +239 -0
- package/dist/motif-catalog.d.ts +175 -0
- package/dist/package-root.d.ts +5 -0
- package/dist/prompt-card.d.ts +3 -0
- package/dist/schema-checks.d.ts +32 -0
- package/dist/schemas/draft.d.ts +111 -0
- package/dist/screen-block.schema.d.ts +146 -0
- package/dist/screen-checks.d.ts +34 -0
- package/dist/screen-grammar.d.ts +36 -0
- package/dist/screen-vocabulary.d.ts +47 -0
- package/dist/spec-sections.d.ts +51 -0
- package/dist/verify-generation.d.ts +93 -0
- package/dist/vocabulary.d.ts +39 -0
- package/dist/zod-introspection.d.ts +119 -0
- package/holes-library/27560e1760bb184c.json +28 -0
- package/holes-library/2c26136fc6bff99a.json +30 -0
- package/holes-library/43a27770407bb38a.json +27 -0
- package/holes-library/46e67880a81012bc.json +27 -0
- package/holes-library/48dc5c44dc2cf3b7.json +32 -0
- package/holes-library/63d0825a61f6f5d3.json +27 -0
- package/holes-library/6784ed6c8e353dac.json +27 -0
- package/holes-library/8b4e4c8f04a5fc6a.json +31 -0
- package/holes-library/README.md +33 -0
- package/holes-library/d3597f50c265ba0c.json +27 -0
- package/holes-library/e48695e16221ff1a.json +32 -0
- package/package.json +59 -3
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { FeaturePlan, HolePlan } from "./emit/plan.js";
|
|
3
|
+
import type { FieldModel } from "./zod-introspection.js";
|
|
4
|
+
/** A field type without its name: what the shape compares. */
|
|
5
|
+
export declare function normalizedTypeOf(model: FieldModel): string;
|
|
6
|
+
export declare const HoleShapeSchema: z.ZodObject<{
|
|
7
|
+
kind: z.ZodEnum<{
|
|
8
|
+
transform: "transform";
|
|
9
|
+
validate: "validate";
|
|
10
|
+
derive: "derive";
|
|
11
|
+
project: "project";
|
|
12
|
+
view: "view";
|
|
13
|
+
}>;
|
|
14
|
+
reads: z.ZodArray<z.ZodString>;
|
|
15
|
+
columns: z.ZodArray<z.ZodString>;
|
|
16
|
+
codeRole: z.ZodEnum<{
|
|
17
|
+
none: "none";
|
|
18
|
+
"operation-refusal": "operation-refusal";
|
|
19
|
+
"motif-rejection": "motif-rejection";
|
|
20
|
+
}>;
|
|
21
|
+
returns: z.ZodString;
|
|
22
|
+
}, z.core.$strict>;
|
|
23
|
+
export type HoleShape = z.infer<typeof HoleShapeSchema>;
|
|
24
|
+
export declare const HoleProvenanceSchema: z.ZodObject<{
|
|
25
|
+
hole: z.ZodString;
|
|
26
|
+
repo: z.ZodString;
|
|
27
|
+
feature: z.ZodString;
|
|
28
|
+
path: z.ZodEnum<{
|
|
29
|
+
library: "library";
|
|
30
|
+
"draw:1": "draw:1";
|
|
31
|
+
"draw:2": "draw:2";
|
|
32
|
+
escalate: "escalate";
|
|
33
|
+
human: "human";
|
|
34
|
+
}>;
|
|
35
|
+
model: z.ZodNullable<z.ZodString>;
|
|
36
|
+
date: z.ZodISODate;
|
|
37
|
+
}, z.core.$strict>;
|
|
38
|
+
export type HoleProvenance = z.infer<typeof HoleProvenanceSchema>;
|
|
39
|
+
export declare const HoleLibraryEntrySchema: z.ZodObject<{
|
|
40
|
+
hole: z.ZodString;
|
|
41
|
+
signature: z.ZodString;
|
|
42
|
+
signatureHash: z.ZodString;
|
|
43
|
+
shape: z.ZodObject<{
|
|
44
|
+
kind: z.ZodEnum<{
|
|
45
|
+
transform: "transform";
|
|
46
|
+
validate: "validate";
|
|
47
|
+
derive: "derive";
|
|
48
|
+
project: "project";
|
|
49
|
+
view: "view";
|
|
50
|
+
}>;
|
|
51
|
+
reads: z.ZodArray<z.ZodString>;
|
|
52
|
+
columns: z.ZodArray<z.ZodString>;
|
|
53
|
+
codeRole: z.ZodEnum<{
|
|
54
|
+
none: "none";
|
|
55
|
+
"operation-refusal": "operation-refusal";
|
|
56
|
+
"motif-rejection": "motif-rejection";
|
|
57
|
+
}>;
|
|
58
|
+
returns: z.ZodString;
|
|
59
|
+
}, z.core.$strict>;
|
|
60
|
+
shapeHash: z.ZodString;
|
|
61
|
+
errorCode: z.ZodString;
|
|
62
|
+
bodyTemplate: z.ZodString;
|
|
63
|
+
provenance: z.ZodArray<z.ZodObject<{
|
|
64
|
+
hole: z.ZodString;
|
|
65
|
+
repo: z.ZodString;
|
|
66
|
+
feature: z.ZodString;
|
|
67
|
+
path: z.ZodEnum<{
|
|
68
|
+
library: "library";
|
|
69
|
+
"draw:1": "draw:1";
|
|
70
|
+
"draw:2": "draw:2";
|
|
71
|
+
escalate: "escalate";
|
|
72
|
+
human: "human";
|
|
73
|
+
}>;
|
|
74
|
+
model: z.ZodNullable<z.ZodString>;
|
|
75
|
+
date: z.ZodISODate;
|
|
76
|
+
}, z.core.$strict>>;
|
|
77
|
+
}, z.core.$strict>;
|
|
78
|
+
export type HoleLibraryEntry = z.infer<typeof HoleLibraryEntrySchema>;
|
|
79
|
+
export declare function shapeOfHole(hole: HolePlan, plan: FeaturePlan): HoleShape;
|
|
80
|
+
export declare function shapeHashOf(shape: HoleShape): string;
|
|
81
|
+
/** The literal signature: from `export function` to the opening brace included, as logic.ts carries it (a view: its SQL columns). */
|
|
82
|
+
export declare function signatureTextOf(hole: HolePlan, plan?: FeaturePlan): string;
|
|
83
|
+
export declare function signatureHashOf(signature: string): string;
|
|
84
|
+
/** The body with the feature's names replaced by placeholders, longest names first so a name never eats another. */
|
|
85
|
+
export declare function bodyTemplateOf(body: string, hole: HolePlan): string;
|
|
86
|
+
/** The reverse of `bodyTemplateOf`: a template instantiated for a hole — lot 2 bis uses it, defined here with its inverse. */
|
|
87
|
+
export declare function instantiateBody(template: string, hole: HolePlan): string;
|
|
88
|
+
/** The code a hole answers, when it answers one. */
|
|
89
|
+
export declare function errorCodeOf(hole: HolePlan): string | null;
|
|
90
|
+
export declare function libraryEntryOf(hole: HolePlan, plan: FeaturePlan, body: string, provenance: HoleProvenance): HoleLibraryEntry;
|
|
91
|
+
/** Entries of the same shape that are not this very hole of this very feature. */
|
|
92
|
+
export declare function neighboursOfShape(shapeHash: string, library: readonly HoleLibraryEntry[], self: {
|
|
93
|
+
hole: string;
|
|
94
|
+
feature: string;
|
|
95
|
+
}): HoleLibraryEntry[];
|
|
96
|
+
/** The library shipped with this package: every entry, sorted by file name for determinism. */
|
|
97
|
+
export declare const HOLES_LIBRARY_DIR: string;
|
|
98
|
+
export declare function loadHolesLibrary(directory?: string): HoleLibraryEntry[];
|
|
99
|
+
/** The file name of an entry: its signature hash, so the same signature always lands in the same file. */
|
|
100
|
+
export declare function libraryFileNameOf(entry: HoleLibraryEntry): string;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @intent Public surface of `@ogygie/generate`, lot 1: read a spec's
|
|
3
|
+
* `# Génération` block, parse and bind its behavior lines, report. The
|
|
4
|
+
* generation itself (files, holes, library) is lot 2 and will be exported
|
|
5
|
+
* from here when it exists — nothing is exported before it is real.
|
|
6
|
+
*/
|
|
7
|
+
export { bindBehavior, BEHAVIOR_UNBOUND, type BindingContext, type BindingOutcome, } from "./behavior-binding.js";
|
|
8
|
+
export { isLiteralValue, parseBehavior, parseExpectation, OPENING_KEYWORD, type BehaviorCase, type BehaviorExpectation, type BehaviorOutcome, type BehaviorParseResult, type ParsedBehavior, } from "./behavior-grammar.js";
|
|
9
|
+
export { checkSpec, type CheckSpecInput, type CheckSpecReport, type CheckTally, type CheckedBehavior } from "./check-spec.js";
|
|
10
|
+
export { GENERATION_BLOCK_INVALID, GENERATION_BLOCK_KEYS, GenerationBlockSchema, HoleSchema, OperationSchema, SUCCESS_STATUS_BY_KIND, HOLE_KIND_SERVES, METHOD_BY_KIND, acceptExamplesOf, isHttpOperation, isKeyedOperation, isWriteOperation, parseGenerationBlock, pathParametersOf, validateGenerationBlock, type BlockLocation, type DeriveHole, type GenerationBlock, type GenerationBlockParse, type Hole, type HttpOperation, type KeyedOperation, type Operation, type ProjectHole, type ReadOperation, type Reference, type Slot, type TransformHole, type ValidateHole, type ViewHole, type WriteOperation, AdoptedColumnSchema, AlterStepSchema, TableDeclarationSchema, TableRefSchema, parentKeyFieldOf, tableNameOf, tableRefOf, type AdoptedColumn, type AlterStep, type TableDeclaration, type TableRef, } from "./generation-block.schema.js";
|
|
11
|
+
export { EMPTY_GUARD_REGISTRY, GenerationTargetSchema, GuardDenialSchema, GuardRegistryEntrySchema, GuardVariantSchema, ManifestGenerationSchema, ModuleExportSchema, ModuleTypeSchema, caseKeyOfPhrase, readManifestGeneration, type GenerationTarget, type GuardDenial, type GuardRegistry, type GuardRegistryEntry, type GuardVariant, type ManifestGeneration, type ModuleExport, type ModuleType, contractViolationCodeOf, validationOf, type ValidationMode, } from "./manifest-generation.schema.js";
|
|
12
|
+
export { checkBlockAgainstSchemas, type SchemaCheckInput } from "./schema-checks.js";
|
|
13
|
+
export { fieldNamesOf, hasSameFieldsAs, invalidSampleOf, modelOf, modelsOfModule, sampleOf, type FieldModel, type InvalidSampleResult, type SampleResult, type SchemaModel, type SchemaModels, } from "./zod-introspection.js";
|
|
14
|
+
export { HTTP_OPERATION_KINDS, KEYED_OPERATION_KINDS, MOTIF_CATALOG, MOTIF_NAMES, MotifsSchema, WRITE_OPERATION_KINDS, motifErrorStatuses, motifVocabulary, parseUses, provisionalMotifs, type HttpOperationKind, type MotifName, type Motifs, } from "./motif-catalog.js";
|
|
15
|
+
export { extractBehaviorParagraphs, extractGenerationSection, splitTopLevelSections, type BehaviorParagraph, type GenerationSectionLookup, type SpecSection, } from "./spec-sections.js";
|
|
16
|
+
export { CONTRACT_VALIDATION_FAILED, vocabularyOf, type OperationVocabulary } from "./vocabulary.js";
|
|
17
|
+
export { GENERATED_DRIFT, GENERATED_HEADER, GENERATOR_VERSION, verifyGeneration, type GeneratedFileClaim, type SpecOwnerFolder, type VerifiedSpec, type VerifyGenerationInput, type VerifyGenerationReport, } from "./verify-generation.js";
|
|
18
|
+
export { buildFeaturePlan, type DeriveHolePlan, type ElementPlan, type FeaturePlan, type FeaturePlanInput, type HolePlan, type OperationPlan, type ProjectHolePlan, type ReferencePlan, type SlotPlan, type TablePlan, type TransformHolePlan, type ValidateHolePlan, type ViewHolePlan, } from "./emit/plan.js";
|
|
19
|
+
export { GENERATED_FEATURE_FILES, generateFeature, migrationFileNameFor, type GenerateOptions, type GeneratedFile, } from "./generate-feature.js";
|
|
20
|
+
export { HOLES_LIBRARY_DIR, HoleLibraryEntrySchema, HoleProvenanceSchema, HoleShapeSchema, bodyTemplateOf, instantiateBody, libraryEntryOf, libraryFileNameOf, loadHolesLibrary, neighboursOfShape, normalizedTypeOf, shapeHashOf, shapeOfHole, signatureHashOf, signatureTextOf, type HoleLibraryEntry, type HoleProvenance, type HoleShape, } from "./hole-shape.js";
|
|
21
|
+
export { bodyLinesFor, effectParameterLines, holeSignatureLines, isAsyncHole, parseLogicSections, type LogicSection } from "./emit/runtime.js";
|
|
22
|
+
export { ownedTables, tablesOf, viewBodiesOf } from "./emit/db.js";
|
|
23
|
+
export { deepOverlay } from "./emit/hole-tests.js";
|
|
24
|
+
export { readCollectionOf } from "./schema-checks.js";
|
|
25
|
+
export { deniedCodeOf } from "./vocabulary.js";
|
|
26
|
+
export { boundBehaviorsOf } from "./verify-generation.js";
|
|
27
|
+
export { applyManifestEntry, intentForManifest, intentOfSpec, manifestEntryDrift, manifestEntryOf, routeDescriptionOf, serializeManifest, type ApplyManifestEntryResult, type DeclaredManifestEntry, type GeneratedManifestEntry, type ManifestEntryField, type ManifestRouteEntry, } from "./emit/manifest-entry.js";
|
|
28
|
+
export { CONTRACTS_SECTION_TITLE, SPEC_GENERATED_END, applySpecContracts, emitSpecContracts, extractSpecContracts, refusalsOf, specGeneratedStart, type ApplySpecContractsResult, type SpecGeneratedBlock, } from "./emit/spec-contracts.js";
|
|
29
|
+
export { ConsumedFeatureSchema, CustomViewSchema, FormViewSchema, ListViewSchema, SCREEN_BLOCK_KEYS, ScreenBlockSchema, ScreenHoleSchema, ViewSchema, consumerOf, parseScreenBlock, primaryViewOf, validateScreenBlock, type ConsumedFeature, type CustomView, type FormView, type ListView, type ScreenBlock, type ScreenBlockParse, type ScreenHole, type View, } from "./screen-block.schema.js";
|
|
30
|
+
export { blockKindOf, blockProblemOf, readYamlBlock, type YamlBlockRead } from "./generation-block.schema.js";
|
|
31
|
+
export { SCREEN_SUBJECT, parseScreenBehavior, type ParsedScreenBehavior, type ScreenCase, type ScreenParseResult } from "./screen-grammar.js";
|
|
32
|
+
export { FORM_RENDERS, FORM_STATES, READ_RENDERS, READ_STATES, bindScreenBehavior, screenCaseKey, screenVocabularyOf, type ScreenBindingContext, type ScreenBindingOutcome, type ScreenVocabulary, } from "./screen-vocabulary.js";
|
|
33
|
+
export { checkScreenBlock, elementFieldsOf, type ConsumedFeatureCheckInput, type ScreenCheckInput } from "./screen-checks.js";
|
|
34
|
+
export { buildScreenPlan, distinctSampleOf, labelOf, type BoundScreenBehaviorInput, type ConsumedFeatureInput, type ConsumedRoute, type CustomViewPlan, type FormViewPlan, type ListViewPlan, type ScreenBehaviorPlan, type ScreenOperationPlan, type ScreenPlan, type ScreenPlanInput, type ViewFieldPlan, type ViewPlan, } from "./emit/screen-plan.js";
|
|
35
|
+
export { generateScreen, screenBodyDefault, screenBodyPath, type GenerateScreenOptions } from "./generate-screen.js";
|
|
36
|
+
export { emitScreenSpecContracts } from "./emit/screen/spec-contracts.js";
|
|
37
|
+
export { applyGeneratedContracts } from "./emit/spec-contracts.js";
|
|
38
|
+
export { boundScreenBehaviorsOf, type LoadedConsumedForVerify } from "./verify-generation.js";
|
|
39
|
+
export { FrontTargetSchema, type FrontTarget } from "./manifest-generation.schema.js";
|
|
40
|
+
export { DERIVED_READ_GUARD, consumableOperationsOf, derivedReadsOf, readIdOfInputSchema } from "./consumed-feature.js";
|
|
41
|
+
export { fillHole, fillFeature, DEFAULT_FILL_OPTIONS, type Candidate, type FillDeps, type FillOptions, type HoleFillInput, type HoleFillResult, type FeatureFillSummary } from "./fill/fill.js";
|
|
42
|
+
export { replaceHoleBody, extractCandidateBody, forbiddenInBody, isTodoBody, BODY_BANS } from "./fill/body.js";
|
|
43
|
+
export { createModelDrawer, DEFAULT_FILL_MODELS, HOLE_SYSTEM_PROMPT, type FillModels, type ModelDrawer } from "./fill/model-draw.js";
|
|
44
|
+
export { recordLibraryEntry, scrubbedEnvironment, parseFillFlags } from "./cli/fill-command.js";
|
|
45
|
+
export { generationGrammarCard } from "./prompt-card.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AdoptedColumnSchema,
|
|
3
|
+
AlterStepSchema,
|
|
4
|
+
BEHAVIOR_UNBOUND,
|
|
5
|
+
BODY_BANS,
|
|
6
|
+
CONTRACTS_SECTION_TITLE,
|
|
7
|
+
CONTRACT_VALIDATION_FAILED,
|
|
8
|
+
ConsumedFeatureSchema,
|
|
9
|
+
CustomViewSchema,
|
|
10
|
+
DEFAULT_FILL_MODELS,
|
|
11
|
+
DEFAULT_FILL_OPTIONS,
|
|
12
|
+
DERIVED_READ_GUARD,
|
|
13
|
+
EMPTY_GUARD_REGISTRY,
|
|
14
|
+
FORM_RENDERS,
|
|
15
|
+
FORM_STATES,
|
|
16
|
+
FormViewSchema,
|
|
17
|
+
FrontTargetSchema,
|
|
18
|
+
GENERATED_DRIFT,
|
|
19
|
+
GENERATED_FEATURE_FILES,
|
|
20
|
+
GENERATED_HEADER,
|
|
21
|
+
GENERATION_BLOCK_INVALID,
|
|
22
|
+
GENERATION_BLOCK_KEYS,
|
|
23
|
+
GENERATOR_VERSION,
|
|
24
|
+
GENERIC_CASES,
|
|
25
|
+
GenerationBlockSchema,
|
|
26
|
+
GenerationTargetSchema,
|
|
27
|
+
GuardDenialSchema,
|
|
28
|
+
GuardRegistryEntrySchema,
|
|
29
|
+
GuardVariantSchema,
|
|
30
|
+
HOLES_LIBRARY_DIR,
|
|
31
|
+
HOLE_KIND_SERVES,
|
|
32
|
+
HOLE_SYSTEM_PROMPT,
|
|
33
|
+
HTTP_OPERATION_KINDS,
|
|
34
|
+
HoleLibraryEntrySchema,
|
|
35
|
+
HoleProvenanceSchema,
|
|
36
|
+
HoleSchema,
|
|
37
|
+
HoleShapeSchema,
|
|
38
|
+
KEYED_OPERATION_KINDS,
|
|
39
|
+
ListViewSchema,
|
|
40
|
+
METHOD_BY_KIND,
|
|
41
|
+
MOTIF_CATALOG,
|
|
42
|
+
MOTIF_NAMES,
|
|
43
|
+
ManifestGenerationSchema,
|
|
44
|
+
ModuleExportSchema,
|
|
45
|
+
ModuleTypeSchema,
|
|
46
|
+
MotifsSchema,
|
|
47
|
+
OPENING_KEYWORD,
|
|
48
|
+
OperationSchema,
|
|
49
|
+
READ_RENDERS,
|
|
50
|
+
READ_STATES,
|
|
51
|
+
SCREEN_BLOCK_KEYS,
|
|
52
|
+
SCREEN_SUBJECT,
|
|
53
|
+
SPEC_GENERATED_END,
|
|
54
|
+
SUCCESS_STATUS_BY_KIND,
|
|
55
|
+
ScreenBlockSchema,
|
|
56
|
+
ScreenHoleSchema,
|
|
57
|
+
TableDeclarationSchema,
|
|
58
|
+
TableRefSchema,
|
|
59
|
+
ViewSchema,
|
|
60
|
+
WRITE_OPERATION_KINDS,
|
|
61
|
+
acceptExamplesOf,
|
|
62
|
+
applyGeneratedContracts,
|
|
63
|
+
applyManifestEntry,
|
|
64
|
+
applySpecContracts,
|
|
65
|
+
bindBehavior,
|
|
66
|
+
bindScreenBehavior,
|
|
67
|
+
blockKindOf,
|
|
68
|
+
blockProblemOf,
|
|
69
|
+
bodyLinesFor,
|
|
70
|
+
bodyTemplateOf,
|
|
71
|
+
boundBehaviorsOf,
|
|
72
|
+
boundScreenBehaviorsOf,
|
|
73
|
+
buildFeaturePlan,
|
|
74
|
+
buildScreenPlan,
|
|
75
|
+
caseKeyOfPhrase,
|
|
76
|
+
checkBlockAgainstSchemas,
|
|
77
|
+
checkScreenBlock,
|
|
78
|
+
checkSpec,
|
|
79
|
+
consumableOperationsOf,
|
|
80
|
+
consumerOf,
|
|
81
|
+
contractViolationCodeOf,
|
|
82
|
+
createModelDrawer,
|
|
83
|
+
deepOverlay,
|
|
84
|
+
deniedCodeOf,
|
|
85
|
+
derivedReadsOf,
|
|
86
|
+
distinctSampleOf,
|
|
87
|
+
effectParameterLines,
|
|
88
|
+
elementFieldsOf,
|
|
89
|
+
emitScreenSpecContracts,
|
|
90
|
+
emitSpecContracts,
|
|
91
|
+
extractBehaviorParagraphs,
|
|
92
|
+
extractCandidateBody,
|
|
93
|
+
extractGenerationSection,
|
|
94
|
+
extractSpecContracts,
|
|
95
|
+
fieldNamesOf,
|
|
96
|
+
fillFeature,
|
|
97
|
+
fillHole,
|
|
98
|
+
forbiddenInBody,
|
|
99
|
+
generateFeature,
|
|
100
|
+
generateScreen,
|
|
101
|
+
hasSameFieldsAs,
|
|
102
|
+
holeSignatureLines,
|
|
103
|
+
instantiateBody,
|
|
104
|
+
intentForManifest,
|
|
105
|
+
intentOfSpec,
|
|
106
|
+
invalidSampleOf,
|
|
107
|
+
isAsyncHole,
|
|
108
|
+
isHttpOperation,
|
|
109
|
+
isKeyedOperation,
|
|
110
|
+
isLiteralValue,
|
|
111
|
+
isTodoBody,
|
|
112
|
+
isWriteOperation,
|
|
113
|
+
labelOf,
|
|
114
|
+
libraryEntryOf,
|
|
115
|
+
libraryFileNameOf,
|
|
116
|
+
loadHolesLibrary,
|
|
117
|
+
manifestEntryDrift,
|
|
118
|
+
manifestEntryOf,
|
|
119
|
+
migrationFileNameFor,
|
|
120
|
+
modelOf,
|
|
121
|
+
modelsOfModule,
|
|
122
|
+
motifErrorStatuses,
|
|
123
|
+
motifVocabulary,
|
|
124
|
+
neighboursOfShape,
|
|
125
|
+
normalizedTypeOf,
|
|
126
|
+
ownedTables,
|
|
127
|
+
parentKeyFieldOf,
|
|
128
|
+
parseBehavior,
|
|
129
|
+
parseExpectation,
|
|
130
|
+
parseFillFlags,
|
|
131
|
+
parseGenerationBlock,
|
|
132
|
+
parseLogicSections,
|
|
133
|
+
parseScreenBehavior,
|
|
134
|
+
parseScreenBlock,
|
|
135
|
+
parseUses,
|
|
136
|
+
pathParametersOf,
|
|
137
|
+
primaryViewOf,
|
|
138
|
+
provisionalMotifs,
|
|
139
|
+
readCollectionOf,
|
|
140
|
+
readIdOfInputSchema,
|
|
141
|
+
readManifestGeneration,
|
|
142
|
+
readYamlBlock,
|
|
143
|
+
recordLibraryEntry,
|
|
144
|
+
refusalsOf,
|
|
145
|
+
replaceHoleBody,
|
|
146
|
+
routeDescriptionOf,
|
|
147
|
+
sampleOf,
|
|
148
|
+
screenBodyDefault,
|
|
149
|
+
screenBodyPath,
|
|
150
|
+
screenCaseKey,
|
|
151
|
+
screenVocabularyOf,
|
|
152
|
+
scrubbedEnvironment,
|
|
153
|
+
serializeManifest,
|
|
154
|
+
shapeHashOf,
|
|
155
|
+
shapeOfHole,
|
|
156
|
+
signatureHashOf,
|
|
157
|
+
signatureTextOf,
|
|
158
|
+
specGeneratedStart,
|
|
159
|
+
splitTopLevelSections,
|
|
160
|
+
tableNameOf,
|
|
161
|
+
tableRefOf,
|
|
162
|
+
tablesOf,
|
|
163
|
+
validateGenerationBlock,
|
|
164
|
+
validateScreenBlock,
|
|
165
|
+
validationOf,
|
|
166
|
+
verifyGeneration,
|
|
167
|
+
viewBodiesOf,
|
|
168
|
+
vocabularyOf
|
|
169
|
+
} from "./chunk-WVFHAPGC.js";
|
|
170
|
+
|
|
171
|
+
// src/prompt-card.ts
|
|
172
|
+
var phrase = (caseKey) => caseKey.replace(/^with:/u, "avec ").replace(/^without:/u, "sans ");
|
|
173
|
+
function guardLines(generation) {
|
|
174
|
+
if (generation === null || Object.keys(generation.guards).length === 0) return ["- (aucun guard d\xE9clar\xE9 au manifeste : la spec ne peut nommer aucune op\xE9ration HTTP)"];
|
|
175
|
+
return Object.entries(generation.guards).map(([name, guard]) => {
|
|
176
|
+
const variants = (guard.variants ?? []).map((variant) => `\xAB avec ${variant.case} \xBB`).join(", ");
|
|
177
|
+
const denials = guard.denials.map((denial) => `\xAB ${denial.case} \xBB \u2192 ${denial.status} ${denial.code}${denial.perFeature === true ? " (rempla\xE7able par guardDeniedCode)" : ""}`).join(" ; ");
|
|
178
|
+
return `- \`${name}\` : cas valide \xAB avec ${guard.valid.case} \xBB${variants === "" ? "" : `, variantes ${variants}`} ; refus ${denials}`;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
function targetLines(generation) {
|
|
182
|
+
if (generation === null) return ["- aucun bloc `generation` au manifeste : n'\xE9cris PAS de section `# G\xE9n\xE9ration`."];
|
|
183
|
+
const { target } = generation;
|
|
184
|
+
const lines = [`- base ${target.database}, tenancy ${target.tenancy}, tests ${target.tests}, colonnes en ${target.naming} ; code d'un contrat viol\xE9 : ${contractViolationCodeOf(target)} (\xE9cris CONTRACT_VALIDATION_FAILED dans les lignes, il d\xE9signe ce code).`];
|
|
185
|
+
if (target.database === "mssql-raw") lines.push("- cette cible n'\xE9met ni `import` ni `appendOnlySupersedes` ni `allOrNothingImport` : lectures, create, update, setOrClear, delete et les quatre autres motifs.");
|
|
186
|
+
if (generation.front === void 0) lines.push("- aucune cible `front` : pas de spec d'\xE9cran (bloc `consumes`), seulement des features API.");
|
|
187
|
+
else lines.push(`- cible front ${generation.front.tests} : une spec d'\xE9cran est possible (bloc \`consumes\`).`);
|
|
188
|
+
return lines;
|
|
189
|
+
}
|
|
190
|
+
function generationGrammarCard(generation) {
|
|
191
|
+
const motifs = Object.entries(MOTIF_CATALOG).map(([name, descriptor]) => `\`${name}\`${descriptor.kinds.length === 0 ? "" : ` (${descriptor.kinds.join(", ")})`}${descriptor.provisional === void 0 ? "" : " \u2014 provisoire"}`);
|
|
192
|
+
const holeKinds = Object.entries(HOLE_KIND_SERVES).map(([kind, serves]) => `\`${kind}\` (sert ${serves.join(", ")})`);
|
|
193
|
+
const operationKinds = Object.entries(METHOD_BY_KIND).map(([kind, method]) => `\`${kind}\` (${method}, succ\xE8s ${SUCCESS_STATUS_BY_KIND[kind]})`);
|
|
194
|
+
return [
|
|
195
|
+
"G\xC9N\xC9RATION (section `# G\xE9n\xE9ration`, facultative) :",
|
|
196
|
+
"Une spec qui porte `# G\xE9n\xE9ration` est G\xC9N\xC9R\xC9E : routes, base, tests et \xE9crans se d\xE9rivent sans mod\xE8le ; ce qui se pense devient un TROU typ\xE9, rempli ensuite. Alors ses `# Comportements` s'\xE9crivent dans la GRAMMAIRE FERM\xC9E ci-dessous, jamais au format \xC9TANT DONN\xC9 / QUAND / ALORS. Sans `# G\xE9n\xE9ration`, garde le format en trois lignes.",
|
|
197
|
+
"",
|
|
198
|
+
`Bloc d'une FEATURE API \u2014 un seul bloc \`\`\`yaml, cl\xE9s ${GENERATION_BLOCK_KEYS.map((key) => `\`${key}\``).join(", ")} :`,
|
|
199
|
+
'- `contracts: { module: ./schemas.ts, resource: <Nom>Schema, table: snake_case, key?: champ (cl\xE9 m\xE9tier des \xE9critures par cl\xE9), columns?: { champ: "type" } }` \u2014 les sch\xE9mas sont des NOMS (suffixe Schema), jamais du code ; `columns` est FACULTATIF et ne force un type que quand le sch\xE9ma ne suffit pas, parmi la liste ferm\xE9e `text`, `integer`, `bigint`, `boolean`, `date`, `timestamptz`, `uuid`, `jsonb`, `numeric(p,s)`, `varchar(n)`, `char(n)` (jamais un type SQL Server, jamais `not null` : la cible traduit) ; `id` n\'est jamais une cl\xE9 ni une colonne d\xE9clar\xE9e.',
|
|
200
|
+
`- \`operations\` : ${operationKinds.join(", ")} ; chaque op\xE9ration : \`{ id: camelCase, kind, method, path: /api/\u2026, guard: <un guard ci-dessous>, input: <Nom>Schema, output: <Nom>Schema, holes?: [ids], respondsWith?: <lecture du bloc>, invalidates?: [racine-kebab] }\` ; une \xE9criture par cl\xE9 ajoute \`by: <cl\xE9>\` et \`notFound: CODE\`, son path finit par \`/:<cl\xE9>\`.`,
|
|
201
|
+
`- \`motifs\` : ${motifs.join(", ")} \u2014 une instance par motif, et SEULEMENT si une op\xE9ration l'emploie (\`uses: <motif>\` sur l'op\xE9ration, sauf \`signedWrite\` qui s'applique \xE0 toutes les \xE9critures) ; sinon \`motifs: {}\`.`,
|
|
202
|
+
`- \`holes\` : ${holeKinds.join(", ")} ; un trou \`validate\` = \`{ id, kind: validate, reads: [champs de l'entr\xE9e], error: CODE, effects: [] | [clock], suggestedFix: true, examples: { accept: {\u2026}, reject: {\u2026} } }\` ; un \`derive\` = \`{ id, kind: derive, reads, writes: <champ de la ressource>, error: CODE, effects: [], examples: { accept: [{ input, output }], reject: { input } } }\`. Les exemples sont OBLIGATOIRES ; une date d'exemple se rapporte au 2026-01-01 (horloge fig\xE9e des tests).`,
|
|
203
|
+
"",
|
|
204
|
+
`Bloc d'un \xC9CRAN \u2014 cl\xE9s ${SCREEN_BLOCK_KEYS.map((key) => `\`${key}\``).join(", ")} : \`consumes: [{ feature, operations: [ids] }]\` (features DE LA CARTE), \`views: [{ id, kind: list, operation: <lecture> } | { id, kind: form, operation: <\xE9criture>, fields: [champs] } | { id, kind: custom, operation, hole }]\`, \`holes: [{ id, receives: [champs de la sortie], actions: [\xE9critures], examples: { input, renders: ["texte"] } }]\`, \`route?: /chemin\`.`,
|
|
205
|
+
"",
|
|
206
|
+
"Les LIGNES de comportement (une par puce, deux lignes au plus, recoll\xE9es) :",
|
|
207
|
+
"`- \xC9TANT DONN\xC9 <op\xE9ration> avec <cas>[, (avec|sans) <cas>]* ALORS <statut> [<CODE>] [et <attendu>[, <attendu>]*] [[hole:<id>]]`",
|
|
208
|
+
`- cas g\xE9n\xE9riques : ${GENERIC_CASES.map((key) => `\xAB ${phrase(key)} \xBB`).join(", ")} (\xAB entr\xE9e invalide \xBB = un champ requis absent) ; lecture : \xAB avec lignes \xBB, \xAB sans ligne \xBB ; \xE9criture par cl\xE9 : \xAB avec <cl\xE9> inconnu \xBB ; \`uniqueKey\` : \xAB avec <cl\xE9> d\xE9j\xE0 pris \xBB ; \`refuseWhenReferenced\` : \xAB sans r\xE9f\xE9rence \xBB, \xAB avec ligne r\xE9f\xE9renc\xE9e \xBB.`,
|
|
209
|
+
"- guards du produit (leurs cas, leurs refus) :",
|
|
210
|
+
...guardLines(generation),
|
|
211
|
+
"- statut : le code HTTP (200 pour une lecture, 201 pour create, 200 pour update) ou le refus (400 avec le code du trou ou CONTRACT_VALIDATION_FAILED, 401/403 du guard, 404 du notFound, 409 d'un motif).",
|
|
212
|
+
"- attendus : `<collection> = lignes`, `<collection> = []`, `ordre <champ> asc|desc`, `updated.<champ> = cl\xE9 vis\xE9e`, `champs envoy\xE9s \xE9crits`, `liste \xE0 jour`, `suggestedFix`, `rien n'est \xE9crit`, `<writes> d\xE9riv\xE9` ; TOUT mot hors de cette liste \u2014 une valeur qu'un trou calcule (`created.<champ d\xE9riv\xE9> = \u2026`), un refus qu'un trou d\xE9cide \u2014 nomme son trou en fin de ligne : `[hole:<id>]`, sinon la ligne est refus\xE9e (OGYGIE_BEHAVIOR_UNBOUND).",
|
|
213
|
+
`- \xE9cran : \`- \xC9TANT DONN\xC9 <vue|\xE9cran> avec <\xE9tat> ALORS <rendu>\` ; \xE9tats ${[...READ_STATES, ...FORM_STATES].map((key) => `\xAB ${phrase(key)} \xBB`).join(", ")} ; rendus ${[...READ_RENDERS, ...FORM_RENDERS].map((render) => `\xAB ${render} \xBB`).join(", ")}.`,
|
|
214
|
+
"",
|
|
215
|
+
"Cible du produit :",
|
|
216
|
+
...targetLines(generation),
|
|
217
|
+
"",
|
|
218
|
+
"Exemple minimal d'une feature :",
|
|
219
|
+
"```yaml",
|
|
220
|
+
"contracts: { module: ./schemas.ts, resource: OrderSchema, table: orders, key: code }",
|
|
221
|
+
"operations:",
|
|
222
|
+
" - { id: listAll, kind: read, method: GET, path: /api/orders, guard: <guard>, input: ListOrdersInputSchema, output: ListOrdersOutputSchema, orderBy: [placedOn, desc] }",
|
|
223
|
+
" - { id: create, kind: create, method: POST, path: /api/orders, guard: <guard>, input: CreateOrderInputSchema, output: ListOrdersOutputSchema, holes: [deriveOrderCode], respondsWith: listAll, invalidates: [orders] }",
|
|
224
|
+
"motifs: {}",
|
|
225
|
+
"holes:",
|
|
226
|
+
' - { id: deriveOrderCode, kind: derive, reads: [label], writes: code, error: ORDER_LABEL_INVALID, effects: [], examples: { accept: [{ input: { label: "First order" }, output: "first-order" }], reject: { input: { label: "###" } } } }',
|
|
227
|
+
"```",
|
|
228
|
+
"- \xC9TANT DONN\xC9 listAll avec lignes ALORS 200 et orders = lignes, ordre placedOn desc",
|
|
229
|
+
"- \xC9TANT DONN\xC9 create avec entr\xE9e valide ALORS 201 et created.code = code d\xE9riv\xE9, liste \xE0 jour [hole:deriveOrderCode]",
|
|
230
|
+
"- \xC9TANT DONN\xC9 create avec entr\xE9e invalide ALORS 400 CONTRACT_VALIDATION_FAILED et suggestedFix"
|
|
231
|
+
].join("\n");
|
|
232
|
+
}
|
|
233
|
+
export {
|
|
234
|
+
AdoptedColumnSchema,
|
|
235
|
+
AlterStepSchema,
|
|
236
|
+
BEHAVIOR_UNBOUND,
|
|
237
|
+
BODY_BANS,
|
|
238
|
+
CONTRACTS_SECTION_TITLE,
|
|
239
|
+
CONTRACT_VALIDATION_FAILED,
|
|
240
|
+
ConsumedFeatureSchema,
|
|
241
|
+
CustomViewSchema,
|
|
242
|
+
DEFAULT_FILL_MODELS,
|
|
243
|
+
DEFAULT_FILL_OPTIONS,
|
|
244
|
+
DERIVED_READ_GUARD,
|
|
245
|
+
EMPTY_GUARD_REGISTRY,
|
|
246
|
+
FORM_RENDERS,
|
|
247
|
+
FORM_STATES,
|
|
248
|
+
FormViewSchema,
|
|
249
|
+
FrontTargetSchema,
|
|
250
|
+
GENERATED_DRIFT,
|
|
251
|
+
GENERATED_FEATURE_FILES,
|
|
252
|
+
GENERATED_HEADER,
|
|
253
|
+
GENERATION_BLOCK_INVALID,
|
|
254
|
+
GENERATION_BLOCK_KEYS,
|
|
255
|
+
GENERATOR_VERSION,
|
|
256
|
+
GenerationBlockSchema,
|
|
257
|
+
GenerationTargetSchema,
|
|
258
|
+
GuardDenialSchema,
|
|
259
|
+
GuardRegistryEntrySchema,
|
|
260
|
+
GuardVariantSchema,
|
|
261
|
+
HOLES_LIBRARY_DIR,
|
|
262
|
+
HOLE_KIND_SERVES,
|
|
263
|
+
HOLE_SYSTEM_PROMPT,
|
|
264
|
+
HTTP_OPERATION_KINDS,
|
|
265
|
+
HoleLibraryEntrySchema,
|
|
266
|
+
HoleProvenanceSchema,
|
|
267
|
+
HoleSchema,
|
|
268
|
+
HoleShapeSchema,
|
|
269
|
+
KEYED_OPERATION_KINDS,
|
|
270
|
+
ListViewSchema,
|
|
271
|
+
METHOD_BY_KIND,
|
|
272
|
+
MOTIF_CATALOG,
|
|
273
|
+
MOTIF_NAMES,
|
|
274
|
+
ManifestGenerationSchema,
|
|
275
|
+
ModuleExportSchema,
|
|
276
|
+
ModuleTypeSchema,
|
|
277
|
+
MotifsSchema,
|
|
278
|
+
OPENING_KEYWORD,
|
|
279
|
+
OperationSchema,
|
|
280
|
+
READ_RENDERS,
|
|
281
|
+
READ_STATES,
|
|
282
|
+
SCREEN_BLOCK_KEYS,
|
|
283
|
+
SCREEN_SUBJECT,
|
|
284
|
+
SPEC_GENERATED_END,
|
|
285
|
+
SUCCESS_STATUS_BY_KIND,
|
|
286
|
+
ScreenBlockSchema,
|
|
287
|
+
ScreenHoleSchema,
|
|
288
|
+
TableDeclarationSchema,
|
|
289
|
+
TableRefSchema,
|
|
290
|
+
ViewSchema,
|
|
291
|
+
WRITE_OPERATION_KINDS,
|
|
292
|
+
acceptExamplesOf,
|
|
293
|
+
applyGeneratedContracts,
|
|
294
|
+
applyManifestEntry,
|
|
295
|
+
applySpecContracts,
|
|
296
|
+
bindBehavior,
|
|
297
|
+
bindScreenBehavior,
|
|
298
|
+
blockKindOf,
|
|
299
|
+
blockProblemOf,
|
|
300
|
+
bodyLinesFor,
|
|
301
|
+
bodyTemplateOf,
|
|
302
|
+
boundBehaviorsOf,
|
|
303
|
+
boundScreenBehaviorsOf,
|
|
304
|
+
buildFeaturePlan,
|
|
305
|
+
buildScreenPlan,
|
|
306
|
+
caseKeyOfPhrase,
|
|
307
|
+
checkBlockAgainstSchemas,
|
|
308
|
+
checkScreenBlock,
|
|
309
|
+
checkSpec,
|
|
310
|
+
consumableOperationsOf,
|
|
311
|
+
consumerOf,
|
|
312
|
+
contractViolationCodeOf,
|
|
313
|
+
createModelDrawer,
|
|
314
|
+
deepOverlay,
|
|
315
|
+
deniedCodeOf,
|
|
316
|
+
derivedReadsOf,
|
|
317
|
+
distinctSampleOf,
|
|
318
|
+
effectParameterLines,
|
|
319
|
+
elementFieldsOf,
|
|
320
|
+
emitScreenSpecContracts,
|
|
321
|
+
emitSpecContracts,
|
|
322
|
+
extractBehaviorParagraphs,
|
|
323
|
+
extractCandidateBody,
|
|
324
|
+
extractGenerationSection,
|
|
325
|
+
extractSpecContracts,
|
|
326
|
+
fieldNamesOf,
|
|
327
|
+
fillFeature,
|
|
328
|
+
fillHole,
|
|
329
|
+
forbiddenInBody,
|
|
330
|
+
generateFeature,
|
|
331
|
+
generateScreen,
|
|
332
|
+
generationGrammarCard,
|
|
333
|
+
hasSameFieldsAs,
|
|
334
|
+
holeSignatureLines,
|
|
335
|
+
instantiateBody,
|
|
336
|
+
intentForManifest,
|
|
337
|
+
intentOfSpec,
|
|
338
|
+
invalidSampleOf,
|
|
339
|
+
isAsyncHole,
|
|
340
|
+
isHttpOperation,
|
|
341
|
+
isKeyedOperation,
|
|
342
|
+
isLiteralValue,
|
|
343
|
+
isTodoBody,
|
|
344
|
+
isWriteOperation,
|
|
345
|
+
labelOf,
|
|
346
|
+
libraryEntryOf,
|
|
347
|
+
libraryFileNameOf,
|
|
348
|
+
loadHolesLibrary,
|
|
349
|
+
manifestEntryDrift,
|
|
350
|
+
manifestEntryOf,
|
|
351
|
+
migrationFileNameFor,
|
|
352
|
+
modelOf,
|
|
353
|
+
modelsOfModule,
|
|
354
|
+
motifErrorStatuses,
|
|
355
|
+
motifVocabulary,
|
|
356
|
+
neighboursOfShape,
|
|
357
|
+
normalizedTypeOf,
|
|
358
|
+
ownedTables,
|
|
359
|
+
parentKeyFieldOf,
|
|
360
|
+
parseBehavior,
|
|
361
|
+
parseExpectation,
|
|
362
|
+
parseFillFlags,
|
|
363
|
+
parseGenerationBlock,
|
|
364
|
+
parseLogicSections,
|
|
365
|
+
parseScreenBehavior,
|
|
366
|
+
parseScreenBlock,
|
|
367
|
+
parseUses,
|
|
368
|
+
pathParametersOf,
|
|
369
|
+
primaryViewOf,
|
|
370
|
+
provisionalMotifs,
|
|
371
|
+
readCollectionOf,
|
|
372
|
+
readIdOfInputSchema,
|
|
373
|
+
readManifestGeneration,
|
|
374
|
+
readYamlBlock,
|
|
375
|
+
recordLibraryEntry,
|
|
376
|
+
refusalsOf,
|
|
377
|
+
replaceHoleBody,
|
|
378
|
+
routeDescriptionOf,
|
|
379
|
+
sampleOf,
|
|
380
|
+
screenBodyDefault,
|
|
381
|
+
screenBodyPath,
|
|
382
|
+
screenCaseKey,
|
|
383
|
+
screenVocabularyOf,
|
|
384
|
+
scrubbedEnvironment,
|
|
385
|
+
serializeManifest,
|
|
386
|
+
shapeHashOf,
|
|
387
|
+
shapeOfHole,
|
|
388
|
+
signatureHashOf,
|
|
389
|
+
signatureTextOf,
|
|
390
|
+
specGeneratedStart,
|
|
391
|
+
splitTopLevelSections,
|
|
392
|
+
tableNameOf,
|
|
393
|
+
tableRefOf,
|
|
394
|
+
tablesOf,
|
|
395
|
+
validateGenerationBlock,
|
|
396
|
+
validateScreenBlock,
|
|
397
|
+
validationOf,
|
|
398
|
+
verifyGeneration,
|
|
399
|
+
viewBodiesOf,
|
|
400
|
+
vocabularyOf
|
|
401
|
+
};
|