@tmlmt/cooklang-parser 3.0.0-alpha.13 → 3.0.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +902 -121
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +269 -5
- package/dist/index.d.ts +269 -5
- package/dist/index.js +899 -121
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -155,6 +155,25 @@ declare class Recipe {
|
|
|
155
155
|
* @internal
|
|
156
156
|
*/
|
|
157
157
|
private _populateIngredientQuantities;
|
|
158
|
+
/** @internal */
|
|
159
|
+
private collectQuantityGroups;
|
|
160
|
+
/**
|
|
161
|
+
* Gets the raw (unprocessed) quantity groups for each ingredient, before
|
|
162
|
+
* any summation or equivalents simplification. This is useful for cross-recipe
|
|
163
|
+
* aggregation (e.g., in {@link ShoppingList}), where quantities from multiple
|
|
164
|
+
* recipes should be combined before processing.
|
|
165
|
+
*
|
|
166
|
+
* @param options - Options for filtering and choice selection (same as {@link getIngredientQuantities}).
|
|
167
|
+
* @returns Array of {@link RawQuantityGroup} objects, one per ingredient with quantities.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const rawGroups = recipe.getRawQuantityGroups();
|
|
172
|
+
* // Each group has: name, usedAsPrimary, flags, quantities[]
|
|
173
|
+
* // quantities are the raw QuantityWithExtendedUnit or FlatOrGroup entries
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
getRawQuantityGroups(options?: GetIngredientQuantitiesOptions): RawQuantityGroup[];
|
|
158
177
|
/**
|
|
159
178
|
* Gets ingredients with their quantities populated, optionally filtered by section/step
|
|
160
179
|
* and respecting user choices for alternatives.
|
|
@@ -623,6 +642,23 @@ interface GetIngredientQuantitiesOptions {
|
|
|
623
642
|
*/
|
|
624
643
|
choices?: RecipeChoices;
|
|
625
644
|
}
|
|
645
|
+
/**
|
|
646
|
+
* Represents a raw (unprocessed) group of quantities for a single ingredient.
|
|
647
|
+
* Returned by {@link Recipe.getRawQuantityGroups | getRawQuantityGroups()},
|
|
648
|
+
* these are the pre-addition quantities that can be fed directly into
|
|
649
|
+
* {@link addEquivalentsAndSimplify} for cross-recipe aggregation.
|
|
650
|
+
* @category Types
|
|
651
|
+
*/
|
|
652
|
+
interface RawQuantityGroup {
|
|
653
|
+
/** The name of the ingredient. */
|
|
654
|
+
name: string;
|
|
655
|
+
/** Whether this ingredient is used as a primary choice. */
|
|
656
|
+
usedAsPrimary?: boolean;
|
|
657
|
+
/** Flags on the ingredient (e.g., "hidden", "optional"). */
|
|
658
|
+
flags?: IngredientFlag[];
|
|
659
|
+
/** The raw, unprocessed quantities for this ingredient across all its mentions. */
|
|
660
|
+
quantities: (QuantityWithExtendedUnit | FlatOrGroup<QuantityWithExtendedUnit>)[];
|
|
661
|
+
}
|
|
626
662
|
/**
|
|
627
663
|
* Represents a cookware item in a recipe step.
|
|
628
664
|
* @category Types
|
|
@@ -657,6 +693,11 @@ interface Timer {
|
|
|
657
693
|
/** The unit of the timer. */
|
|
658
694
|
unit: string;
|
|
659
695
|
}
|
|
696
|
+
/**
|
|
697
|
+
* Represents a formatting attribute for a {@link TextItem}.
|
|
698
|
+
* @category Types
|
|
699
|
+
*/
|
|
700
|
+
type TextAttribute = "bold" | "italic" | "bold+italic" | "link" | "code";
|
|
660
701
|
/**
|
|
661
702
|
* Represents a text item in a recipe step.
|
|
662
703
|
* @category Types
|
|
@@ -666,6 +707,10 @@ interface TextItem {
|
|
|
666
707
|
type: "text";
|
|
667
708
|
/** The content of the text item. */
|
|
668
709
|
value: string;
|
|
710
|
+
/** The formatting attribute of the text item, if any. */
|
|
711
|
+
attribute?: TextAttribute;
|
|
712
|
+
/** The URL target, only present when attribute is "link". */
|
|
713
|
+
href?: string;
|
|
669
714
|
}
|
|
670
715
|
/**
|
|
671
716
|
* Represents an arbitrary scalable quantity in a recipe.
|
|
@@ -788,10 +833,7 @@ type AddedRecipeOptions = {
|
|
|
788
833
|
* Represents an ingredient that has been added to a shopping list
|
|
789
834
|
* @category Types
|
|
790
835
|
*/
|
|
791
|
-
type AddedIngredient = Pick<Ingredient, "name"
|
|
792
|
-
/** The total quantity of the ingredient after applying choices. */
|
|
793
|
-
quantityTotal?: QuantityWithPlainUnit | MaybeNestedGroup<QuantityWithPlainUnit>;
|
|
794
|
-
};
|
|
836
|
+
type AddedIngredient = Pick<Ingredient, "name" | "quantities">;
|
|
795
837
|
/**
|
|
796
838
|
* Represents an ingredient in a category.
|
|
797
839
|
* @category Types
|
|
@@ -851,6 +893,48 @@ type ProductOption = ProductOptionBase & {
|
|
|
851
893
|
/** The size(s) of the product. Multiple sizes allow equivalent expressions (e.g., "1%dozen" and "12") */
|
|
852
894
|
sizes: ProductSize[];
|
|
853
895
|
};
|
|
896
|
+
/**
|
|
897
|
+
* Represents a pantry item entry in the TOML file.
|
|
898
|
+
* Can be a simple quantity string (e.g. `"500%g"`) or an object with details.
|
|
899
|
+
* @category Types
|
|
900
|
+
*/
|
|
901
|
+
type PantryItemToml = string | {
|
|
902
|
+
quantity?: string;
|
|
903
|
+
bought?: string;
|
|
904
|
+
expire?: string;
|
|
905
|
+
low?: string;
|
|
906
|
+
};
|
|
907
|
+
/**
|
|
908
|
+
* Represents a parsed pantry item.
|
|
909
|
+
* @category Types
|
|
910
|
+
*/
|
|
911
|
+
interface PantryItem {
|
|
912
|
+
/** The name of the item. */
|
|
913
|
+
name: string;
|
|
914
|
+
/** The storage location (TOML section name, e.g. "freezer", "fridge"). */
|
|
915
|
+
location: string;
|
|
916
|
+
/** The quantity value of the item. */
|
|
917
|
+
quantity?: FixedValue | Range;
|
|
918
|
+
/** The unit of the item's quantity. */
|
|
919
|
+
unit?: string;
|
|
920
|
+
/** The date when the item was purchased. */
|
|
921
|
+
bought?: Date;
|
|
922
|
+
/** The expiration date of the item. */
|
|
923
|
+
expire?: Date;
|
|
924
|
+
/** The low stock threshold value. */
|
|
925
|
+
low?: FixedValue | Range;
|
|
926
|
+
/** The unit of the low stock threshold. */
|
|
927
|
+
lowUnit?: string;
|
|
928
|
+
}
|
|
929
|
+
/**
|
|
930
|
+
* Options for configuring a {@link Pantry}.
|
|
931
|
+
* @category Types
|
|
932
|
+
*/
|
|
933
|
+
interface PantryOptions {
|
|
934
|
+
/** Date format pattern for parsing date strings (e.g. `"DD.MM.YYYY"`, `"MM/DD/YYYY"`, `"YYYY-MM-DD"`).
|
|
935
|
+
* If not provided, dates are parsed with fuzzy detection defaulting to day-first when ambiguous. */
|
|
936
|
+
dateFormat?: string;
|
|
937
|
+
}
|
|
854
938
|
/**
|
|
855
939
|
* Represents a product selection in a {@link ShoppingCart}
|
|
856
940
|
* @category Types
|
|
@@ -1110,6 +1194,127 @@ declare class CategoryConfig {
|
|
|
1110
1194
|
parse(config: string): void;
|
|
1111
1195
|
}
|
|
1112
1196
|
|
|
1197
|
+
/**
|
|
1198
|
+
* Pantry Inventory Manager: parses and queries a pantry inventory file.
|
|
1199
|
+
*
|
|
1200
|
+
* ## Usage
|
|
1201
|
+
*
|
|
1202
|
+
* Create a new Pantry instance with optional TOML content and options
|
|
1203
|
+
* (see {@link Pantry."constructor" | constructor}), then query items
|
|
1204
|
+
* using {@link Pantry.getDepletedItems | getDepletedItems()},
|
|
1205
|
+
* {@link Pantry.getExpiredItems | getExpiredItems()},
|
|
1206
|
+
* {@link Pantry.isLow | isLow()}, or {@link Pantry.isExpired | isExpired()}.
|
|
1207
|
+
*
|
|
1208
|
+
* A Pantry can also be attached to a {@link ShoppingList} via
|
|
1209
|
+
* {@link ShoppingList.addPantry | addPantry()} so that on-hand stock
|
|
1210
|
+
* is subtracted from recipe ingredient needs.
|
|
1211
|
+
*
|
|
1212
|
+
* @example
|
|
1213
|
+
* ```typescript
|
|
1214
|
+
* import { Pantry } from "@tmlmt/cooklang-parser";
|
|
1215
|
+
*
|
|
1216
|
+
* const pantryToml = `
|
|
1217
|
+
* [fridge]
|
|
1218
|
+
* milk = { expire = "10.05.2024", quantity = "1%L" }
|
|
1219
|
+
*
|
|
1220
|
+
* [freezer]
|
|
1221
|
+
* spinach = { quantity = "1%kg", low = "200%g" }
|
|
1222
|
+
* `;
|
|
1223
|
+
*
|
|
1224
|
+
* const pantry = new Pantry(pantryToml);
|
|
1225
|
+
* console.log(pantry.getExpiredItems());
|
|
1226
|
+
* console.log(pantry.isLow("spinach"));
|
|
1227
|
+
* ```
|
|
1228
|
+
*
|
|
1229
|
+
* @see [Pantry Configuration](https://cooklang.org/docs/spec/#pantry-configuration) section of the cooklang specs
|
|
1230
|
+
*
|
|
1231
|
+
* @category Classes
|
|
1232
|
+
*/
|
|
1233
|
+
declare class Pantry {
|
|
1234
|
+
/**
|
|
1235
|
+
* The parsed pantry items.
|
|
1236
|
+
*/
|
|
1237
|
+
items: PantryItem[];
|
|
1238
|
+
/**
|
|
1239
|
+
* Options for date parsing and other configuration.
|
|
1240
|
+
*/
|
|
1241
|
+
private options;
|
|
1242
|
+
/**
|
|
1243
|
+
* Optional category configuration for alias-based lookups.
|
|
1244
|
+
*/
|
|
1245
|
+
private categoryConfig?;
|
|
1246
|
+
/**
|
|
1247
|
+
* Creates a new Pantry instance.
|
|
1248
|
+
* @param tomlContent - Optional TOML content to parse.
|
|
1249
|
+
* @param options - Optional configuration options.
|
|
1250
|
+
*/
|
|
1251
|
+
constructor(tomlContent?: string, options?: PantryOptions);
|
|
1252
|
+
/**
|
|
1253
|
+
* Parses a TOML string into pantry items.
|
|
1254
|
+
* @param tomlContent - The TOML string to parse.
|
|
1255
|
+
* @returns The parsed list of pantry items.
|
|
1256
|
+
*/
|
|
1257
|
+
parse(tomlContent: string): PantryItem[];
|
|
1258
|
+
/**
|
|
1259
|
+
* Parses a single pantry item from its TOML representation.
|
|
1260
|
+
*/
|
|
1261
|
+
private parseItem;
|
|
1262
|
+
/**
|
|
1263
|
+
* Parses a date string using the configured format or fuzzy detection.
|
|
1264
|
+
*/
|
|
1265
|
+
private parseDate;
|
|
1266
|
+
/**
|
|
1267
|
+
* Sets a category configuration for alias-based item lookups.
|
|
1268
|
+
* @param config - The category configuration to use.
|
|
1269
|
+
*/
|
|
1270
|
+
setCategoryConfig(config: CategoryConfig): void;
|
|
1271
|
+
/**
|
|
1272
|
+
* Finds a pantry item by name, using exact match first, then alias lookup
|
|
1273
|
+
* via the stored CategoryConfig.
|
|
1274
|
+
* @param name - The name to search for.
|
|
1275
|
+
* @returns The matching pantry item, or undefined if not found.
|
|
1276
|
+
*/
|
|
1277
|
+
findItem(name: string): PantryItem | undefined;
|
|
1278
|
+
/**
|
|
1279
|
+
* Gets the numeric value of a pantry item's quantity, optionally converted to base units.
|
|
1280
|
+
* Returns undefined if the quantity has a text value or is not set.
|
|
1281
|
+
*/
|
|
1282
|
+
private getItemNumericValue;
|
|
1283
|
+
/**
|
|
1284
|
+
* Returns all items that are depleted (quantity = 0) or below their low threshold.
|
|
1285
|
+
* @returns An array of depleted pantry items.
|
|
1286
|
+
*/
|
|
1287
|
+
getDepletedItems(): PantryItem[];
|
|
1288
|
+
/**
|
|
1289
|
+
* Returns all items whose expiration date is within `nbDays` days from today
|
|
1290
|
+
* (or already passed).
|
|
1291
|
+
* @param nbDays - Number of days ahead to check. Defaults to 0 (already expired).
|
|
1292
|
+
* @returns An array of expired pantry items.
|
|
1293
|
+
*/
|
|
1294
|
+
getExpiredItems(nbDays?: number): PantryItem[];
|
|
1295
|
+
/**
|
|
1296
|
+
* Checks if a specific item is low (quantity = 0 or below `low` threshold).
|
|
1297
|
+
* @param itemName - The name of the item to check (supports aliases if CategoryConfig is set).
|
|
1298
|
+
* @returns true if the item is low, false otherwise. Returns false if item not found.
|
|
1299
|
+
*/
|
|
1300
|
+
isLow(itemName: string): boolean;
|
|
1301
|
+
/**
|
|
1302
|
+
* Checks if a specific item is expired or expires within `nbDays` days.
|
|
1303
|
+
* @param itemName - The name of the item to check (supports aliases if CategoryConfig is set).
|
|
1304
|
+
* @param nbDays - Number of days ahead to check. Defaults to 0.
|
|
1305
|
+
* @returns true if the item is expired, false otherwise. Returns false if item not found.
|
|
1306
|
+
*/
|
|
1307
|
+
isExpired(itemName: string, nbDays?: number): boolean;
|
|
1308
|
+
/**
|
|
1309
|
+
* Internal: checks if a pantry item is low.
|
|
1310
|
+
*/
|
|
1311
|
+
private isItemLow;
|
|
1312
|
+
/**
|
|
1313
|
+
* Internal: checks if a pantry item is expired.
|
|
1314
|
+
*/
|
|
1315
|
+
private isItemExpired;
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1113
1318
|
/**
|
|
1114
1319
|
* Product Catalog Manager: used in conjunction with {@link ShoppingCart}
|
|
1115
1320
|
*
|
|
@@ -1209,12 +1414,50 @@ declare class ShoppingList {
|
|
|
1209
1414
|
* The categorized ingredients in the shopping list.
|
|
1210
1415
|
*/
|
|
1211
1416
|
categories?: CategorizedIngredients;
|
|
1417
|
+
/**
|
|
1418
|
+
* The unit system to use for quantity simplification.
|
|
1419
|
+
* When set, overrides per-recipe unit systems.
|
|
1420
|
+
*/
|
|
1421
|
+
unitSystem?: SpecificUnitSystem;
|
|
1422
|
+
/**
|
|
1423
|
+
* Per-ingredient equivalence ratio maps for recomputing equivalents
|
|
1424
|
+
* after pantry subtraction. Keyed by ingredient name.
|
|
1425
|
+
* @internal
|
|
1426
|
+
*/
|
|
1427
|
+
private equivalenceRatios;
|
|
1428
|
+
/**
|
|
1429
|
+
* The original pantry (never mutated by recipe calculations).
|
|
1430
|
+
*/
|
|
1431
|
+
pantry?: Pantry;
|
|
1432
|
+
/**
|
|
1433
|
+
* The pantry with quantities updated after subtracting recipe needs.
|
|
1434
|
+
* Recomputed on every {@link ShoppingList.calculateIngredients | calculateIngredients()} call.
|
|
1435
|
+
*/
|
|
1436
|
+
private resultingPantry?;
|
|
1212
1437
|
/**
|
|
1213
1438
|
* Creates a new ShoppingList instance
|
|
1214
1439
|
* @param categoryConfigStr - The category configuration to parse.
|
|
1215
1440
|
*/
|
|
1216
1441
|
constructor(categoryConfigStr?: string | CategoryConfig);
|
|
1217
1442
|
private calculateIngredients;
|
|
1443
|
+
/**
|
|
1444
|
+
* Subtracts pantry item quantities from calculated ingredient quantities
|
|
1445
|
+
* and updates the resultingPantry to reflect consumed stock.
|
|
1446
|
+
*/
|
|
1447
|
+
private applyPantrySubtraction;
|
|
1448
|
+
/**
|
|
1449
|
+
* Builds a ratio map from equivalence lists.
|
|
1450
|
+
* For each equivalence list, stores ratio = equiv_value / primary_value
|
|
1451
|
+
* for every pair of units, so equivalents can be recomputed after
|
|
1452
|
+
* pantry subtraction modifies primary quantities.
|
|
1453
|
+
*/
|
|
1454
|
+
private static buildEquivalenceRatioMap;
|
|
1455
|
+
/**
|
|
1456
|
+
* Recomputes equivalent quantities from current primary values and stored ratios.
|
|
1457
|
+
* For each equivalent unit in equivUnits, new_value = Σ (primary_value × ratio[equivUnit][primaryUnit]).
|
|
1458
|
+
* Returns undefined if all equivalents compute to zero.
|
|
1459
|
+
*/
|
|
1460
|
+
private static recomputeEquivalents;
|
|
1218
1461
|
/**
|
|
1219
1462
|
* Adds a recipe to the shopping list, then automatically
|
|
1220
1463
|
* recalculates the quantities and recategorize the ingredients.
|
|
@@ -1236,9 +1479,24 @@ declare class ShoppingList {
|
|
|
1236
1479
|
* @param index - The index of the recipe to remove.
|
|
1237
1480
|
*/
|
|
1238
1481
|
removeRecipe(index: number): void;
|
|
1482
|
+
/**
|
|
1483
|
+
* Adds a pantry to the shopping list. On-hand pantry quantities will be
|
|
1484
|
+
* subtracted from recipe ingredient needs on each recalculation.
|
|
1485
|
+
* @param pantry - A Pantry instance or a TOML string to parse.
|
|
1486
|
+
* @param options - Options for pantry parsing (only used when providing a TOML string).
|
|
1487
|
+
*/
|
|
1488
|
+
addPantry(pantry: Pantry | string, options?: PantryOptions): void;
|
|
1489
|
+
/**
|
|
1490
|
+
* Returns the resulting pantry with quantities updated to reflect
|
|
1491
|
+
* what was consumed by the shopping list's recipes.
|
|
1492
|
+
* Returns undefined if no pantry was added.
|
|
1493
|
+
* @returns The resulting Pantry, or undefined.
|
|
1494
|
+
*/
|
|
1495
|
+
getPantry(): Pantry | undefined;
|
|
1239
1496
|
/**
|
|
1240
1497
|
* Sets the category configuration for the shopping list
|
|
1241
1498
|
* and automatically categorize current ingredients from the list.
|
|
1499
|
+
* Also propagates the configuration to the pantry if one is set.
|
|
1242
1500
|
* @param config - The category configuration to parse.
|
|
1243
1501
|
*/
|
|
1244
1502
|
setCategoryConfig(config: string | CategoryConfig): void;
|
|
@@ -1653,5 +1911,11 @@ declare class NoProductCatalogForCartError extends Error {
|
|
|
1653
1911
|
declare class NoShoppingListForCartError extends Error {
|
|
1654
1912
|
constructor();
|
|
1655
1913
|
}
|
|
1914
|
+
declare class NoTabAsIndentError extends Error {
|
|
1915
|
+
constructor();
|
|
1916
|
+
}
|
|
1917
|
+
declare class BadIndentationError extends Error {
|
|
1918
|
+
constructor();
|
|
1919
|
+
}
|
|
1656
1920
|
|
|
1657
|
-
export { type AddedIngredient, type AddedRecipe, type AddedRecipeOptions, type AlternativeIngredientRef, type AndGroup, type ArbitraryScalable, type ArbitraryScalableItem, type CartContent, type CartMatch, type CartMisMatch, type CategorizedIngredients, type Category, CategoryConfig, type CategoryIngredient, type Cookware, type CookwareFlag, type CookwareItem, type DecimalValue, type FixedNumericValue, type FixedValue, type FlatAndGroup, type FlatGroup, type FlatOrGroup, type FractionValue, type GetIngredientQuantitiesOptions, type Group, type Ingredient, type IngredientAlternative, type IngredientExtras, type IngredientFlag, type IngredientItem, type IngredientQuantityAndGroup, type IngredientQuantityGroup, type MaybeNestedAndGroup, type MaybeNestedGroup, type MaybeNestedOrGroup, type MaybeScalableQuantity, type Metadata, type MetadataObject, type MetadataSource, type MetadataTime, type MetadataValue, NoProductCatalogForCartError, type NoProductMatchErrorCode, NoShoppingListForCartError, type Note, type NoteItem, type OrGroup, ProductCatalog, type ProductMatch, type ProductMisMatch, type ProductOption, type ProductOptionBase, type ProductOptionCore, type ProductSelection, type ProductSize, type QuantityBase, type QuantityWithExtendedUnit, type QuantityWithPlainUnit, type QuantityWithUnitDef, type QuantityWithUnitLike, type Range, Recipe, type RecipeAlternatives, type RecipeChoices, type RecipeWithFactor, type RecipeWithServings, Section, ShoppingCart, type ShoppingCartOptions, type ShoppingCartSummary, ShoppingList, type SpecificUnitSystem, type Step, type StepItem, type TextItem, type TextValue, type Timer, type TimerItem, type ToBaseBySystem, type Unit, type UnitDefinition, type UnitDefinitionLike, type UnitSystem, type UnitType, convertQuantityToSystem, formatExtendedQuantity, formatItemQuantity, formatNumericValue, formatQuantity, formatQuantityWithUnit, formatSingleValue, formatUnit, hasAlternatives, isAlternativeSelected, isAndGroup, isGroupedItem, isSimpleGroup, renderFractionAsVulgar };
|
|
1921
|
+
export { type AddedIngredient, type AddedRecipe, type AddedRecipeOptions, type AlternativeIngredientRef, type AndGroup, type ArbitraryScalable, type ArbitraryScalableItem, BadIndentationError, type CartContent, type CartMatch, type CartMisMatch, type CategorizedIngredients, type Category, CategoryConfig, type CategoryIngredient, type Cookware, type CookwareFlag, type CookwareItem, type DecimalValue, type FixedNumericValue, type FixedValue, type FlatAndGroup, type FlatGroup, type FlatOrGroup, type FractionValue, type GetIngredientQuantitiesOptions, type Group, type Ingredient, type IngredientAlternative, type IngredientAlternativeBase, type IngredientExtras, type IngredientFlag, type IngredientItem, type IngredientQuantityAndGroup, type IngredientQuantityGroup, type MaybeNestedAndGroup, type MaybeNestedGroup, type MaybeNestedOrGroup, type MaybeScalableQuantity, type Metadata, type MetadataObject, type MetadataSource, type MetadataTime, type MetadataValue, NoProductCatalogForCartError, type NoProductMatchErrorCode, NoShoppingListForCartError, NoTabAsIndentError, type Note, type NoteItem, type OrGroup, Pantry, type PantryItem, type PantryItemToml, type PantryOptions, ProductCatalog, type ProductMatch, type ProductMisMatch, type ProductOption, type ProductOptionBase, type ProductOptionCore, type ProductSelection, type ProductSize, type QuantityBase, type QuantityWithExtendedUnit, type QuantityWithPlainUnit, type QuantityWithUnitDef, type QuantityWithUnitLike, type Range, type RawQuantityGroup, Recipe, type RecipeAlternatives, type RecipeChoices, type RecipeWithFactor, type RecipeWithServings, Section, ShoppingCart, type ShoppingCartOptions, type ShoppingCartSummary, ShoppingList, type SpecificUnitSystem, type Step, type StepItem, type TextAttribute, type TextItem, type TextValue, type Timer, type TimerItem, type ToBaseBySystem, type Unit, type UnitDefinition, type UnitDefinitionLike, type UnitFractionConfig, type UnitSystem, type UnitType, type WithOptionalQuantity, convertQuantityToSystem, formatExtendedQuantity, formatItemQuantity, formatNumericValue, formatQuantity, formatQuantityWithUnit, formatSingleValue, formatUnit, hasAlternatives, isAlternativeSelected, isAndGroup, isGroupedItem, isSimpleGroup, renderFractionAsVulgar };
|