soustack 0.3.0 → 0.4.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/README.md +44 -27
- package/dist/cli/index.js +5225 -992
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.mts +163 -91
- package/dist/index.d.ts +163 -91
- package/dist/index.js +5077 -1007
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5076 -1007
- package/dist/index.mjs.map +1 -1
- package/dist/{scrape.d.mts → scrape/index.d.mts} +88 -74
- package/dist/{scrape.d.ts → scrape/index.d.ts} +88 -74
- package/dist/{scrape.js → scrape/index.js} +255 -124
- package/dist/scrape/index.js.map +1 -0
- package/dist/{scrape.mjs → scrape/index.mjs} +255 -124
- package/dist/scrape/index.mjs.map +1 -0
- package/package.json +21 -9
- package/spec/.sync-meta.json +149 -0
- package/spec/SOUSTACK_SPEC_VERSION +1 -0
- package/spec/defs/common.schema.json +46 -0
- package/spec/defs/duration.schema.json +33 -0
- package/spec/defs/entities.schema.json +111 -0
- package/spec/defs/ingredientQuantified.schema.json +9 -0
- package/spec/defs/quantity.schema.json +16 -0
- package/spec/defs/scalingRule.schema.json +127 -0
- package/spec/defs/temperature.schema.json +63 -0
- package/spec/fixtures/content/illustrated-step.valid.json +24 -0
- package/spec/fixtures/invalid/equipment-unknown-reference.invalid.json +38 -0
- package/spec/fixtures/invalid/mise-en-place-unknown-equipment.invalid.json +37 -0
- package/spec/fixtures/invalid/mise-en-place-unknown-input.invalid.json +41 -0
- package/spec/fixtures/invalid/storage-leftovers-missing-method.invalid.json +31 -0
- package/spec/fixtures/invalid/storage-leftovers-wrong-type.invalid.json +23 -0
- package/spec/fixtures/level/base-full.valid.json +162 -0
- package/spec/fixtures/level/base-missing-yield.invalid.json +12 -0
- package/spec/fixtures/level/lite-min.valid.json +14 -0
- package/spec/fixtures/profile/profile-base.valid.json +20 -0
- package/spec/fixtures/profile/profile-equipped.valid.json +28 -0
- package/spec/fixtures/profile/profile-illustrated.valid.json +28 -0
- package/spec/fixtures/profile/profile-lite.valid.json +13 -0
- package/spec/fixtures/profile/profile-prepped.valid.json +31 -0
- package/spec/fixtures/profile/profile-scalable-missing-scaling.invalid.json +29 -0
- package/spec/fixtures/profile/profile-scalable.valid.json +49 -0
- package/spec/fixtures/profile/profile-timed-missing-structured.invalid.json +30 -0
- package/spec/fixtures/scaling/bakers-percent-missing-ref.invalid.json +41 -0
- package/spec/fixtures/scaling/bakers-percent.valid.json +51 -0
- package/spec/fixtures/scaling/discrete-range.invalid.json +36 -0
- package/spec/fixtures/scaling/missing-quantified.invalid.json +40 -0
- package/spec/fixtures/scaling/reject-bakersPercentage.invalid.json +50 -0
- package/spec/fixtures/stacks/compute-missing-timed.invalid.json +32 -0
- package/spec/fixtures/stacks/dietary-no-signal.invalid.json +16 -0
- package/spec/fixtures/stacks/illustrated-empty.invalid.json +13 -0
- package/spec/fixtures/stacks/quantified-string.invalid.json +22 -0
- package/spec/fixtures/stacks/referenced-missing-input.invalid.json +32 -0
- package/spec/fixtures/stacks/storage-min.valid.json +20 -0
- package/spec/fixtures/stacks/storage-no-duration.invalid.json +16 -0
- package/spec/fixtures/stacks/timed-implies-structured.valid.json +50 -0
- package/spec/fixtures/stacks/timed-range.invalid.json +33 -0
- package/spec/fixtures/valid/equipment-scaling-rules.valid.json +76 -0
- package/spec/fixtures/valid/equipment-strings.valid.json +31 -0
- package/spec/fixtures/valid/equipment-structured-uses.valid.json +47 -0
- package/spec/fixtures/valid/mise-en-place-basic.valid.json +31 -0
- package/spec/fixtures/valid/mise-en-place-referenced-equipment.valid.json +51 -0
- package/spec/fixtures/valid/prep-ingredient-strings.valid.json +48 -0
- package/spec/fixtures/valid/prep-ingredient-structured.valid.json +45 -0
- package/spec/fixtures/valid/profile-equipped.valid.json +29 -0
- package/spec/fixtures/valid/profile-prepped.valid.json +32 -0
- package/spec/fixtures/valid/quantified-nested-ingredient-sections.valid.json +61 -0
- package/spec/fixtures/valid/referenced-scaling.valid.json +67 -0
- package/spec/fixtures/valid/storage-leftovers-simple.valid.json +27 -0
- package/spec/fixtures/valid/storage-leftovers-structured.valid.json +43 -0
- package/spec/fixtures/valid/structured-nested-step-sections.valid.json +84 -0
- package/spec/schemas/stacks-registry.schema.json +108 -0
- package/spec/soustack.schema.json +2379 -0
- package/spec/stacks/compute.schema.json +7 -0
- package/spec/stacks/compute@1.md +22 -0
- package/spec/stacks/dietary.schema.json +45 -0
- package/spec/stacks/dietary@1.md +24 -0
- package/spec/stacks/equipment.schema.json +98 -0
- package/spec/stacks/equipment@1.md +244 -0
- package/spec/stacks/illustrated.schema.json +54 -0
- package/spec/stacks/illustrated@1.md +24 -0
- package/spec/stacks/prep.schema.json +76 -0
- package/spec/stacks/prep@1.md +276 -0
- package/spec/stacks/quantified.schema.json +74 -0
- package/spec/stacks/quantified@1.md +24 -0
- package/spec/stacks/referenced.schema.json +96 -0
- package/spec/stacks/referenced@1.md +23 -0
- package/spec/stacks/registry.json +112 -0
- package/spec/stacks/scaling.schema.json +99 -0
- package/spec/stacks/scaling@1.md +238 -0
- package/spec/stacks/storage.schema.json +132 -0
- package/spec/stacks/storage@1.md +256 -0
- package/spec/stacks/structured.schema.json +48 -0
- package/spec/stacks/structured@1.md +24 -0
- package/spec/stacks/substitutions.schema.json +43 -0
- package/spec/stacks/substitutions@1.md +24 -0
- package/spec/stacks/techniques.schema.json +28 -0
- package/spec/stacks/techniques@1.md +23 -0
- package/spec/stacks/timed.schema.json +60 -0
- package/spec/stacks/timed@1.md +23 -0
- package/src/defs/common.schema.json +46 -0
- package/src/defs/duration.schema.json +33 -0
- package/src/defs/entities.schema.json +111 -0
- package/src/defs/ingredientQuantified.schema.json +9 -0
- package/src/defs/quantity.schema.json +16 -0
- package/src/defs/scalingRule.schema.json +127 -0
- package/src/defs/temperature.schema.json +63 -0
- package/src/profiles/base.schema.json +2 -2
- package/src/profiles/equipped.schema.json +10 -0
- package/src/profiles/illustrated.schema.json +4 -4
- package/src/profiles/lite.schema.json +10 -0
- package/src/profiles/prepped.schema.json +10 -0
- package/src/profiles/scalable.schema.json +6 -6
- package/src/profiles/timed.schema.json +10 -0
- package/src/schema.json +2271 -248
- package/src/schemas/stacks-registry.schema.json +108 -0
- package/src/soustack.schema.json +2271 -248
- package/src/stacks/compute.schema.json +7 -0
- package/src/stacks/compute@1.md +22 -0
- package/src/stacks/dietary.schema.json +45 -0
- package/src/stacks/dietary@1.md +24 -0
- package/src/stacks/equipment.schema.json +98 -0
- package/src/stacks/equipment@1.md +244 -0
- package/src/stacks/illustrated.schema.json +54 -0
- package/src/stacks/illustrated@1.md +24 -0
- package/src/stacks/prep.schema.json +76 -0
- package/src/stacks/prep@1.md +276 -0
- package/src/stacks/quantified.schema.json +74 -0
- package/src/stacks/quantified@1.md +24 -0
- package/src/stacks/referenced.schema.json +96 -0
- package/src/stacks/referenced@1.md +23 -0
- package/src/stacks/registry.json +112 -0
- package/src/stacks/scaling.schema.json +99 -0
- package/src/stacks/scaling@1.md +238 -0
- package/src/stacks/storage.schema.json +132 -0
- package/src/stacks/storage@1.md +256 -0
- package/src/stacks/structured.schema.json +48 -0
- package/src/stacks/structured@1.md +24 -0
- package/src/stacks/substitutions.schema.json +43 -0
- package/src/stacks/substitutions@1.md +24 -0
- package/src/stacks/techniques.schema.json +28 -0
- package/src/stacks/techniques@1.md +23 -0
- package/src/stacks/timed.schema.json +60 -0
- package/src/stacks/timed@1.md +23 -0
- package/dist/scrape.js.map +0 -1
- package/dist/scrape.mjs.map +0 -1
- package/src/profiles/cookable.schema.json +0 -18
- package/src/profiles/quantified.schema.json +0 -43
- package/src/profiles/schedulable.schema.json +0 -43
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://soustack.spec/defs/entities.schema.json",
|
|
4
|
+
"title": "Soustack entity bases",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"$defs": {
|
|
7
|
+
"IngredientBase": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"id": { "type": "string" },
|
|
11
|
+
"name": { "type": "string" },
|
|
12
|
+
"quantity": { "$ref": "./quantity.schema.json" },
|
|
13
|
+
"temperature": { "$ref": "./temperature.schema.json" },
|
|
14
|
+
"notes": { "type": "string" },
|
|
15
|
+
"prep": {
|
|
16
|
+
"oneOf": [
|
|
17
|
+
{ "type": "string", "minLength": 1 },
|
|
18
|
+
{
|
|
19
|
+
"type": "array",
|
|
20
|
+
"minItems": 1,
|
|
21
|
+
"items": {
|
|
22
|
+
"anyOf": [
|
|
23
|
+
{ "type": "string", "minLength": 1 },
|
|
24
|
+
{ "$ref": "../stacks/prep.schema.json#/$defs/prepItem" }
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"metadata": { "type": "object", "additionalProperties": true },
|
|
31
|
+
"scaling": { "$ref": "./scalingRule.schema.json" }
|
|
32
|
+
},
|
|
33
|
+
"required": ["name"],
|
|
34
|
+
"additionalProperties": false,
|
|
35
|
+
"patternProperties": {
|
|
36
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"StepBase": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"properties": {
|
|
42
|
+
"id": { "type": "string" },
|
|
43
|
+
"text": { "type": "string" },
|
|
44
|
+
"dependsOn": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": { "type": "string" },
|
|
47
|
+
"uniqueItems": true
|
|
48
|
+
},
|
|
49
|
+
"inputs": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": { "type": "string" },
|
|
52
|
+
"uniqueItems": true
|
|
53
|
+
},
|
|
54
|
+
"techniqueIds": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"items": { "type": "string" },
|
|
57
|
+
"uniqueItems": true
|
|
58
|
+
},
|
|
59
|
+
"usesEquipment": {
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"pattern": "^[A-Za-z0-9._-]+$"
|
|
64
|
+
},
|
|
65
|
+
"uniqueItems": true
|
|
66
|
+
},
|
|
67
|
+
"temperature": { "$ref": "./temperature.schema.json" },
|
|
68
|
+
"timing": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"properties": {
|
|
71
|
+
"activity": { "type": "string", "enum": ["active", "passive"] },
|
|
72
|
+
"duration": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"oneOf": [
|
|
75
|
+
{ "$ref": "./duration.schema.json#/properties/DurationMinutes" },
|
|
76
|
+
{
|
|
77
|
+
"type": "object",
|
|
78
|
+
"properties": {
|
|
79
|
+
"minMinutes": { "type": "number", "exclusiveMinimum": 0 },
|
|
80
|
+
"maxMinutes": { "type": "number", "exclusiveMinimum": 0 }
|
|
81
|
+
},
|
|
82
|
+
"required": ["minMinutes", "maxMinutes"],
|
|
83
|
+
"additionalProperties": false
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"completionCue": { "type": "string" },
|
|
88
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
89
|
+
},
|
|
90
|
+
"anyOf": [
|
|
91
|
+
{ "required": ["duration"] },
|
|
92
|
+
{ "required": ["completionCue"] }
|
|
93
|
+
],
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"patternProperties": {
|
|
96
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"images": { "type": "array", "items": { "$ref": "./common.schema.json#/properties/uri" } },
|
|
100
|
+
"videos": { "type": "array", "items": { "$ref": "./common.schema.json#/properties/uri" } },
|
|
101
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
102
|
+
},
|
|
103
|
+
"required": ["text"],
|
|
104
|
+
"additionalProperties": false,
|
|
105
|
+
"patternProperties": {
|
|
106
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"additionalProperties": false
|
|
111
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://soustack.spec/defs/ingredientQuantified.schema.json",
|
|
4
|
+
"title": "Quantified Ingredient",
|
|
5
|
+
"allOf": [
|
|
6
|
+
{ "$ref": "./entities.schema.json#/$defs/IngredientBase" },
|
|
7
|
+
{ "required": ["id", "quantity"] }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://soustack.spec/defs/quantity.schema.json",
|
|
4
|
+
"title": "Quantity",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"amount": { "type": "number" },
|
|
8
|
+
"unit": { "type": "string", "minLength": 1 },
|
|
9
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
10
|
+
},
|
|
11
|
+
"required": ["amount", "unit"],
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"patternProperties": {
|
|
14
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://soustack.spec/defs/scalingRule.schema.json",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"title": "Soustack ScalingRule",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["mode"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"mode": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"enum": ["linear", "fixed", "discrete", "toTaste", "bakersPercent"]
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
"step": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"exclusiveMinimum": 0
|
|
17
|
+
},
|
|
18
|
+
"rounding": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"enum": ["nearest", "ceil", "floor"]
|
|
21
|
+
},
|
|
22
|
+
"min": {
|
|
23
|
+
"type": "number"
|
|
24
|
+
},
|
|
25
|
+
"max": {
|
|
26
|
+
"type": "number"
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
"percent": {
|
|
30
|
+
"type": "number",
|
|
31
|
+
"exclusiveMinimum": 0
|
|
32
|
+
},
|
|
33
|
+
"of": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"allOf": [
|
|
41
|
+
{
|
|
42
|
+
"if": {
|
|
43
|
+
"properties": { "mode": { "const": "linear" } },
|
|
44
|
+
"required": ["mode"]
|
|
45
|
+
},
|
|
46
|
+
"then": {
|
|
47
|
+
"not": {
|
|
48
|
+
"anyOf": [
|
|
49
|
+
{ "required": ["step"] },
|
|
50
|
+
{ "required": ["rounding"] },
|
|
51
|
+
{ "required": ["min"] },
|
|
52
|
+
{ "required": ["max"] },
|
|
53
|
+
{ "required": ["percent"] },
|
|
54
|
+
{ "required": ["of"] }
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"if": {
|
|
61
|
+
"properties": { "mode": { "const": "fixed" } },
|
|
62
|
+
"required": ["mode"]
|
|
63
|
+
},
|
|
64
|
+
"then": {
|
|
65
|
+
"not": {
|
|
66
|
+
"anyOf": [
|
|
67
|
+
{ "required": ["step"] },
|
|
68
|
+
{ "required": ["rounding"] },
|
|
69
|
+
{ "required": ["min"] },
|
|
70
|
+
{ "required": ["max"] },
|
|
71
|
+
{ "required": ["percent"] },
|
|
72
|
+
{ "required": ["of"] }
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"if": {
|
|
79
|
+
"properties": { "mode": { "const": "toTaste" } },
|
|
80
|
+
"required": ["mode"]
|
|
81
|
+
},
|
|
82
|
+
"then": {
|
|
83
|
+
"not": {
|
|
84
|
+
"anyOf": [
|
|
85
|
+
{ "required": ["step"] },
|
|
86
|
+
{ "required": ["rounding"] },
|
|
87
|
+
{ "required": ["min"] },
|
|
88
|
+
{ "required": ["max"] },
|
|
89
|
+
{ "required": ["percent"] },
|
|
90
|
+
{ "required": ["of"] }
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"if": {
|
|
97
|
+
"properties": { "mode": { "const": "discrete" } },
|
|
98
|
+
"required": ["mode"]
|
|
99
|
+
},
|
|
100
|
+
"then": {
|
|
101
|
+
"not": {
|
|
102
|
+
"anyOf": [
|
|
103
|
+
{ "required": ["percent"] },
|
|
104
|
+
{ "required": ["of"] }
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"if": {
|
|
111
|
+
"properties": { "mode": { "const": "bakersPercent" } },
|
|
112
|
+
"required": ["mode"]
|
|
113
|
+
},
|
|
114
|
+
"then": {
|
|
115
|
+
"required": ["percent", "of"],
|
|
116
|
+
"not": {
|
|
117
|
+
"anyOf": [
|
|
118
|
+
{ "required": ["step"] },
|
|
119
|
+
{ "required": ["rounding"] },
|
|
120
|
+
{ "required": ["min"] },
|
|
121
|
+
{ "required": ["max"] }
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://soustack.spec/defs/temperature.schema.json",
|
|
4
|
+
"title": "Temperature",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"oneOf": [
|
|
7
|
+
{
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"target": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"enum": ["oven", "stovetop", "pan", "oil", "water", "grill", "broiler", "internal", "ambient", "surface"]
|
|
13
|
+
},
|
|
14
|
+
"level": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"enum": ["veryLow", "low", "medium", "mediumHigh", "high", "veryHigh"]
|
|
17
|
+
},
|
|
18
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
19
|
+
},
|
|
20
|
+
"required": ["target", "level"],
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"patternProperties": {
|
|
23
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "object",
|
|
28
|
+
"properties": {
|
|
29
|
+
"target": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"enum": ["oven", "stovetop", "pan", "oil", "water", "grill", "broiler", "internal", "ambient", "surface"]
|
|
32
|
+
},
|
|
33
|
+
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] },
|
|
34
|
+
"value": { "type": "number" },
|
|
35
|
+
"approximate": { "type": "boolean" },
|
|
36
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
37
|
+
},
|
|
38
|
+
"required": ["target", "unit", "value"],
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"patternProperties": {
|
|
41
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "object",
|
|
46
|
+
"properties": {
|
|
47
|
+
"target": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"enum": ["oven", "stovetop", "pan", "oil", "water", "grill", "broiler", "internal", "ambient", "surface"]
|
|
50
|
+
},
|
|
51
|
+
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] },
|
|
52
|
+
"minValue": { "type": "number" },
|
|
53
|
+
"maxValue": { "type": "number" },
|
|
54
|
+
"metadata": { "type": "object", "additionalProperties": true }
|
|
55
|
+
},
|
|
56
|
+
"required": ["target", "unit", "minValue", "maxValue"],
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"patternProperties": {
|
|
59
|
+
"^x-": { "$ref": "./common.schema.json#/properties/extensionLaneValue" }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "http://soustack.org/schema/v0.
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/base",
|
|
4
4
|
"title": "Soustack Base Profile Schema",
|
|
5
5
|
"description": "Wrapper schema that exposes the unmodified Soustack base schema.",
|
|
6
6
|
"allOf": [
|
|
7
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2" }
|
|
8
8
|
]
|
|
9
9
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/equipped",
|
|
4
|
+
"title": "Soustack Equipped Profile Schema",
|
|
5
|
+
"description": "Profile for recipes that declare required tools/equipment.",
|
|
6
|
+
"allOf": [
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2/profiles/base" }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "http://soustack.org/schema/v0.
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/illustrated",
|
|
4
4
|
"title": "Soustack Illustrated Profile Schema",
|
|
5
5
|
"description": "Extends the base schema to guarantee at least one illustrative image.",
|
|
6
6
|
"allOf": [
|
|
7
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2" },
|
|
8
8
|
{
|
|
9
9
|
"anyOf": [
|
|
10
10
|
{ "required": ["image"] },
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"definitions": {
|
|
28
28
|
"imageInstruction": {
|
|
29
29
|
"allOf": [
|
|
30
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
30
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/instruction" },
|
|
31
31
|
{ "required": ["image"] }
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
"instructionSubsectionWithImage": {
|
|
35
35
|
"allOf": [
|
|
36
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
36
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/instructionSubsection" },
|
|
37
37
|
{
|
|
38
38
|
"properties": {
|
|
39
39
|
"items": {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/lite",
|
|
4
|
+
"title": "Soustack Lite Profile Schema",
|
|
5
|
+
"description": "Wrapper schema that exposes the unmodified Soustack base schema.",
|
|
6
|
+
"allOf": [
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2" }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/prepped",
|
|
4
|
+
"title": "Soustack Prepped Profile Schema",
|
|
5
|
+
"description": "Profile for recipes that include prep guidance and/or mise en place tasks.",
|
|
6
|
+
"allOf": [
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2/profiles/base" }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "http://soustack.org/schema/v0.
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/scalable",
|
|
4
4
|
"title": "Soustack Scalable Profile Schema",
|
|
5
5
|
"description": "Extends the base schema to guarantee quantified ingredients plus a structured yield for deterministic scaling.",
|
|
6
6
|
"allOf": [
|
|
7
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2" },
|
|
8
8
|
{
|
|
9
9
|
"required": ["yield", "ingredients"],
|
|
10
10
|
"properties": {
|
|
11
11
|
"yield": {
|
|
12
12
|
"allOf": [
|
|
13
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
13
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/yield" },
|
|
14
14
|
{ "properties": { "amount": { "type": "number", "exclusiveMinimum": 0 } } }
|
|
15
15
|
]
|
|
16
16
|
},
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"definitions": {
|
|
31
31
|
"scalableIngredient": {
|
|
32
32
|
"allOf": [
|
|
33
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
33
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/ingredient" },
|
|
34
34
|
{ "required": ["item", "quantity"] },
|
|
35
35
|
{
|
|
36
36
|
"properties": {
|
|
37
37
|
"quantity": {
|
|
38
38
|
"allOf": [
|
|
39
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
39
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/quantity" },
|
|
40
40
|
{ "properties": { "amount": { "type": "number", "exclusiveMinimum": 0 } } }
|
|
41
41
|
]
|
|
42
42
|
}
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
"scalableIngredientSubsection": {
|
|
61
61
|
"allOf": [
|
|
62
|
-
{ "$ref": "http://soustack.org/schema/v0.
|
|
62
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2#/definitions/ingredientSubsection" },
|
|
63
63
|
{
|
|
64
64
|
"properties": {
|
|
65
65
|
"items": {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "http://soustack.org/schema/v0.0.2/profiles/timed",
|
|
4
|
+
"title": "Soustack Timed Profile Schema",
|
|
5
|
+
"description": "Extends the base schema to guarantee structured instructions with timing metadata.",
|
|
6
|
+
"allOf": [
|
|
7
|
+
{ "$ref": "http://soustack.org/schema/v0.0.2" }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
|