@minecraft/creator-tools 0.10.0 → 0.11.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/app/Carto.js +33 -6
- package/app/CartoApp.js +1 -0
- package/app/IGalleryItem.js +7 -0
- package/app/IProjectItemData.js +12 -4
- package/app/IProjectItemVariant.js +1 -0
- package/app/IProjectItemVariantSeed.js +4 -0
- package/app/Project.js +213 -809
- package/app/ProjectAutogeneration.js +28 -27
- package/app/ProjectExporter.js +15 -12
- package/app/ProjectItem.js +163 -32
- package/app/{ProjectItemManager.js → ProjectItemCreateManager.js} +153 -46
- package/app/ProjectItemInference.js +709 -0
- package/app/ProjectItemRelations.js +40 -30
- package/app/ProjectItemUtilities.js +118 -17
- package/app/ProjectItemVariant.js +1 -1
- package/app/ProjectItemVariantCreateManager.js +72 -0
- package/app/ProjectStandard.js +6 -6
- package/app/ProjectUtilities.js +59 -57
- package/cli/ClUtils.js +2 -1
- package/cli/TaskWorker.js +9 -1
- package/cli/index.js +190 -92
- package/core/Constants.js +2 -1
- package/core/Utilities.js +40 -4
- package/data/content/index.json +4 -0
- package/data/content/newitemjson/aggregate_feature.json +9 -0
- package/data/content/newitemjson/atmospherics.json +79 -0
- package/data/content/newitemjson/attachable.json +18 -0
- package/data/content/newitemjson/biome.json +13 -0
- package/data/content/newitemjson/block_behavior.json +13 -0
- package/data/content/newitemjson/block_catalog.json +6 -0
- package/data/content/newitemjson/block_culling.json +9 -0
- package/data/content/newitemjson/cave_carver_feature.json +9 -0
- package/data/content/newitemjson/color_grading.json +34 -0
- package/data/content/newitemjson/entity_behavior.json +19 -0
- package/data/content/newitemjson/entity_resources.json +27 -0
- package/data/content/newitemjson/feature_rule.json +16 -0
- package/data/content/newitemjson/geode_feature.json +28 -0
- package/data/content/newitemjson/index.json +33 -0
- package/data/content/newitemjson/item_behavior.json +17 -0
- package/data/content/newitemjson/jigsaw_processor_list.json +8 -0
- package/data/content/newitemjson/jigsaw_structure.json +14 -0
- package/data/content/newitemjson/jigsaw_structure_set.json +21 -0
- package/data/content/newitemjson/jigsaw_template_pool.json +8 -0
- package/data/content/newitemjson/lighting.json +44 -0
- package/data/content/newitemjson/loot_table.json +1 -0
- package/data/content/newitemjson/pbr.json +9 -0
- package/data/content/newitemjson/point_lights.json +47 -0
- package/data/content/newitemjson/recipe_shaped.json +9 -0
- package/data/content/newitemjson/recipe_shapeless.json +9 -0
- package/data/content/newitemjson/render_controller.json +10 -0
- package/data/content/newitemjson/shadows.json +4 -0
- package/data/content/newitemjson/spawn_rule.json +9 -0
- package/data/content/newitemjson/water.json +22 -0
- package/data/forms/biome/biome_definition.form.json +706 -491
- package/data/forms/biome/biome_description.form.json +10 -3
- package/data/forms/biome/biome_json_file.form.json +704 -488
- package/data/forms/biome/biome_replacement.form.json +19 -12
- package/data/forms/biome/index.json +1 -1
- package/data/forms/biome/minecraft_capped_surface.form.json +65 -24
- package/data/forms/biome/minecraft_climate.form.json +17 -16
- package/data/forms/biome/minecraft_creature_spawn_probability.form.json +2 -1
- package/data/forms/biome/minecraft_frozen_ocean_surface.form.json +98 -47
- package/data/forms/biome/minecraft_mesa_surface.form.json +144 -73
- package/data/forms/biome/minecraft_mountain_parameters.form.json +17 -9
- package/data/forms/biome/minecraft_multinoise_generation_rules.form.json +14 -13
- package/data/forms/biome/minecraft_overworld_generation_rules.form.json +22 -5
- package/data/forms/biome/minecraft_overworld_height.form.json +8 -7
- package/data/forms/biome/minecraft_replace_biomes.form.json +19 -11
- package/data/forms/biome/minecraft_surface_material_adjustments.form.json +88 -60
- package/data/forms/biome/minecraft_surface_parameters.form.json +98 -47
- package/data/forms/biome/minecraft_swamp_surface.form.json +98 -47
- package/data/forms/biome/minecraft_tags.form.json +3 -2
- package/data/forms/block/materialinstanceface.form.json +34 -0
- package/data/forms/block/minecraft_collision_box.form.json +42 -0
- package/data/forms/block/minecraft_destructible_by_explosion.form.json +74 -6
- package/data/forms/block/minecraft_destructible_by_mining.form.json +146 -28
- package/data/forms/block/minecraft_destruction_particles.form.json +7 -0
- package/data/forms/block/minecraft_display_name.form.json +6 -0
- package/data/forms/block/minecraft_flammable.form.json +56 -2
- package/data/forms/block/minecraft_friction.form.json +12 -0
- package/data/forms/block/minecraft_geometry.form.json +116 -0
- package/data/forms/block/minecraft_item_visual.form.json +1 -0
- package/data/forms/block/minecraft_liquid_detection.form.json +25 -0
- package/data/forms/block/minecraft_map_color.form.json +49 -6
- package/data/forms/block/minecraft_material_instances.form.json +185 -0
- package/data/forms/block/minecraft_replaceable.form.json +1 -0
- package/data/forms/block/minecraft_selection_box.form.json +42 -0
- package/data/forms/client_biome/client_biome_definition.form.json +153 -132
- package/data/forms/client_biome/client_biome_description.form.json +9 -2
- package/data/forms/client_biome/client_biome_json_file.form.json +160 -138
- package/data/forms/client_biome/foliage_color_map.form.json +2 -1
- package/data/forms/client_biome/grass_color_map.form.json +2 -1
- package/data/forms/client_biome/minecraft_ambient_sounds.form.json +1 -0
- package/data/forms/client_biome/minecraft_atmosphere_identifier.form.json +2 -1
- package/data/forms/client_biome/minecraft_biome_music.form.json +9 -7
- package/data/forms/client_biome/minecraft_color_grading_identifier.form.json +2 -1
- package/data/forms/client_biome/minecraft_dry_foliage_color.form.json +1 -0
- package/data/forms/client_biome/minecraft_fog_appearance.form.json +2 -1
- package/data/forms/client_biome/minecraft_foliage_appearance.form.json +2 -1
- package/data/forms/client_biome/minecraft_grass_appearance.form.json +2 -1
- package/data/forms/client_biome/minecraft_lighting_identifier.form.json +2 -1
- package/data/forms/client_biome/minecraft_sky_color.form.json +2 -1
- package/data/forms/client_biome/minecraft_water_appearance.form.json +2 -1
- package/data/forms/client_biome/minecraft_water_identifier.form.json +2 -1
- package/data/forms/client_block/block_culling.form.json +20 -11
- package/data/forms/client_item/index.json +1 -0
- package/data/forms/client_item/resource.form.json +33 -0
- package/data/forms/client_item/resource_animations.form.json +10 -0
- package/data/forms/client_item/resource_geometry.form.json +10 -0
- package/data/forms/client_item/resource_materials.form.json +9 -0
- package/data/forms/client_item/resource_textures.form.json +10 -0
- package/data/forms/clientbiome/index.json +1 -0
- package/data/forms/config/commands.form.json +2 -1
- package/data/forms/entity/entity_component_definitions.form.json +1860 -0
- package/data/forms/entity/entity_document.form.json +3748 -0
- package/data/forms/entity/filter_test.form.json +12 -11
- package/data/forms/entity/index.json +1 -1
- package/data/forms/entity/minecraft_addrider.form.json +1 -1
- package/data/forms/entity/minecraft_ageable.form.json +35 -0
- package/data/forms/entity/minecraft_ambient_sound_interval.form.json +24 -0
- package/data/forms/entity/minecraft_angry.form.json +1 -2
- package/data/forms/entity/minecraft_annotation_open_door.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_avoid_mob_type.form.json +85 -0
- package/data/forms/entity/minecraft_behavior_explore_outskirts.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_fire_at_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_float.form.json +16 -0
- package/data/forms/entity/minecraft_behavior_float_tempt.form.json +157 -6
- package/data/forms/entity/minecraft_behavior_float_wander.form.json +108 -6
- package/data/forms/entity/minecraft_behavior_follow_caravan.form.json +10 -10
- package/data/forms/entity/minecraft_behavior_follow_mob.form.json +369 -3
- package/data/forms/entity/minecraft_behavior_harvest_farm_block.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_hide.form.json +29 -0
- package/data/forms/entity/minecraft_behavior_hold_ground.form.json +24 -24
- package/data/forms/entity/minecraft_behavior_inspect_bookshelf.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_jump_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_look_at_player.form.json +10 -0
- package/data/forms/entity/minecraft_behavior_look_at_trading_player.form.json +14 -0
- package/data/forms/entity/minecraft_behavior_make_love.form.json +14 -0
- package/data/forms/entity/minecraft_behavior_melee_box_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_mingle.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_move_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_move_indoors.form.json +22 -0
- package/data/forms/entity/minecraft_behavior_nearest_attackable_target.form.json +33 -8
- package/data/forms/entity/minecraft_behavior_offer_flower.form.json +2 -12
- package/data/forms/entity/minecraft_behavior_panic.form.json +24 -6
- package/data/forms/entity/minecraft_behavior_pickup_items.form.json +18 -0
- package/data/forms/entity/minecraft_behavior_player_ride_tamed.form.json +17 -1
- package/data/forms/entity/minecraft_behavior_random_hover.form.json +22 -0
- package/data/forms/entity/minecraft_behavior_random_stroll.form.json +15 -0
- package/data/forms/entity/minecraft_behavior_ranged_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_receive_love.form.json +14 -0
- package/data/forms/entity/minecraft_behavior_share_items.form.json +24 -60
- package/data/forms/entity/minecraft_behavior_sleep.form.json +6 -0
- package/data/forms/entity/minecraft_behavior_summon_entity.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_take_flower.form.json +14 -0
- package/data/forms/entity/minecraft_behavior_tempt.form.json +40 -0
- package/data/forms/entity/minecraft_behavior_trade_interest.form.json +138 -0
- package/data/forms/entity/minecraft_behavior_trade_with_player.form.json +14 -0
- package/data/forms/entity/minecraft_behavior_work.form.json +6 -0
- package/data/forms/entity/minecraft_body_rotation_always_follows_head.form.json +14 -0
- package/data/forms/entity/minecraft_body_rotation_axis_aligned.form.json +8 -0
- package/data/forms/entity/minecraft_body_rotation_blocked.form.json +6 -0
- package/data/forms/entity/minecraft_boostable.form.json +9 -4
- package/data/forms/entity/minecraft_breathable.form.json +39 -0
- package/data/forms/entity/minecraft_breedable.form.json +45 -18
- package/data/forms/entity/minecraft_can_climb.form.json +6 -0
- package/data/forms/entity/minecraft_can_fly.form.json +6 -0
- package/data/forms/entity/minecraft_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_collision_box.form.json +49 -28
- package/data/forms/entity/minecraft_conditional_bandwidth_optimization.form.json +6 -0
- package/data/forms/entity/minecraft_damage_sensor.form.json +81 -23
- package/data/forms/entity/minecraft_despawn.form.json +8 -0
- package/data/forms/entity/minecraft_economy_trade_table.form.json +214 -0
- package/data/forms/entity/minecraft_entity_sensor.form.json +140 -20
- package/data/forms/entity/minecraft_equipment.form.json +24 -0
- package/data/forms/entity/minecraft_explode.form.json +110 -104
- package/data/forms/entity/minecraft_flying_speed.form.json +30 -0
- package/data/forms/entity/minecraft_follow_range.form.json +23 -0
- package/data/forms/entity/minecraft_hide.form.json +6 -0
- package/data/forms/entity/minecraft_home.form.json +57 -23
- package/data/forms/entity/minecraft_hurt_on_condition.form.json +47 -36
- package/data/forms/entity/minecraft_ignore_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_input_air_controlled.form.json +31 -3
- package/data/forms/entity/minecraft_interact.form.json +862 -248
- package/data/forms/entity/minecraft_inventory.form.json +9 -0
- package/data/forms/entity/minecraft_is_baby.form.json +38 -6
- package/data/forms/entity/minecraft_is_collidable.form.json +6 -0
- package/data/forms/entity/minecraft_is_hidden_when_invisible.form.json +6 -0
- package/data/forms/entity/minecraft_is_tamed.form.json +6 -0
- package/data/forms/entity/minecraft_jump_static.form.json +12 -0
- package/data/forms/entity/minecraft_knockback_resistance.form.json +14 -0
- package/data/forms/entity/minecraft_leashable.form.json +229 -214
- package/data/forms/entity/minecraft_leashable_to.form.json +244 -0
- package/data/forms/entity/minecraft_movement.form.json +34 -0
- package/data/forms/entity/minecraft_movement_basic.form.json +6 -0
- package/data/forms/entity/minecraft_movement_hover.form.json +6 -0
- package/data/forms/entity/minecraft_nameable.form.json +12 -0
- package/data/forms/entity/minecraft_navigation_float.form.json +28 -2
- package/data/forms/entity/minecraft_navigation_hover.form.json +11 -0
- package/data/forms/entity/minecraft_navigation_walk.form.json +11 -0
- package/data/forms/entity/minecraft_persistent.form.json +6 -0
- package/data/forms/entity/minecraft_physics.form.json +14 -0
- package/data/forms/entity/minecraft_preferred_path.form.json +350 -0
- package/data/forms/entity/minecraft_pushable.form.json +46 -0
- package/data/forms/entity/minecraft_remove_in_peaceful.form.json +212 -0
- package/data/forms/entity/minecraft_rideable.form.json +302 -300
- package/data/forms/entity/minecraft_scale.form.json +46 -0
- package/data/forms/entity/minecraft_shareables.form.json +83 -0
- package/data/forms/entity/minecraft_skin_id.form.json +38 -0
- package/data/forms/entity/minecraft_transformation.form.json +16 -0
- package/data/forms/entity/minecraft_transient.form.json +1 -0
- package/data/forms/entity/minecraft_type_family.form.json +20 -0
- package/data/forms/entity/minecraft_variant.form.json +86 -0
- package/data/forms/entityevents/emit_particle.form.json +1 -0
- package/data/forms/entityevents/play_sound.form.json +1 -0
- package/data/forms/entityfilters/bool_property.form.json +37 -1
- package/data/forms/entityfilters/has_biome_tag.form.json +288 -0
- package/data/forms/entityfilters/has_component.form.json +60 -0
- package/data/forms/entityfilters/has_equipment.form.json +28 -4
- package/data/forms/entityfilters/in_caravan.form.json +14 -3
- package/data/forms/entityfilters/in_contact_with_water.form.json +1 -3
- package/data/forms/entityfilters/in_lava.form.json +33 -34
- package/data/forms/entityfilters/index.json +1 -1
- package/data/forms/entityfilters/is_daytime.form.json +8 -0
- package/data/forms/entityfilters/is_difficulty.form.json +16 -0
- package/data/forms/entityfilters/is_family.form.json +234 -26
- package/data/forms/entityfilters/is_mark_variant.form.json +50 -0
- package/data/forms/entityfilters/is_riding_self.form.json +129 -0
- package/data/forms/entityfilters/is_skin_id.form.json +50 -0
- package/data/forms/entityfilters/rider_count.form.json +56 -13
- package/data/forms/index.json +1 -1
- package/data/forms/item/80.form.json +53 -1
- package/data/forms/item/90.form.json +1486 -0
- package/data/forms/item/description.form.json +3 -1
- package/data/forms/item/index.json +1 -1
- package/data/forms/item/menu_category.form.json +2 -1
- package/data/forms/item/minecraft_block_placer.form.json +14 -12
- package/data/forms/item/minecraft_bundle_interaction.form.json +1 -0
- package/data/forms/item/minecraft_compostable.form.json +1 -0
- package/data/forms/item/minecraft_digger.form.json +13 -11
- package/data/forms/item/minecraft_durability.form.json +5 -4
- package/data/forms/item/minecraft_durability_sensor.form.json +1 -0
- package/data/forms/item/minecraft_durability_sensor_durability_threshold.form.json +2 -1
- package/data/forms/item/minecraft_dyeable.form.json +1 -0
- package/data/forms/item/minecraft_enchantable.form.json +20 -20
- package/data/forms/item/minecraft_entity_placer.form.json +12 -10
- package/data/forms/item/minecraft_food.form.json +25 -20
- package/data/forms/item/minecraft_fuel.form.json +10 -4
- package/data/forms/item/minecraft_icon.form.json +34 -69
- package/data/forms/item/minecraft_item.form.json +102 -17
- package/data/forms/item/minecraft_max_stack_size.form.json +1 -1
- package/data/forms/item/minecraft_projectile.form.json +27 -27
- package/data/forms/item/minecraft_rarity.form.json +1 -0
- package/data/forms/item/minecraft_record.form.json +10 -10
- package/data/forms/item/minecraft_repairable.form.json +2 -0
- package/data/forms/item/minecraft_shooter.form.json +50 -46
- package/data/forms/item/minecraft_storage_item.form.json +35 -34
- package/data/forms/item/minecraft_throwable.form.json +18 -18
- package/data/forms/item/minecraft_use_duration.form.json +1 -0
- package/data/forms/item/minecraft_use_modifiers.form.json +22 -14
- package/data/forms/item/minecraft_wearable.form.json +26 -25
- package/data/forms/misc/biome_replacement.form.json +19 -12
- package/data/forms/misc/bounds.form.json +6 -5
- package/data/forms/misc/class_v1_21_80_jigsawblockmetadata.form.json +26 -25
- package/data/forms/misc/crafting_catalog_category.form.json +18 -13
- package/data/forms/misc/crafting_catalog_document.form.json +19 -13
- package/data/forms/misc/crafting_catalog_group.form.json +17 -13
- package/data/forms/misc/crafting_catalog_group_icon.form.json +15 -13
- package/data/forms/misc/description.form.json +2 -1
- package/data/forms/misc/dimension.form.json +25 -20
- package/data/forms/misc/dimensiondocument.form.json +26 -20
- package/data/forms/misc/emitter_initialization.form.json +4 -1
- package/data/forms/misc/emitter_lifetime_events_proxy.form.json +38 -31
- package/data/forms/misc/emitter_lifetime_events_travel_distance_events.form.json +3 -1
- package/data/forms/misc/emitter_lifetime_expression.form.json +4 -1
- package/data/forms/misc/emitter_lifetime_looping.form.json +4 -1
- package/data/forms/misc/emitter_lifetime_once.form.json +3 -1
- package/data/forms/misc/emitter_local_space_proxy.form.json +6 -5
- package/data/forms/misc/emitter_rate_instant.form.json +3 -1
- package/data/forms/misc/emitter_rate_manual.form.json +3 -1
- package/data/forms/misc/emitter_rate_steady.form.json +14 -11
- package/data/forms/misc/emitter_shape_box.form.json +38 -34
- package/data/forms/misc/emitter_shape_custom.form.json +14 -11
- package/data/forms/misc/emitter_shape_disc.form.json +49 -44
- package/data/forms/misc/emitter_shape_entity_aabb.form.json +8 -6
- package/data/forms/misc/emitter_shape_point.form.json +14 -11
- package/data/forms/misc/emitter_shape_sphere.form.json +38 -34
- package/data/forms/misc/generation.form.json +2 -1
- package/data/forms/misc/minecraft_aim_assist_categories.form.json +21 -17
- package/data/forms/misc/minecraft_aim_assist_preset.form.json +24 -22
- package/data/forms/misc/minecraft_dimension_bounds.form.json +5 -4
- package/data/forms/misc/minecraft_jigsaw_structure_metadata.form.json +3 -1
- package/data/forms/misc/particle_appearance_billboard.form.json +13 -11
- package/data/forms/misc/particle_appearance_billboard_flipbook_data.form.json +20 -17
- package/data/forms/misc/particle_appearance_tinting.form.json +6 -1
- package/data/forms/misc/particle_curve_bezier_chain.form.json +19 -17
- package/data/forms/misc/particle_curve_bezier_chain_node_proxy.form.json +11 -10
- package/data/forms/misc/particle_curve_linear.form.json +20 -16
- package/data/forms/misc/particle_effect.form.json +882 -778
- package/data/forms/misc/particle_effect_basic_render_parameters.form.json +3 -2
- package/data/forms/misc/particle_effect_component.form.json +639 -569
- package/data/forms/misc/particle_effect_description.form.json +9 -7
- package/data/forms/misc/particle_event_node.form.json +165 -140
- package/data/forms/misc/particle_event_random_node.form.json +199 -174
- package/data/forms/misc/particle_initial_spin.form.json +4 -1
- package/data/forms/misc/particle_initialization.form.json +14 -11
- package/data/forms/misc/particle_lifetime_expression.form.json +14 -11
- package/data/forms/misc/particle_motion_collision.form.json +41 -37
- package/data/forms/misc/particle_motion_collision_event.form.json +7 -6
- package/data/forms/misc/particle_motion_dynamic.form.json +6 -1
- package/data/forms/misc/particle_motion_parametric.form.json +15 -11
- package/data/forms/misc/particle_sound_effect_event.form.json +2 -1
- package/data/forms/misc/particle_visual_effect_event.form.json +3 -1
- package/data/forms/spawn/filter_test.form.json +12 -11
- package/data/forms/visual/index.json +1 -1
- package/data/forms/visual/texture_set.v1.21.30.form.json +57 -0
- package/data/forms/world/feature_rule_conditions.form.json +35 -32
- package/data/forms/world/feature_rule_definition.form.json +136 -125
- package/data/forms/world/feature_rule_description.form.json +2 -1
- package/data/forms/world/filter_test.form.json +12 -11
- package/data/forms/world/jigsawstructure.form.json +86 -76
- package/data/forms/world/scatter_params.form.json +77 -71
- package/data/gallery.json +206 -0
- package/data/mci/minecraft-samples-main.mci.json +1 -0
- package/data/mci/preview.mci.json +1 -0
- package/data/mci/release.mci.json +1 -1
- package/data/snippets/new-templates.json +23 -0
- package/data/typedefs.beta.json +6832 -4416
- package/dataform/DataFormUtilities.js +26 -0
- package/dataform/IField.js +1 -0
- package/devproject/EnvSettings.js +1 -1
- package/devproject/NpmModule.js +1 -1
- package/docgen/FormDefinitionTypeScriptGenerator.js +2 -0
- package/docgen/FormJsonDocumentationGenerator.js +212 -92
- package/docgen/FormMarkdownDocumentationGenerator.js +35 -4
- package/docgen/JsonSchemaGenerator.js +2 -1
- package/github/GitHubFile.js +2 -2
- package/info/AnimationResourceInfoGenerator.js +2 -2
- package/info/CooperativeAddOnItemRequirementsGenerator.js +51 -51
- package/info/CooperativeAddOnRequirementsGenerator.js +46 -39
- package/info/GeneratorRegistrations.js +11 -1
- package/info/GeometryInfoGenerator.js +3 -3
- package/info/PackInfoGenerator.js +9 -8
- package/info/SchemaItemInfoGenerator.js +5 -5
- package/info/SharingInfoGenerator.js +17 -5
- package/info/StrictPlatformInfoGenerator.js +5 -5
- package/info/TextureImageInfoGenerator.js +10 -9
- package/info/TextureInfoGenerator.js +19 -19
- package/info/TextureReferenceInfoGenerator.js +6 -6
- package/info/TypesInfoGenerator.js +9 -9
- package/info/UnknownItemGenerator.js +2 -2
- package/info/WorldDataInfoGenerator.js +6 -6
- package/info/fileGenerators/CheckNoBOMGenerator.js +46 -0
- package/info/projectGenerators/CheckPackIconsGenerator.js +83 -0
- package/info/projectGenerators/CheckWorldIconsGenerator.js +93 -0
- package/integrations/BlockbenchModel.js +288 -72
- package/local/LocalEnvironment.js +4 -4
- package/manager/BaseGameVersionManager.js +4 -4
- package/manager/BlocksCatalogManager.js +4 -4
- package/manager/EntityTypeManager.js +4 -4
- package/manager/FormatVersionManager.js +25 -25
- package/manager/ItemTypeManager.js +5 -5
- package/manager/MinEngineVersionManager.js +14 -14
- package/manager/ScriptModuleManager.js +6 -6
- package/manager/VsCodeFileManager.js +10 -10
- package/maps/app/Carto.js.map +1 -1
- package/maps/app/CartoApp.js.map +1 -1
- package/maps/app/ICartoData.js.map +1 -1
- package/maps/app/IGalleryItem.js.map +1 -1
- package/maps/app/IProjectItemData.js.map +1 -1
- package/maps/app/IProjectItemSeed.js.map +1 -1
- package/maps/app/IProjectItemVariant.js.map +1 -1
- package/maps/app/IProjectItemVariantSeed.js.map +1 -0
- package/maps/app/Project.js.map +1 -1
- package/maps/app/ProjectAutogeneration.js.map +1 -1
- package/maps/app/ProjectExporter.js.map +1 -1
- package/maps/app/ProjectItem.js.map +1 -1
- package/maps/app/ProjectItemCreateManager.js.map +1 -0
- package/maps/app/ProjectItemInference.js.map +1 -0
- package/maps/app/ProjectItemRelations.js.map +1 -1
- package/maps/app/ProjectItemUtilities.js.map +1 -1
- package/maps/app/ProjectItemVariant.js.map +1 -1
- package/maps/app/ProjectItemVariantCreateManager.js.map +1 -0
- package/maps/app/ProjectStandard.js.map +1 -1
- package/maps/app/ProjectUtilities.js.map +1 -1
- package/maps/cli/ClUtils.js.map +1 -1
- package/maps/cli/TaskWorker.js.map +1 -1
- package/maps/cli/index.js.map +1 -1
- package/maps/core/Constants.js.map +1 -1
- package/maps/core/ISimpleReference.js.map +1 -1
- package/maps/core/Utilities.js.map +1 -1
- package/maps/dataform/DataFormUtilities.js.map +1 -1
- package/maps/dataform/IField.js.map +1 -1
- package/maps/dataform/IFormDefinition.js.map +1 -1
- package/maps/devproject/EnvSettings.js.map +1 -1
- package/maps/devproject/NpmModule.js.map +1 -1
- package/maps/docgen/FormDefinitionTypeScriptGenerator.js.map +1 -1
- package/maps/docgen/FormJsonDocumentationGenerator.js.map +1 -1
- package/maps/docgen/FormMarkdownDocumentationGenerator.js.map +1 -1
- package/maps/docgen/JsonSchemaGenerator.js.map +1 -1
- package/maps/github/GitHubFile.js.map +1 -1
- package/maps/info/AnimationResourceInfoGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnItemRequirementsGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnRequirementsGenerator.js.map +1 -1
- package/maps/info/GeneratorRegistrations.js.map +1 -1
- package/maps/info/GeometryInfoGenerator.js.map +1 -1
- package/maps/info/PackInfoGenerator.js.map +1 -1
- package/maps/info/SchemaItemInfoGenerator.js.map +1 -1
- package/maps/info/SharingInfoGenerator.js.map +1 -1
- package/maps/info/StrictPlatformInfoGenerator.js.map +1 -1
- package/maps/info/TextureImageInfoGenerator.js.map +1 -1
- package/maps/info/TextureInfoGenerator.js.map +1 -1
- package/maps/info/TextureReferenceInfoGenerator.js.map +1 -1
- package/maps/info/TypesInfoGenerator.js.map +1 -1
- package/maps/info/UnknownItemGenerator.js.map +1 -1
- package/maps/info/WorldDataInfoGenerator.js.map +1 -1
- package/maps/info/fileGenerators/CheckNoBOMGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckPackIconsGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckWorldIconsGenerator.js.map +1 -0
- package/maps/integrations/BlockbenchModel.js.map +1 -1
- package/maps/integrations/IBlockbenchModel.js.map +1 -1
- package/maps/local/ILocalEnvironmentData.js.map +1 -1
- package/maps/local/LocalEnvironment.js.map +1 -1
- package/maps/manager/BaseGameVersionManager.js.map +1 -1
- package/maps/manager/BlocksCatalogManager.js.map +1 -1
- package/maps/manager/EntityTypeManager.js.map +1 -1
- package/maps/manager/FormatVersionManager.js.map +1 -1
- package/maps/manager/ItemTypeManager.js.map +1 -1
- package/maps/manager/MinEngineVersionManager.js.map +1 -1
- package/maps/manager/ScriptModuleManager.js.map +1 -1
- package/maps/manager/VsCodeFileManager.js.map +1 -1
- package/maps/minecraft/AnimationResourceDefinition.js.map +1 -1
- package/maps/minecraft/AttachableResourceDefinition.js.map +1 -1
- package/maps/minecraft/AudioDefinition.js.map +1 -1
- package/maps/minecraft/BehaviorManifestDefinition.js.map +1 -1
- package/maps/minecraft/BlockTypeDefinition.js.map +1 -1
- package/maps/minecraft/BlocksCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Database.js.map +1 -1
- package/maps/minecraft/EntityTypeDefinition.js.map +1 -1
- package/maps/minecraft/EntityTypeResourceDefinition.js.map +1 -1
- package/maps/minecraft/FlipbookTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/IAnimationResource.js.map +1 -1
- package/maps/minecraft/IEntityTypeResource.js.map +1 -1
- package/maps/minecraft/IModelGeometry.js.map +1 -1
- package/maps/minecraft/ItemTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/ItemTypeDefinition.js.map +1 -0
- package/maps/minecraft/JsonUIResourceDefinition.js.map +1 -1
- package/maps/minecraft/LocManager.js.map +1 -1
- package/maps/minecraft/MCWorld.js.map +1 -1
- package/maps/minecraft/ManagedComponentGroup.js.map +1 -1
- package/maps/minecraft/ManagedPermutation.js.map +1 -1
- package/maps/minecraft/MinecraftDefinitions.js.map +1 -1
- package/maps/minecraft/MinecraftUtilities.js.map +1 -1
- package/maps/minecraft/MusicDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Pack.js.map +1 -1
- package/maps/minecraft/ParticleEffectResourceDefinition.js.map +1 -1
- package/maps/minecraft/ResourceManifestDefinition.js.map +1 -1
- package/maps/minecraft/SoundCatalogDefinition.js.map +1 -1
- package/maps/minecraft/SoundDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/TerrainTextureCatalogDefinition.js.map +1 -1
- package/maps/storage/FileBase.js.map +1 -1
- package/maps/storage/FileSystemFolder.js.map +1 -1
- package/maps/storage/FolderBase.js.map +1 -1
- package/maps/storage/IFile.js.map +1 -1
- package/maps/storage/IFolder.js.map +1 -1
- package/maps/storage/ImageUtilites.js.map +1 -0
- package/maps/storage/StorageUtilities.js.map +1 -1
- package/maps/test/CommandLineTest.js.map +1 -1
- package/minecraft/AnimationResourceDefinition.js +13 -2
- package/minecraft/AttachableResourceDefinition.js +36 -10
- package/minecraft/AudioDefinition.js +2 -2
- package/minecraft/BehaviorManifestDefinition.js +6 -6
- package/minecraft/BlockTypeDefinition.js +10 -10
- package/minecraft/BlocksCatalogDefinition.js +2 -2
- package/minecraft/Database.js +38 -12
- package/minecraft/EntityTypeDefinition.js +21 -11
- package/minecraft/EntityTypeResourceDefinition.js +65 -15
- package/minecraft/FlipbookTextureCatalogDefinition.js +4 -4
- package/minecraft/ItemTextureCatalogDefinition.js +2 -2
- package/minecraft/{ItemTypeBehaviorDefinition.js → ItemTypeDefinition.js} +70 -6
- package/minecraft/JsonUIResourceDefinition.js +2 -2
- package/minecraft/LocManager.js +2 -2
- package/minecraft/MCWorld.js +2 -2
- package/minecraft/ManagedComponentGroup.js +3 -0
- package/minecraft/ManagedPermutation.js +3 -0
- package/minecraft/MinecraftDefinitions.js +24 -24
- package/minecraft/MinecraftUtilities.js +27 -0
- package/minecraft/MusicDefinitionCatalogDefinition.js +2 -2
- package/minecraft/Pack.js +15 -0
- package/minecraft/ParticleEffectResourceDefinition.js +4 -4
- package/minecraft/ResourceManifestDefinition.js +3 -3
- package/minecraft/SoundCatalogDefinition.js +4 -4
- package/minecraft/SoundDefinitionCatalogDefinition.js +4 -4
- package/minecraft/TerrainTextureCatalogDefinition.js +2 -2
- package/package.json +1 -1
- package/storage/FileBase.js +3 -0
- package/storage/FileSystemFolder.js +2 -1
- package/storage/FolderBase.js +9 -0
- package/storage/ImageUtilites.js +35 -0
- package/storage/StorageUtilities.js +52 -2
- package/test/CommandLineTest.js +141 -1
- package/data/forms/biome/minecraft_mountain_parameters_-_steep_material_adjustment_settings.form.json +0 -70
- package/data/forms/biome/minecraft_mountain_parameters_-_top_slide_settings.form.json +0 -12
- package/data/forms/biome/minecraft_surface_material_adjustments_-_surface_adjustment_materials_settings.form.json +0 -206
- package/data/forms/biome/minecraft_surface_material_adjustments_-_surface_adjustment_settings.form.json +0 -250
- package/maps/app/ProjectItemManager.js.map +0 -1
- package/maps/minecraft/ItemTypeBehaviorDefinition.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/dataform/IField.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAMlC,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,qEAAY,CAAA;IACZ,iEAAU,CAAA;AACZ,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B;AAED,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,qEAAU,CAAA;IACV,iFAAgB,CAAA;AAClB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAED,IAAY,
|
|
1
|
+
{"version":3,"sources":["../../../src/dataform/IField.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAMlC,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,qEAAY,CAAA;IACZ,iEAAU,CAAA;AACZ,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B;AAED,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,qEAAU,CAAA;IACV,iFAAgB,CAAA;AAClB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAED,IAAY,aAyCX;AAzCD,WAAY,aAAa;IACvB,+CAAO,CAAA;IACP,uDAAW,CAAA;IACX,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,6DAAc,CAAA;IACd,uDAAW,CAAA;IACX,6DAAc,CAAA;IACd,qDAAU,CAAA;IACV,iEAAgB,CAAA;IAChB,qEAAkB,CAAA;IAClB,kDAAS,CAAA;IACT,sDAAW,CAAA;IACX,4DAAc,CAAA;IACd,sEAAmB,CAAA;IACnB,oFAA0B,CAAA;IAC1B,gEAAgB,CAAA;IAChB,sDAAW,CAAA;IACX,gEAAgB,CAAA;IAChB,0DAAa,CAAA;IACb,8DAAe,CAAA;IACf,wEAAoB,CAAA;IACpB,kEAAiB,CAAA;IACjB,oFAA0B,CAAA;IAC1B,gFAAwB,CAAA;IACxB,oFAA0B,CAAA;IAC1B,wDAAY,CAAA;IACZ,kDAAS,CAAA;IACT,sFAA2B,CAAA;IAC3B,8FAA+B,CAAA;IAC/B,kGAAiC,CAAA;IACjC,wGAAoC,CAAA;IACpC,oFAA0B,CAAA;IAC1B,gEAAgB,CAAA;IAChB,4FAA8B,CAAA;IAC9B,sDAAW,CAAA;IACX,gEAAgB,CAAA;IAChB,sDAAW,CAAA;IACX,4EAAsB,CAAA;IACtB,8FAA+B,CAAA;IAC/B,wFAA4B,CAAA;AAC9B,CAAC,EAzCW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAyCxB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,2DAAQ,CAAA;IACR,iEAAW,CAAA;IACX,qEAAa,CAAA;AACf,CAAC,EAJW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAI7B","file":"../../dataform/IField.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport ISimpleReference from \"../core/ISimpleReference\";\r\nimport ICondition from \"./ICondition\";\r\nimport IFormDefinition, { IFormSample } from \"./IFormDefinition\";\r\n\r\nexport enum FieldExperienceType {\r\n text = 1,\r\n dropdown = 2,\r\n slider = 3,\r\n}\r\n\r\nexport enum FieldVisualExperience {\r\n normal = 0,\r\n deemphasized = 1,\r\n}\r\n\r\nexport enum FieldDataType {\r\n int = 0,\r\n boolean = 1,\r\n string = 2,\r\n float = 3,\r\n stringEnum = 4,\r\n intEnum = 5,\r\n intBoolean = 6,\r\n number = 7,\r\n stringLookup = 8,\r\n intValueLookup = 9,\r\n long = 10,\r\n point3 = 11,\r\n intPoint3 = 12,\r\n longFormString = 13, // typically will support very long strings. Mostly this is just a visual thing.\r\n keyedObjectCollection = 14, // { \"foo\": {x: 1, z: 3}, \"bar\": {x:10, y: 4} }\r\n objectArray = 15, // [ { x: 1, id: \"alpha\", z: 3}, { x: 1, id: \"bravo\", z: 3} ]\r\n object = 16,\r\n stringArray = 17,\r\n intRange = 18,\r\n floatRange = 19,\r\n minecraftFilter = 20,\r\n percentRange = 21,\r\n minecraftEventTrigger = 22,\r\n longFormStringArray = 23,\r\n keyedStringCollection = 24, // { \"foo\": \"blah\", \"barg\" : \"borg\" }\r\n version = 25,\r\n uuid = 26,\r\n keyedBooleanCollection = 27, // { \"foo\": true, \"blah\": false}\r\n keyedStringArrayCollection = 28, // { \"foo\": [\"blah\", \"alpha\"], \"barg\" : [\"borg\"] }\r\n arrayOfKeyedStringCollection = 29, // [ { \"blah\": \"alpha\", \"blaz\": \"blay\" }, {\"barg\": \"borg\"} ]\r\n keyedKeyedStringArrayCollection = 30, // { \"alpha\": { \"foo\": [\"blah\", \"alpha\"], \"barg\" : [\"borg\"] } }\r\n keyedNumberCollection = 31, // { \"foo\": 17, \"blah\": 43 }\r\n numberArray = 32,\r\n checkboxListAsStringArray = 33,\r\n molang = 34,\r\n molangArray = 35,\r\n point2 = 36,\r\n localizableString = 37,\r\n keyedNumberArrayCollection = 38, // { \"foo\": [255, 0.0, 2555], \"barg\" : [128, 0, 0] }\r\n minecraftEventReference = 39,\r\n}\r\n\r\nexport enum FieldValueHumanify {\r\n none = 0,\r\n general = 1,\r\n minecraft = 2,\r\n}\r\n\r\nexport default interface IField {\r\n id: string;\r\n altId?: string;\r\n groupId?: string;\r\n title?: string;\r\n description?: string;\r\n note?: string;\r\n note2?: string;\r\n note3?: string;\r\n undefinedIfEmpty?: boolean;\r\n subForm?: IFormDefinition;\r\n subFormId?: string;\r\n allowedKeys?: string[];\r\n versionIntroduced?: string;\r\n versionDeprecated?: string;\r\n subFields?: { [keyName: string]: IField };\r\n objectArrayToSubFieldKey?: string;\r\n objectArrayTitleFieldKey?: string;\r\n matchObjectArrayLengthToSubFieldLength?: boolean;\r\n matchObjectArrayToSubFieldKey?: boolean;\r\n fixedLength?: number;\r\n keyDescription?: string;\r\n lookupId?: string;\r\n minLength?: number;\r\n maxLength?: number;\r\n newItemPrototype?: any;\r\n noun?: string;\r\n priority?: number;\r\n allowCreateDelete?: boolean;\r\n readOnly?: boolean;\r\n displayTitle?: boolean;\r\n forceString?: boolean;\r\n minValue?: number;\r\n maxValue?: number;\r\n step?: number;\r\n isRemoved?: boolean; // a placeholder for internal processes to signify that this field should NOT be merged in via automatic processes and should not really exist in the schema.\r\n humanifyValues?: FieldValueHumanify;\r\n hideSamples?: boolean;\r\n suggestedMinValue?: number;\r\n suggestedMaxValue?: number;\r\n tags?: string[];\r\n isRequired?: boolean;\r\n isDeprecated?: boolean;\r\n isInternal?: boolean;\r\n validity?: ICondition[];\r\n visibility?: ICondition[];\r\n defaultValue?: string | number | boolean | number[] | string[];\r\n additionalIndent?: number;\r\n visualExperience?: FieldVisualExperience;\r\n experienceType?: FieldExperienceType;\r\n dataType: FieldDataType;\r\n alternates?: IField[];\r\n mustMatchChoices?: boolean;\r\n choices?: ISimpleReference[];\r\n samples?: { [path: string]: IFormSample[] };\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/dataform/IFormDefinition.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","file":"../../dataform/IFormDefinition.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IField from \"./IField\";\r\n\r\nexport interface IFormSample {\r\n path: string;\r\n content: object | string | number | boolean;\r\n}\r\n\r\nexport interface IFormDependency {\r\n id: string;\r\n type?: string;\r\n description?: string;\r\n}\r\n\r\nexport default interface IFormDefinition {\r\n id?: string;\r\n title?: string;\r\n description?: string;\r\n dataVersion?: string;\r\n fields: IField[];\r\n generated_doNotEdit?: IFormDefinition;\r\n generatedFromSchema_doNotEdit?: IFormDefinition;\r\n note?: string;\r\n note2?: string;\r\n note3?: string;\r\n requires?: IFormDependency[];\r\n tags?: string[];\r\n restrictions?: IFormDependency[];\r\n isDeprecated?: boolean;\r\n isInternal?: boolean;\r\n isExperimental?: boolean;\r\n requiredExperiment?: string;\r\n scalarFieldUpgradeName?: string;\r\n samples?: { [path: string]: IFormSample[] };\r\n customField?: IField;\r\n scalarField?: IField;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/dataform/IFormDefinition.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","file":"../../dataform/IFormDefinition.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IField from \"./IField\";\r\n\r\nexport interface IFormSample {\r\n path: string;\r\n content: object | string | number | boolean;\r\n}\r\n\r\nexport interface IFormDependency {\r\n id: string;\r\n type?: string;\r\n description?: string;\r\n}\r\n\r\nexport default interface IFormDefinition {\r\n id?: string;\r\n title?: string;\r\n description?: string;\r\n dataVersion?: string;\r\n fields: IField[];\r\n generated_doNotEdit?: IFormDefinition;\r\n generatedFromSchema_doNotEdit?: IFormDefinition;\r\n note?: string;\r\n note2?: string;\r\n note3?: string;\r\n versionIntroduced?: string;\r\n versionDeprecated?: string;\r\n requires?: IFormDependency[];\r\n tags?: string[];\r\n restrictions?: IFormDependency[];\r\n isDeprecated?: boolean;\r\n isInternal?: boolean;\r\n isExperimental?: boolean;\r\n requiredExperiment?: string;\r\n scalarFieldUpgradeName?: string;\r\n samples?: { [path: string]: IFormSample[] };\r\n customField?: IField;\r\n scalarField?: IField;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/devproject/EnvSettings.ts"],"names":[],"mappings":"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","file":"../../devproject/EnvSettings.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IFile from \"../storage/IFile\";\r\nimport { EventDispatcher, IEventHandler } from \"ste-events\";\r\nimport Project from \"../app/Project\";\r\nimport { MinecraftTrack } from \"../app/ICartoData\";\r\n\r\nexport default class EnvSettings {\r\n private _file?: IFile;\r\n private _id?: string;\r\n private _isLoaded: boolean = false;\r\n\r\n private _onLoaded = new EventDispatcher<EnvSettings, EnvSettings>();\r\n\r\n public project: Project | undefined = undefined;\r\n\r\n public get isLoaded() {\r\n return this._isLoaded;\r\n }\r\n\r\n public get file() {\r\n return this._file;\r\n }\r\n\r\n public set file(newFile: IFile | undefined) {\r\n this._file = newFile;\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get id() {\r\n return this._id;\r\n }\r\n\r\n public set id(newId: string | undefined) {\r\n this._id = newId;\r\n }\r\n\r\n static async ensureOnFile(file: IFile, loadHandler?: IEventHandler<EnvSettings, EnvSettings>) {\r\n let envf: EnvSettings | undefined;\r\n\r\n if (file.manager === undefined) {\r\n envf = new EnvSettings();\r\n\r\n envf.file = file;\r\n\r\n file.manager = envf;\r\n }\r\n\r\n if (file.manager !== undefined && file.manager instanceof EnvSettings) {\r\n envf = file.manager as EnvSettings;\r\n\r\n if (!envf.isLoaded && loadHandler) {\r\n envf.onLoaded.subscribe(loadHandler);\r\n }\r\n\r\n await envf.load();\r\n\r\n return envf;\r\n }\r\n\r\n return envf;\r\n }\r\n\r\n async ensureEnvFile(project: Project) {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n\r\n await this.load();\r\n\r\n let content = this._file?.content;\r\n\r\n if (content === null) {\r\n content = \"\";\r\n }\r\n\r\n if (content && typeof content === \"string\") {\r\n }\r\n }\r\n\r\n async persist() {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n }\r\n\r\n async save() {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n\r\n if (this._file.isContentLoaded && this.project && this._file.content && typeof this._file.content === \"string\") {\r\n this._file.setContent(await EnvSettings.getContent(this.project, this._file.content));\r\n }\r\n\r\n await this._file.saveContent(false);\r\n }\r\n\r\n async load() {\r\n if (this._file === undefined || this._isLoaded) {\r\n return;\r\n }\r\n\r\n await this._file.loadContent(true);\r\n\r\n if (this._file.content === null || this._file.content instanceof Uint8Array) {\r\n return;\r\n }\r\n\r\n this._isLoaded = true;\r\n }\r\n\r\n static async getContent(project: Project, content?: string) {\r\n if (content === undefined) {\r\n content = 'PROJECT_NAME=\"\"\\r\\nMINECRAFT_PRODUCT=\"BedrockUWP\"\\r\\nCUSTOM_DEPLOYMENT_PATH=\"\"\\r\\n';\r\n }\r\n\r\n const folder = await project.getDefaultBehaviorPackFolder();\r\n\r\n if (folder) {\r\n let projectNameIndex = content.indexOf('PROJECT_NAME=\"');\r\n\r\n if (projectNameIndex >= 0) {\r\n let projectNameNewQuote = content.indexOf('\"', projectNameIndex + 14);\r\n\r\n if (projectNameNewQuote > projectNameIndex) {\r\n content =\r\n content.substring(0, projectNameIndex) +\r\n 'PROJECT_NAME=\"' +\r\n folder.name +\r\n \"\" +\r\n content.substring(projectNameNewQuote);\r\n }\r\n } else {\r\n if (!content.endsWith(\"\\n\")) {\r\n content += \"\\r\\n\";\r\n }\r\n\r\n content = content + 'PROJECT_NAME=\"' + folder.name + '\"\\r\\n';\r\n }\r\n }\r\n\r\n let minecraftProductIndex = content.indexOf('MINECRAFT_PRODUCT=\"');\r\n const trackStr = project.track === MinecraftTrack.preview ? \"
|
|
1
|
+
{"version":3,"sources":["../../../src/devproject/EnvSettings.ts"],"names":[],"mappings":"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","file":"../../devproject/EnvSettings.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IFile from \"../storage/IFile\";\r\nimport { EventDispatcher, IEventHandler } from \"ste-events\";\r\nimport Project from \"../app/Project\";\r\nimport { MinecraftTrack } from \"../app/ICartoData\";\r\n\r\nexport default class EnvSettings {\r\n private _file?: IFile;\r\n private _id?: string;\r\n private _isLoaded: boolean = false;\r\n\r\n private _onLoaded = new EventDispatcher<EnvSettings, EnvSettings>();\r\n\r\n public project: Project | undefined = undefined;\r\n\r\n public get isLoaded() {\r\n return this._isLoaded;\r\n }\r\n\r\n public get file() {\r\n return this._file;\r\n }\r\n\r\n public set file(newFile: IFile | undefined) {\r\n this._file = newFile;\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get id() {\r\n return this._id;\r\n }\r\n\r\n public set id(newId: string | undefined) {\r\n this._id = newId;\r\n }\r\n\r\n static async ensureOnFile(file: IFile, loadHandler?: IEventHandler<EnvSettings, EnvSettings>) {\r\n let envf: EnvSettings | undefined;\r\n\r\n if (file.manager === undefined) {\r\n envf = new EnvSettings();\r\n\r\n envf.file = file;\r\n\r\n file.manager = envf;\r\n }\r\n\r\n if (file.manager !== undefined && file.manager instanceof EnvSettings) {\r\n envf = file.manager as EnvSettings;\r\n\r\n if (!envf.isLoaded && loadHandler) {\r\n envf.onLoaded.subscribe(loadHandler);\r\n }\r\n\r\n await envf.load();\r\n\r\n return envf;\r\n }\r\n\r\n return envf;\r\n }\r\n\r\n async ensureEnvFile(project: Project) {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n\r\n await this.load();\r\n\r\n let content = this._file?.content;\r\n\r\n if (content === null) {\r\n content = \"\";\r\n }\r\n\r\n if (content && typeof content === \"string\") {\r\n }\r\n }\r\n\r\n async persist() {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n }\r\n\r\n async save() {\r\n if (this._file === undefined) {\r\n return;\r\n }\r\n\r\n if (this._file.isContentLoaded && this.project && this._file.content && typeof this._file.content === \"string\") {\r\n this._file.setContent(await EnvSettings.getContent(this.project, this._file.content));\r\n }\r\n\r\n await this._file.saveContent(false);\r\n }\r\n\r\n async load() {\r\n if (this._file === undefined || this._isLoaded) {\r\n return;\r\n }\r\n\r\n await this._file.loadContent(true);\r\n\r\n if (this._file.content === null || this._file.content instanceof Uint8Array) {\r\n return;\r\n }\r\n\r\n this._isLoaded = true;\r\n }\r\n\r\n static async getContent(project: Project, content?: string) {\r\n if (content === undefined) {\r\n content = 'PROJECT_NAME=\"\"\\r\\nMINECRAFT_PRODUCT=\"BedrockUWP\"\\r\\nCUSTOM_DEPLOYMENT_PATH=\"\"\\r\\n';\r\n }\r\n\r\n const folder = await project.getDefaultBehaviorPackFolder();\r\n\r\n if (folder) {\r\n let projectNameIndex = content.indexOf('PROJECT_NAME=\"');\r\n\r\n if (projectNameIndex >= 0) {\r\n let projectNameNewQuote = content.indexOf('\"', projectNameIndex + 14);\r\n\r\n if (projectNameNewQuote > projectNameIndex) {\r\n content =\r\n content.substring(0, projectNameIndex) +\r\n 'PROJECT_NAME=\"' +\r\n folder.name +\r\n \"\" +\r\n content.substring(projectNameNewQuote);\r\n }\r\n } else {\r\n if (!content.endsWith(\"\\n\")) {\r\n content += \"\\r\\n\";\r\n }\r\n\r\n content = content + 'PROJECT_NAME=\"' + folder.name + '\"\\r\\n';\r\n }\r\n }\r\n\r\n let minecraftProductIndex = content.indexOf('MINECRAFT_PRODUCT=\"');\r\n const trackStr = project.track === MinecraftTrack.preview ? \"PreviewUWP\" : \"BedrockUWP\";\r\n\r\n if (minecraftProductIndex >= 0) {\r\n let minecraftProductIndexNextQuote = content.indexOf('\"', minecraftProductIndex + 19);\r\n\r\n if (minecraftProductIndexNextQuote > minecraftProductIndex) {\r\n content =\r\n content.substring(0, minecraftProductIndex) +\r\n 'MINECRAFT_PRODUCT=\"' +\r\n trackStr +\r\n content.substring(minecraftProductIndexNextQuote);\r\n }\r\n } else {\r\n if (!content.endsWith(\"\\n\")) {\r\n content += \"\\r\\n\";\r\n }\r\n\r\n content = content + 'MINECRAFT_PRODUCT=\"' + trackStr + '\"\\r\\n';\r\n }\r\n\r\n return content;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/devproject/NpmModule.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAIlC,MAAqB,SAAS;IAU5B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,sCAAsC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,IAAI,OAAO,GAAG,CAAC,EAAE;gBACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAElD,IAAI,IAAI,IAAI,CAAC,EAAE;oBACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/devproject/NpmModule.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAIlC,MAAqB,SAAS;IAU5B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,sCAAsC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,IAAI,OAAO,GAAG,CAAC,EAAE;gBACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAElD,IAAI,IAAI,IAAI,CAAC,EAAE;oBACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAEvE,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAElD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;4BACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;yBACtF;6BAAM;4BACL,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;yBAChG;qBACF;iBACF;aACF;SACF;IACH,CAAC;CACF;AA3CD,4BA2CC","file":"../../devproject/NpmModule.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport { Packument } from \"@npm/types\";\r\n\r\nexport default class NpmModule {\r\n packument: Packument;\r\n\r\n latest: string | undefined;\r\n beta: string | undefined;\r\n betaVersion: string | undefined;\r\n betaProductVersion: string | undefined;\r\n latestPreviewVersion: string | undefined;\r\n latestRetailVersion: string | undefined;\r\n\r\n constructor(packument: Packument) {\r\n this.packument = packument;\r\n\r\n if (this.packument[\"dist-tags\"]) {\r\n this.latest = this.packument[\"dist-tags\"].latest;\r\n this.beta = this.packument[\"dist-tags\"].beta;\r\n }\r\n\r\n if (this.beta) {\r\n // e.g., 1.3.0-beta.1.20.0-preview.23;\r\n const betaTag = this.beta.indexOf(\"-beta.\");\r\n\r\n if (betaTag > 0) {\r\n this.betaVersion = this.beta.substring(0, betaTag);\r\n this.betaProductVersion = this.beta.substring(betaTag + 6);\r\n const dash = this.betaProductVersion.indexOf(\"-\");\r\n\r\n if (dash >= 0) {\r\n this.latestPreviewVersion = this.betaProductVersion.substring(0, dash);\r\n\r\n const nums = this.latestPreviewVersion.split(\".\");\r\n\r\n if (nums.length === 3) {\r\n if (nums[2] === \"0\") {\r\n this.latestRetailVersion = nums[0] + \".\" + (parseInt(nums[1]) - 1).toString() + \".0\";\r\n } else {\r\n this.latestRetailVersion = nums[0] + \".\" + nums[1] + \".\" + (parseInt(nums[2]) - 10).toString();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/docgen/FormDefinitionTypeScriptGenerator.ts"],"names":[],"mappings":"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","file":"../../docgen/FormDefinitionTypeScriptGenerator.js","sourcesContent":["import Utilities from \"../core/Utilities\";\r\nimport IFormDefinition from \"../dataform/IFormDefinition\";\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport IIndexJson from \"../storage/IIndexJson\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport DataFormUtilities from \"../dataform/DataFormUtilities\";\r\nimport IField, { FieldDataType } from \"../dataform/IField\";\r\nimport EntityTypeDefinition from \"../minecraft/EntityTypeDefinition\";\r\nimport Database from \"../minecraft/Database\";\r\nimport Log from \"../core/Log\";\r\nimport ISimpleReference from \"../core/ISimpleReference\";\r\n\r\nexport enum ExportMode {\r\n other = 0,\r\n triggers = 1,\r\n blockComponents = 2,\r\n itemComponents = 3,\r\n entityComponents = 4,\r\n AIGoals = 5,\r\n visuals = 6,\r\n fogs = 7,\r\n websockets = 8,\r\n filters = 9,\r\n MCToolsVal = 10,\r\n eventResponses = 11,\r\n clientBiomes = 12,\r\n biomes = 13,\r\n features = 14,\r\n featureCore = 15,\r\n clientDeferredRendering = 16,\r\n}\r\n\r\nexport default class FormDefinitionTypeScriptGenerator {\r\n public async generateTypes(formJsonInputFolder: IFolder, outputFolder: IFolder) {\r\n const formsByPath: { [name: string]: IFormDefinition } = {};\r\n\r\n await this.loadFormJsonFromFolder(formsByPath, formJsonInputFolder, outputFolder);\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.features,\r\n \"/features/\",\r\n \"/features/minecraft_\",\r\n \"Feature\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.featureCore,\r\n \"/features/\",\r\n \"/feature/feature\",\r\n \"Feature Rule\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.AIGoals,\r\n \"/entity/\",\r\n \"/entity/minecraft_behavior\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.visuals, \"/visual/\", \"/visual/\", \"Visuals\");\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.fogs, \"/fogs/\", \"/fogs/\", \"Fogs\");\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/client_biome/\",\r\n \"/client_biome/\",\r\n \"Client Biomes\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/deferred_rendering/\",\r\n \"/client_deferred_rendering/\",\r\n \"Client Biomes\"\r\n );\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.websockets,\r\n \"/websockets/\",\r\n \"/websockets/\",\r\n \"Websockets\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.triggers,\r\n \"/entity/entityTriggers/\",\r\n \"/entity/minecraft_on\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.filters,\r\n \"/entity/filters/\",\r\n \"/entityfilters/\",\r\n \"Entity Filters\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.eventResponses,\r\n \"/entity/eventActions/\",\r\n \"/entityevents/\",\r\n \"Entity Actions\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.blockComponents,\r\n \"/block/blockComponents/\",\r\n \"/block/minecraft_\",\r\n \"Block Components\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.itemComponents,\r\n \"/item/itemComponents/\",\r\n \"/item/minecraft_\",\r\n \"Items\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.entityComponents,\r\n \"/entity/entityComponents/\",\r\n \"/entity/minecraft_\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/clientBiomes/components/\",\r\n \"/clientbiome/\",\r\n \"Client Biome\"\r\n );\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.biomes, \"/biomes/components/\", \"/biome/\", \"Biome\");\r\n }\r\n\r\n private getFileNameFromBaseName(baseName: string, exportMode: ExportMode) {\r\n let fileName = baseName;\r\n\r\n return fileName;\r\n }\r\n\r\n public async exportTypeScriptDocs(\r\n formsByPath: { [name: string]: IFormDefinition },\r\n outputFolder: IFolder,\r\n exportMode: ExportMode,\r\n subFolderPath: string,\r\n formsPath: string,\r\n categoryPlural: string\r\n ) {\r\n const targetFolder = await outputFolder.ensureFolderFromRelativePath(subFolderPath);\r\n\r\n if (!targetFolder) {\r\n return;\r\n }\r\n\r\n let hasEnsuredFolder = false;\r\n\r\n formsByPath = this.getFormsFromFilter(formsByPath, formsPath, exportMode);\r\n\r\n for (const formPath in formsByPath) {\r\n const formO = formsByPath[formPath];\r\n\r\n if (formO) {\r\n let baseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(formPath));\r\n\r\n if (baseName.endsWith(\".form\")) {\r\n baseName = baseName.substring(0, baseName.length - 5);\r\n }\r\n\r\n if (!hasEnsuredFolder) {\r\n await targetFolder.ensureExists();\r\n hasEnsuredFolder = true;\r\n }\r\n\r\n let typeName = formO.id ? formO.id : formO.title;\r\n\r\n if (!typeName) {\r\n Log.unexpectedUndefined(\"Form: \" + baseName);\r\n return;\r\n }\r\n\r\n typeName = Utilities.javascriptifyName(typeName, true);\r\n\r\n let fileName = this.getFileNameFromBaseName(typeName, exportMode);\r\n\r\n const markdownFile = targetFolder.ensureFile(fileName + \".d.ts\");\r\n\r\n await this.saveFormDefinitionTypeScriptDocForm(\r\n markdownFile,\r\n formO,\r\n baseName,\r\n exportMode,\r\n categoryPlural,\r\n Utilities.countChar(subFolderPath, \"/\")\r\n );\r\n }\r\n }\r\n }\r\n\r\n public async saveFormDefinitionTypeScriptDocForm(\r\n dtsFile: IFile,\r\n form: IFormDefinition,\r\n baseName: string,\r\n exportMode: ExportMode,\r\n category: string,\r\n folderDepth: number\r\n ) {\r\n const content: string[] = [];\r\n\r\n let canonName = \"minecraft:\" + EntityTypeDefinition.getComponentFromBaseFileName(baseName);\r\n\r\n if (exportMode === ExportMode.websockets && form.id) {\r\n canonName = form.id;\r\n }\r\n\r\n content.push(\"// Copyright (c) Microsoft Corporation.\");\r\n content.push(\"// Licensed under the MIT License.\");\r\n content.push(\"// Type definitions for working with Minecraft Bedrock Edition pack JSON schemas.\");\r\n content.push(\"// Project: https://learn.microsoft.com/minecraft/creator/\");\r\n content.push(\"\");\r\n\r\n content.push(\"/**\");\r\n content.push(\" * @packageDocumentation\");\r\n content.push(\" * Contains types for working with various Minecraft Bedrock Edition JSON schemas.\");\r\n content.push(\" * \");\r\n content.push(\" * \" + category + \" Documentation - \" + canonName);\r\n\r\n if (form.samples) {\r\n content.push(\" * \");\r\n content.push(\" * \" + canonName + \" Samples\");\r\n let samplesAdded = 0;\r\n const linesAdded: string[] = [];\r\n\r\n for (const samplePath in form.samples) {\r\n let sampleArr = form.samples[samplePath];\r\n let addedHeader = false;\r\n\r\n if (sampleArr && samplesAdded < 12) {\r\n const sampBaseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(samplePath));\r\n\r\n let targetPath = samplePath;\r\n\r\n for (const sample of sampleArr) {\r\n let line = \"\";\r\n\r\n if (\r\n baseName.startsWith(\"minecraft_\") &&\r\n (typeof sample.content !== \"string\" || !sample.content.startsWith(\"minecraft:\"))\r\n ) {\r\n line += '\"' + canonName + '\": ';\r\n }\r\n\r\n if (typeof sample.content === \"object\" || Array.isArray(sample.content)) {\r\n line += JSON.stringify(sample.content, undefined, 2) + \"\\r\\n\";\r\n } else {\r\n if (typeof sample.content === \"string\") {\r\n let cont = sample.content.trim();\r\n\r\n if (cont.startsWith(\"{\") && cont.endsWith(\"}\")) {\r\n line += cont;\r\n } else {\r\n line += '\"' + cont;\r\n }\r\n } else {\r\n line += sample.content;\r\n }\r\n }\r\n\r\n if (!linesAdded.includes(line)) {\r\n if (!addedHeader) {\r\n addedHeader = true;\r\n\r\n if (targetPath !== \"samples\" && targetPath !== \"sample\") {\r\n if (targetPath.startsWith(\"/vanilla\")) {\r\n targetPath = \"https://github.com/Mojang/bedrock-samples/tree/preview\" + targetPath.substring(8);\r\n } else if (targetPath.startsWith(\"/samples\")) {\r\n targetPath = \"https://github.com/microsoft/minecraft-samples/tree/main\" + targetPath.substring(8);\r\n }\r\n\r\n content.push(\"\");\r\n content.push(\r\n Utilities.humanifyMinecraftName(\r\n sampBaseName.substring(0, 1).toUpperCase() + sampBaseName.substring(1)\r\n ) +\r\n \" - \" +\r\n targetPath\r\n );\r\n content.push(\"\");\r\n }\r\n }\r\n\r\n if (sampleArr.length > 1) {\r\n content.push(\" * At \" + sample.path + \": \");\r\n }\r\n\r\n linesAdded.push(line);\r\n content.push(line);\r\n samplesAdded++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n content.push(\" */\");\r\n content.push(\"\\r\\nimport * as jsoncommon from './\" + \"../\".repeat(folderDepth) + \"jsoncommon';\\r\\n\");\r\n\r\n await this.appendType(form, content, 0);\r\n\r\n dtsFile.setContent(content.join(\"\\r\\n\"));\r\n\r\n await dtsFile.saveContent();\r\n }\r\n\r\n public static sanitizeDescription(description: string) {\r\n description = description.trim();\r\n\r\n description = Utilities.ensureFirstCharIsUpperCase(description);\r\n\r\n if (description.length > 10 && !description.endsWith(\".\") && !description.endsWith(\":\")) {\r\n description += \".\";\r\n }\r\n\r\n return description;\r\n }\r\n\r\n public getFileNameFromJsonKey(key: string) {\r\n key = key.toLowerCase();\r\n\r\n key = key.replace(/ /gi, \"_\");\r\n key = key.replace(/::/gi, \"_\");\r\n key = key.replace(/:/gi, \"_\");\r\n\r\n return key;\r\n }\r\n\r\n public async appendType(form: IFormDefinition, content: string[], depth: number, altTitle?: string) {\r\n content.push(\"/**\");\r\n\r\n let typeName = altTitle ? altTitle : form.id ? form.id : form.title;\r\n\r\n if (!typeName) {\r\n Log.unexpectedUndefined(\"Type: \" + JSON.stringify(form));\r\n return;\r\n }\r\n\r\n typeName = Utilities.javascriptifyName(typeName, true);\r\n\r\n if (form.title) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n form.title + (form.id ? \" (\" + form.id + \")\" : \"\"),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.description) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n FormDefinitionTypeScriptGenerator.sanitizeDescription(form.description),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note2) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note2),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note3) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note3),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.isDeprecated) {\r\n content.push(\" * IMPORTANT\");\r\n content.push(\" * This type is now deprecated, and no longer in use in the latest versions of Minecraft.\");\r\n content.push(\" * \");\r\n }\r\n\r\n if (form.isInternal) {\r\n content.push(\" * IMPORTANT\");\r\n content.push(\r\n \" * This type is internal to vanilla Minecraft usage, and is not functional or supported within custom Minecraft content.\"\r\n );\r\n content.push(\" * \");\r\n }\r\n\r\n const scalarField = DataFormUtilities.getScalarField(form);\r\n\r\n if (scalarField) {\r\n content.push(\" * NOTE: Alternate Simple Representations\\r\\n\");\r\n\r\n for (const scalarFieldInst of DataFormUtilities.getFieldAndAlternates(scalarField)) {\r\n content.push(\r\n \" * This can also be represent as a simple `\" +\r\n DataFormUtilities.getFieldTypeDescription(scalarFieldInst.dataType) +\r\n \"`.\"\r\n );\r\n }\r\n\r\n content.push(\"\");\r\n }\r\n content.push(\" */\");\r\n\r\n const subContent: string[] = [];\r\n\r\n content.push(\"export \" + (depth === 0 ? \"default \" : \"\") + \"interface \" + typeName + \" {\");\r\n content.push(\"\");\r\n\r\n const fieldsAdded: { [keyName: string]: boolean } = {};\r\n\r\n if (form.fields && form.fields.length > 0) {\r\n form.fields.sort((a: IField, b: IField) => {\r\n return a.id.localeCompare(b.id);\r\n });\r\n\r\n for (const field of form.fields) {\r\n let fieldName = field.id ? field.id : field.title;\r\n\r\n if (!fieldName) {\r\n Log.unexpectedUndefined(\"Field: \" + JSON.stringify(field));\r\n return;\r\n }\r\n\r\n fieldName = Utilities.sanitizeJavascriptName(fieldName);\r\n\r\n if (fieldName.length > 0 && !fieldsAdded[fieldName]) {\r\n fieldsAdded[fieldName] = true;\r\n\r\n if (field.description || field.samples) {\r\n content.push(\" /**\");\r\n content.push(\" * @remarks\");\r\n\r\n if (field.description) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(content, field.description, 60, 3);\r\n }\r\n\r\n if (field.samples) {\r\n let samplesAdded = 0;\r\n let renderedHeader = false;\r\n const samplesUsed: string[] = [];\r\n\r\n for (const samplePath in field.samples) {\r\n let sampleArr = field.samples[samplePath];\r\n\r\n if (sampleArr && samplesAdded < 3) {\r\n const sampleSet: { [id: string]: string } = {};\r\n\r\n for (const sample of sampleArr) {\r\n const sampleVal = JSON.stringify(sample.content);\r\n\r\n if (!samplesUsed.includes(sampleVal)) {\r\n samplesUsed.push(sampleVal);\r\n const baseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(samplePath));\r\n\r\n samplesAdded++;\r\n\r\n const key = baseName.substring(0, 1).toUpperCase() + baseName.substring(1);\r\n\r\n if (!sampleSet[key]) {\r\n sampleSet[key] = sampleVal;\r\n } else {\r\n sampleSet[key] = sampleSet[key] + \", \" + sampleVal;\r\n }\r\n }\r\n }\r\n\r\n if (samplesAdded > 0) {\r\n if (!renderedHeader) {\r\n renderedHeader = true;\r\n\r\n content.push(\" * \");\r\n content.push(\" * Sample Values:\");\r\n }\r\n\r\n for (const key in sampleSet) {\r\n content.push(\r\n \" * \" + Utilities.humanifyMinecraftName(key) + \": \" + this.sanitizeForTable(sampleSet[key])\r\n );\r\n }\r\n }\r\n\r\n content.push(\" *\");\r\n }\r\n }\r\n }\r\n\r\n content.push(\" */\");\r\n }\r\n\r\n let fieldTypeName = typeName + Utilities.javascriptifyName(Utilities.ensureFirstCharIsUpperCase(fieldName));\r\n\r\n let subForm = field.subForm;\r\n\r\n if (!subForm && field.subFormId) {\r\n subForm = await Database.ensureFormLoadedByPath(field.subFormId);\r\n }\r\n\r\n if (subForm) {\r\n subContent.push(\"\\r\\n\");\r\n\r\n await this.appendType(subForm, subContent, depth + 1, fieldTypeName);\r\n } else if (field.choices) {\r\n const choices = field.choices;\r\n subContent.push(\"\\r\\n\");\r\n\r\n if (choices.length > 0) {\r\n await this.appendEnum(form, subContent, choices, depth + 1, fieldTypeName);\r\n }\r\n } else {\r\n fieldTypeName = \"object\";\r\n }\r\n\r\n let propLine = \" \" + fieldName + \": \";\r\n\r\n if (!field.alternates) {\r\n propLine += FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(field, fieldTypeName);\r\n } else {\r\n propLine += FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(field, fieldTypeName);\r\n\r\n for (const altField of field.alternates) {\r\n let descri = FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(altField, fieldTypeName);\r\n\r\n if (!propLine.indexOf(descri)) {\r\n propLine += \" | \" + descri;\r\n }\r\n }\r\n }\r\n\r\n propLine += \";\";\r\n\r\n content.push(propLine);\r\n content.push(\"\");\r\n }\r\n }\r\n }\r\n\r\n content.push(\"}\");\r\n content.push(...subContent);\r\n }\r\n\r\n public async appendEnum(\r\n form: IFormDefinition,\r\n content: string[],\r\n choices: ISimpleReference[],\r\n depth: number,\r\n typeTitle: string\r\n ) {\r\n content.push(\"export enum \" + typeTitle + \" {\");\r\n\r\n const choicesAdded: { [name: string]: boolean } = {};\r\n\r\n for (let i = 0; i < choices.length; i++) {\r\n const choice = choices[i];\r\n let choiceName = choice.id ? choice.id : choice.title;\r\n if (!choiceName) {\r\n Log.unexpectedUndefined(\"Choice: \" + JSON.stringify(form));\r\n return;\r\n } else {\r\n choiceName = choiceName.toString();\r\n\r\n const choiceNameJs = Utilities.javascriptifyName(Utilities.sanitizeJavascriptName(choiceName), true);\r\n\r\n if (!choicesAdded[choiceNameJs]) {\r\n choicesAdded[choiceNameJs] = true;\r\n\r\n if (choice.description) {\r\n content.push(\" /**\");\r\n content.push(\" * @remarks\");\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(content, choice.description, 60, 3);\r\n content.push(\" */\");\r\n }\r\n\r\n content.push(\" \" + choiceNameJs + \" = \" + \"`\" + choiceName + \"`\" + (i < choices.length - 1 ? \",\" : \"\"));\r\n }\r\n }\r\n }\r\n\r\n content.push(\"}\");\r\n }\r\n\r\n public static appendLongTextWithAsterisks(\r\n content: string[],\r\n text: string,\r\n maxLineLength: number,\r\n asteriskSpacing: number\r\n ) {\r\n const lines = this.splitIntoLines(text, maxLineLength);\r\n\r\n for (const line of lines) {\r\n const asterisks = \" \".repeat(asteriskSpacing) + \"* \";\r\n\r\n content.push(asterisks + line);\r\n }\r\n }\r\n\r\n public static splitIntoLines(value: string, maxLineLength: number) {\r\n const lines: string[] = [];\r\n\r\n const words = value.split(\" \");\r\n\r\n let curLine = \"\";\r\n for (let i = 0; i < words.length - 1; i++) {\r\n const nextWord = words[i + 1];\r\n\r\n if (curLine.length + nextWord.length > maxLineLength) {\r\n lines.push(curLine + words[i]);\r\n curLine = \"\";\r\n } else {\r\n curLine += words[i] + \" \";\r\n }\r\n }\r\n\r\n if (curLine.length + words[words.length - 1].length > maxLineLength) {\r\n lines.push(curLine);\r\n lines.push(words[words.length - 1]);\r\n } else {\r\n lines.push(curLine + words[words.length - 1]);\r\n }\r\n\r\n return lines;\r\n }\r\n\r\n public getValueAsString(value: any) {\r\n if (Array.isArray(value)) {\r\n let result = \"[\";\r\n\r\n let index = 0;\r\n for (const subVal of value) {\r\n if (index > 0) {\r\n result += \", \";\r\n }\r\n\r\n result += subVal.toString();\r\n\r\n index++;\r\n }\r\n return result + \"]\";\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n public sanitizeForTable(value: string) {\r\n value = value.replace(/\\\\r/gi, \" \");\r\n value = value.replace(/\\\\t/gi, \" \");\r\n value = value.replace(/\\\\n/gi, \"<br>\");\r\n value = value.replace(/\\\\\"/gi, '\"');\r\n value = value.replace(/\\r/gi, \" \");\r\n value = value.replace(/\\n/gi, \"<br>\");\r\n value = value.replace(/ /gi, \" \");\r\n value = value.replace(/ /gi, \" \");\r\n value = value.trim();\r\n\r\n return value;\r\n }\r\n\r\n static getTypeScriptFieldTypeDescription(field: IField, objectTypeName: string) {\r\n let strDescription = \"string\";\r\n\r\n if (field.choices) {\r\n if (field.mustMatchChoices) {\r\n strDescription = objectTypeName;\r\n } else {\r\n strDescription = objectTypeName + \"| string\";\r\n }\r\n }\r\n\r\n switch (field.dataType) {\r\n case FieldDataType.int:\r\n return \"number\";\r\n case FieldDataType.boolean:\r\n return \"boolean\";\r\n case FieldDataType.float:\r\n return \"number\";\r\n case FieldDataType.stringEnum:\r\n return strDescription;\r\n case FieldDataType.intEnum:\r\n return \"number\";\r\n case FieldDataType.intBoolean:\r\n return \"boolean\";\r\n case FieldDataType.number:\r\n return \"number\";\r\n case FieldDataType.long:\r\n return \"number\";\r\n case FieldDataType.stringLookup:\r\n return strDescription;\r\n case FieldDataType.intValueLookup:\r\n return \"number\";\r\n case FieldDataType.point3:\r\n return \"number[]\";\r\n case FieldDataType.intPoint3:\r\n return \"number[]\";\r\n case FieldDataType.longFormString:\r\n return strDescription;\r\n case FieldDataType.keyedObjectCollection:\r\n return \"{ [key: string]: any }\";\r\n case FieldDataType.objectArray:\r\n return (objectTypeName ? objectTypeName : \"object\") + \"[]\";\r\n case FieldDataType.object:\r\n return objectTypeName ? objectTypeName : \"object\";\r\n case FieldDataType.stringArray:\r\n return \"string[]\";\r\n case FieldDataType.intRange:\r\n return \"number[]\";\r\n case FieldDataType.floatRange:\r\n return \"number[]\";\r\n case FieldDataType.minecraftFilter:\r\n return \"jsoncommon.MinecraftFilter\";\r\n case FieldDataType.percentRange:\r\n return \"number[]\";\r\n case FieldDataType.minecraftEventTrigger:\r\n return \"jsoncommon.MinecraftEventTrigger\";\r\n case FieldDataType.longFormStringArray:\r\n return strDescription + \"[]\";\r\n case FieldDataType.keyedStringCollection:\r\n return \"{ [key: string]: \" + strDescription + \" }\";\r\n case FieldDataType.version:\r\n return \"string | number[]\";\r\n case FieldDataType.uuid:\r\n return \"string\";\r\n case FieldDataType.keyedBooleanCollection:\r\n return \"{ [key: string]: boolean }\";\r\n case FieldDataType.keyedStringArrayCollection:\r\n return \"{ [key: string]: \" + strDescription + \"[] }\";\r\n case FieldDataType.arrayOfKeyedStringCollection:\r\n return \"{ [key: string]: \" + strDescription + \"[] }[]\";\r\n case FieldDataType.keyedKeyedStringArrayCollection:\r\n return \"{ [key: string]: { [key: string]: string[] } }\";\r\n case FieldDataType.keyedNumberCollection:\r\n return \"{ [key: string]: number }\";\r\n case FieldDataType.keyedNumberArrayCollection:\r\n return \"{ [key: string]: number[] }\";\r\n case FieldDataType.numberArray:\r\n return \"number[]\";\r\n case FieldDataType.point2:\r\n return \"number[]\";\r\n case FieldDataType.localizableString:\r\n return \"string\";\r\n case FieldDataType.string:\r\n return \"string\";\r\n case FieldDataType.molang:\r\n return \"string\";\r\n case FieldDataType.molangArray:\r\n return \"string[]\";\r\n default:\r\n return strDescription;\r\n }\r\n }\r\n public getMarkdownBookmark(id: string) {\r\n return id.toLowerCase().replace(/ /gi, \"-\");\r\n }\r\n\r\n public getFormsFromFilter(formsByPath: { [name: string]: IFormDefinition }, formsPath: string, mode: ExportMode) {\r\n const filteredList: { [name: string]: IFormDefinition } = {};\r\n\r\n for (const formPath in formsByPath) {\r\n let includeFile = true;\r\n\r\n if (\r\n formPath.indexOf(\"index\") >= 0 ||\r\n formPath.indexOf(\"overview\") >= 0 ||\r\n formPath.indexOf(\"describes\") >= 0 ||\r\n formPath.indexOf(\"versioned\") >= 0\r\n ) {\r\n includeFile = false;\r\n }\r\n\r\n if (\r\n includeFile &&\r\n formPath.toLowerCase().startsWith(formsPath) &&\r\n formsByPath[formPath] &&\r\n (formsPath.indexOf(\"behavior\") >= 0 || formPath.indexOf(\"behavior\") < 0) &&\r\n (formsPath.indexOf(\"_on\") >= 0 || formPath.indexOf(\"minecraft_on\") < 0)\r\n ) {\r\n filteredList[formPath] = formsByPath[formPath];\r\n }\r\n }\r\n\r\n return filteredList;\r\n }\r\n\r\n public async loadFormJsonFromFolder(\r\n formsByPath: { [name: string]: IFormDefinition },\r\n inputFolder: IFolder,\r\n outputFolder: IFolder\r\n ) {\r\n await inputFolder.load();\r\n\r\n const fileList: IIndexJson = { files: [], folders: [] };\r\n\r\n for (const folderName in inputFolder.folders) {\r\n const folder = inputFolder.folders[folderName];\r\n\r\n if (folder) {\r\n await this.loadFormJsonFromFolder(formsByPath, folder, outputFolder.ensureFolder(folderName));\r\n\r\n fileList.folders.push(folderName);\r\n }\r\n }\r\n\r\n for (const fileName in inputFolder.files) {\r\n const file = inputFolder.files[fileName];\r\n\r\n if (file) {\r\n await file.loadContent();\r\n\r\n const jsonO = StorageUtilities.getJsonObject(file);\r\n\r\n if (jsonO) {\r\n formsByPath[file.storageRelativePath] = jsonO;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/docgen/FormDefinitionTypeScriptGenerator.ts"],"names":[],"mappings":"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","file":"../../docgen/FormDefinitionTypeScriptGenerator.js","sourcesContent":["import Utilities from \"../core/Utilities\";\r\nimport IFormDefinition from \"../dataform/IFormDefinition\";\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport IIndexJson from \"../storage/IIndexJson\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport DataFormUtilities from \"../dataform/DataFormUtilities\";\r\nimport IField, { FieldDataType } from \"../dataform/IField\";\r\nimport EntityTypeDefinition from \"../minecraft/EntityTypeDefinition\";\r\nimport Database from \"../minecraft/Database\";\r\nimport Log from \"../core/Log\";\r\nimport ISimpleReference from \"../core/ISimpleReference\";\r\n\r\nexport enum ExportMode {\r\n other = 0,\r\n triggers = 1,\r\n blockComponents = 2,\r\n itemComponents = 3,\r\n entityComponents = 4,\r\n AIGoals = 5,\r\n visuals = 6,\r\n fogs = 7,\r\n websockets = 8,\r\n filters = 9,\r\n MCToolsVal = 10,\r\n eventResponses = 11,\r\n clientBiomes = 12,\r\n biomes = 13,\r\n features = 14,\r\n featureCore = 15,\r\n clientDeferredRendering = 16,\r\n}\r\n\r\nexport default class FormDefinitionTypeScriptGenerator {\r\n public async generateTypes(formJsonInputFolder: IFolder, outputFolder: IFolder) {\r\n const formsByPath: { [name: string]: IFormDefinition } = {};\r\n\r\n await this.loadFormJsonFromFolder(formsByPath, formJsonInputFolder, outputFolder);\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.features,\r\n \"/features/\",\r\n \"/features/minecraft_\",\r\n \"Feature\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.featureCore,\r\n \"/features/\",\r\n \"/feature/feature\",\r\n \"Feature Rule\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.AIGoals,\r\n \"/entity/\",\r\n \"/entity/minecraft_behavior\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.visuals, \"/visual/\", \"/visual/\", \"Visuals\");\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.fogs, \"/fogs/\", \"/fogs/\", \"Fogs\");\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/client_biome/\",\r\n \"/client_biome/\",\r\n \"Client Biomes\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/deferred_rendering/\",\r\n \"/client_deferred_rendering/\",\r\n \"Client Biomes\"\r\n );\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.websockets,\r\n \"/websockets/\",\r\n \"/websockets/\",\r\n \"Websockets\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.triggers,\r\n \"/entity/entityTriggers/\",\r\n \"/entity/minecraft_on\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.filters,\r\n \"/entity/filters/\",\r\n \"/entityfilters/\",\r\n \"Entity Filters\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.eventResponses,\r\n \"/entity/eventActions/\",\r\n \"/entityevents/\",\r\n \"Entity Actions\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.blockComponents,\r\n \"/block/blockComponents/\",\r\n \"/block/minecraft_\",\r\n \"Block Components\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.itemComponents,\r\n \"/item/itemComponents/\",\r\n \"/item/minecraft_\",\r\n \"Items\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.entityComponents,\r\n \"/entity/entityComponents/\",\r\n \"/entity/minecraft_\",\r\n \"Entity\"\r\n );\r\n\r\n this.exportTypeScriptDocs(\r\n formsByPath,\r\n outputFolder,\r\n ExportMode.clientBiomes,\r\n \"/clientBiomes/components/\",\r\n \"/clientbiome/\",\r\n \"Client Biome\"\r\n );\r\n\r\n this.exportTypeScriptDocs(formsByPath, outputFolder, ExportMode.biomes, \"/biomes/components/\", \"/biome/\", \"Biome\");\r\n }\r\n\r\n private getFileNameFromBaseName(baseName: string, exportMode: ExportMode) {\r\n let fileName = baseName;\r\n\r\n return fileName;\r\n }\r\n\r\n public async exportTypeScriptDocs(\r\n formsByPath: { [name: string]: IFormDefinition },\r\n outputFolder: IFolder,\r\n exportMode: ExportMode,\r\n subFolderPath: string,\r\n formsPath: string,\r\n categoryPlural: string\r\n ) {\r\n const targetFolder = await outputFolder.ensureFolderFromRelativePath(subFolderPath);\r\n\r\n if (!targetFolder) {\r\n return;\r\n }\r\n\r\n let hasEnsuredFolder = false;\r\n\r\n formsByPath = this.getFormsFromFilter(formsByPath, formsPath, exportMode);\r\n\r\n for (const formPath in formsByPath) {\r\n const formO = formsByPath[formPath];\r\n\r\n if (formO) {\r\n let baseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(formPath));\r\n\r\n if (baseName.endsWith(\".form\")) {\r\n baseName = baseName.substring(0, baseName.length - 5);\r\n }\r\n\r\n if (!hasEnsuredFolder) {\r\n await targetFolder.ensureExists();\r\n hasEnsuredFolder = true;\r\n }\r\n\r\n let typeName = formO.id ? formO.id : formO.title;\r\n\r\n if (!typeName) {\r\n Log.unexpectedUndefined(\"Form: \" + baseName);\r\n return;\r\n }\r\n\r\n typeName = Utilities.javascriptifyName(typeName, true);\r\n\r\n let fileName = this.getFileNameFromBaseName(typeName, exportMode);\r\n\r\n const markdownFile = targetFolder.ensureFile(fileName + \".d.ts\");\r\n\r\n await this.saveFormDefinitionTypeScriptDocForm(\r\n markdownFile,\r\n formO,\r\n baseName,\r\n exportMode,\r\n categoryPlural,\r\n Utilities.countChar(subFolderPath, \"/\")\r\n );\r\n }\r\n }\r\n }\r\n\r\n public async saveFormDefinitionTypeScriptDocForm(\r\n dtsFile: IFile,\r\n form: IFormDefinition,\r\n baseName: string,\r\n exportMode: ExportMode,\r\n category: string,\r\n folderDepth: number\r\n ) {\r\n const content: string[] = [];\r\n\r\n let canonName = \"minecraft:\" + EntityTypeDefinition.getComponentFromBaseFileName(baseName);\r\n\r\n if (exportMode === ExportMode.websockets && form.id) {\r\n canonName = form.id;\r\n }\r\n\r\n content.push(\"// Copyright (c) Microsoft Corporation.\");\r\n content.push(\"// Licensed under the MIT License.\");\r\n content.push(\"// Type definitions for working with Minecraft Bedrock Edition pack JSON schemas.\");\r\n content.push(\"// Project: https://learn.microsoft.com/minecraft/creator/\");\r\n content.push(\"\");\r\n\r\n content.push(\"/**\");\r\n content.push(\" * @packageDocumentation\");\r\n content.push(\" * Contains types for working with various Minecraft Bedrock Edition JSON schemas.\");\r\n content.push(\" * \");\r\n content.push(\" * \" + category + \" Documentation - \" + canonName);\r\n\r\n if (form.samples) {\r\n content.push(\" * \");\r\n content.push(\" * \" + canonName + \" Samples\");\r\n let samplesAdded = 0;\r\n const linesAdded: string[] = [];\r\n\r\n for (const samplePath in form.samples) {\r\n let sampleArr = form.samples[samplePath];\r\n let addedHeader = false;\r\n\r\n if (sampleArr && samplesAdded < 12) {\r\n const sampBaseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(samplePath));\r\n\r\n let targetPath = samplePath;\r\n\r\n for (const sample of sampleArr) {\r\n let line = \"\";\r\n\r\n if (\r\n baseName.startsWith(\"minecraft_\") &&\r\n (typeof sample.content !== \"string\" || !sample.content.startsWith(\"minecraft:\"))\r\n ) {\r\n line += '\"' + canonName + '\": ';\r\n }\r\n\r\n if (typeof sample.content === \"object\" || Array.isArray(sample.content)) {\r\n line += JSON.stringify(sample.content, undefined, 2) + \"\\r\\n\";\r\n } else {\r\n if (typeof sample.content === \"string\") {\r\n let cont = sample.content.trim();\r\n\r\n if (cont.startsWith(\"{\") && cont.endsWith(\"}\")) {\r\n line += cont;\r\n } else {\r\n line += '\"' + cont;\r\n }\r\n } else {\r\n line += sample.content;\r\n }\r\n }\r\n\r\n if (!linesAdded.includes(line)) {\r\n if (!addedHeader) {\r\n addedHeader = true;\r\n\r\n if (targetPath !== \"samples\" && targetPath !== \"sample\") {\r\n if (targetPath.startsWith(\"/vanilla\")) {\r\n targetPath = \"https://github.com/Mojang/bedrock-samples/tree/preview\" + targetPath.substring(8);\r\n } else if (targetPath.startsWith(\"/samples\")) {\r\n targetPath = \"https://github.com/microsoft/minecraft-samples/tree/main\" + targetPath.substring(8);\r\n }\r\n\r\n content.push(\"\");\r\n content.push(\r\n Utilities.humanifyMinecraftName(\r\n sampBaseName.substring(0, 1).toUpperCase() + sampBaseName.substring(1)\r\n ) +\r\n \" - \" +\r\n targetPath\r\n );\r\n content.push(\"\");\r\n }\r\n }\r\n\r\n if (sampleArr.length > 1) {\r\n content.push(\" * At \" + sample.path + \": \");\r\n }\r\n\r\n linesAdded.push(line);\r\n content.push(line);\r\n samplesAdded++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n content.push(\" */\");\r\n content.push(\"\\r\\nimport * as jsoncommon from './\" + \"../\".repeat(folderDepth) + \"jsoncommon';\\r\\n\");\r\n\r\n await this.appendType(form, content, 0);\r\n\r\n dtsFile.setContent(content.join(\"\\r\\n\"));\r\n\r\n await dtsFile.saveContent();\r\n }\r\n\r\n public static sanitizeDescription(description: string) {\r\n description = description.trim();\r\n\r\n description = Utilities.ensureFirstCharIsUpperCase(description);\r\n\r\n if (description.length > 10 && !description.endsWith(\".\") && !description.endsWith(\":\")) {\r\n description += \".\";\r\n }\r\n\r\n return description;\r\n }\r\n\r\n public getFileNameFromJsonKey(key: string) {\r\n key = key.toLowerCase();\r\n\r\n key = key.replace(/ /gi, \"_\");\r\n key = key.replace(/::/gi, \"_\");\r\n key = key.replace(/:/gi, \"_\");\r\n\r\n return key;\r\n }\r\n\r\n public async appendType(form: IFormDefinition, content: string[], depth: number, altTitle?: string) {\r\n content.push(\"/**\");\r\n\r\n let typeName = altTitle ? altTitle : form.id ? form.id : form.title;\r\n\r\n if (!typeName) {\r\n Log.unexpectedUndefined(\"Type: \" + JSON.stringify(form));\r\n return;\r\n }\r\n\r\n typeName = Utilities.javascriptifyName(typeName, true);\r\n\r\n if (form.title) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n form.title + (form.id ? \" (\" + form.id + \")\" : \"\"),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.description) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n FormDefinitionTypeScriptGenerator.sanitizeDescription(form.description),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note2) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note2),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.note3) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(\r\n content,\r\n \"Note: \" + FormDefinitionTypeScriptGenerator.sanitizeDescription(form.note3),\r\n 60,\r\n 1\r\n );\r\n }\r\n\r\n if (form.isDeprecated) {\r\n content.push(\" * IMPORTANT\");\r\n content.push(\" * This type is now deprecated, and no longer in use in the latest versions of Minecraft.\");\r\n content.push(\" * \");\r\n }\r\n\r\n if (form.isInternal) {\r\n content.push(\" * IMPORTANT\");\r\n content.push(\r\n \" * This type is internal to vanilla Minecraft usage, and is not functional or supported within custom Minecraft content.\"\r\n );\r\n content.push(\" * \");\r\n }\r\n\r\n const scalarField = DataFormUtilities.getScalarField(form);\r\n\r\n if (scalarField) {\r\n content.push(\" * NOTE: Alternate Simple Representations\\r\\n\");\r\n\r\n for (const scalarFieldInst of DataFormUtilities.getFieldAndAlternates(scalarField)) {\r\n content.push(\r\n \" * This can also be represent as a simple `\" +\r\n DataFormUtilities.getFieldTypeDescription(scalarFieldInst.dataType) +\r\n \"`.\"\r\n );\r\n }\r\n\r\n content.push(\"\");\r\n }\r\n content.push(\" */\");\r\n\r\n const subContent: string[] = [];\r\n\r\n content.push(\"export \" + (depth === 0 ? \"default \" : \"\") + \"interface \" + typeName + \" {\");\r\n content.push(\"\");\r\n\r\n const fieldsAdded: { [keyName: string]: boolean } = {};\r\n\r\n if (form.fields && form.fields.length > 0) {\r\n form.fields.sort((a: IField, b: IField) => {\r\n return a.id.localeCompare(b.id);\r\n });\r\n\r\n for (const field of form.fields) {\r\n let fieldName = field.id ? field.id : field.title;\r\n\r\n if (!fieldName) {\r\n Log.unexpectedUndefined(\"Field: \" + JSON.stringify(field));\r\n return;\r\n }\r\n\r\n fieldName = Utilities.sanitizeJavascriptName(fieldName);\r\n\r\n if (fieldName.length > 0 && !fieldsAdded[fieldName]) {\r\n fieldsAdded[fieldName] = true;\r\n\r\n if (field.description || field.samples) {\r\n content.push(\" /**\");\r\n content.push(\" * @remarks\");\r\n\r\n if (field.description) {\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(content, field.description, 60, 3);\r\n }\r\n\r\n if (field.samples) {\r\n let samplesAdded = 0;\r\n let renderedHeader = false;\r\n const samplesUsed: string[] = [];\r\n\r\n for (const samplePath in field.samples) {\r\n let sampleArr = field.samples[samplePath];\r\n\r\n if (sampleArr && samplesAdded < 3) {\r\n const sampleSet: { [id: string]: string } = {};\r\n\r\n for (const sample of sampleArr) {\r\n const sampleVal = JSON.stringify(sample.content);\r\n\r\n if (!samplesUsed.includes(sampleVal)) {\r\n samplesUsed.push(sampleVal);\r\n const baseName = StorageUtilities.getBaseFromName(StorageUtilities.getLeafName(samplePath));\r\n\r\n samplesAdded++;\r\n\r\n const key = baseName.substring(0, 1).toUpperCase() + baseName.substring(1);\r\n\r\n if (!sampleSet[key]) {\r\n sampleSet[key] = sampleVal;\r\n } else {\r\n sampleSet[key] = sampleSet[key] + \", \" + sampleVal;\r\n }\r\n }\r\n }\r\n\r\n if (samplesAdded > 0) {\r\n if (!renderedHeader) {\r\n renderedHeader = true;\r\n\r\n content.push(\" * \");\r\n content.push(\" * Sample Values:\");\r\n }\r\n\r\n for (const key in sampleSet) {\r\n content.push(\r\n \" * \" + Utilities.humanifyMinecraftName(key) + \": \" + this.sanitizeForTable(sampleSet[key])\r\n );\r\n }\r\n }\r\n\r\n content.push(\" *\");\r\n }\r\n }\r\n }\r\n\r\n content.push(\" */\");\r\n }\r\n\r\n let fieldTypeName = typeName + Utilities.javascriptifyName(Utilities.ensureFirstCharIsUpperCase(fieldName));\r\n\r\n let subForm = field.subForm;\r\n\r\n if (!subForm && field.subFormId) {\r\n subForm = await Database.ensureFormLoadedByPath(field.subFormId);\r\n }\r\n\r\n if (subForm) {\r\n subContent.push(\"\\r\\n\");\r\n\r\n await this.appendType(subForm, subContent, depth + 1, fieldTypeName);\r\n } else if (field.choices) {\r\n const choices = field.choices;\r\n subContent.push(\"\\r\\n\");\r\n\r\n if (choices.length > 0) {\r\n await this.appendEnum(form, subContent, choices, depth + 1, fieldTypeName);\r\n }\r\n } else {\r\n fieldTypeName = \"object\";\r\n }\r\n\r\n let propLine = \" \" + fieldName + \": \";\r\n\r\n if (!field.alternates) {\r\n propLine += FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(field, fieldTypeName);\r\n } else {\r\n propLine += FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(field, fieldTypeName);\r\n\r\n for (const altField of field.alternates) {\r\n let descri = FormDefinitionTypeScriptGenerator.getTypeScriptFieldTypeDescription(altField, fieldTypeName);\r\n\r\n if (!propLine.indexOf(descri)) {\r\n propLine += \" | \" + descri;\r\n }\r\n }\r\n }\r\n\r\n propLine += \";\";\r\n\r\n content.push(propLine);\r\n content.push(\"\");\r\n }\r\n }\r\n }\r\n\r\n content.push(\"}\");\r\n content.push(...subContent);\r\n }\r\n\r\n public async appendEnum(\r\n form: IFormDefinition,\r\n content: string[],\r\n choices: ISimpleReference[],\r\n depth: number,\r\n typeTitle: string\r\n ) {\r\n content.push(\"export enum \" + typeTitle + \" {\");\r\n\r\n const choicesAdded: { [name: string]: boolean } = {};\r\n\r\n for (let i = 0; i < choices.length; i++) {\r\n const choice = choices[i];\r\n let choiceName = choice.id ? choice.id : choice.title;\r\n if (!choiceName) {\r\n Log.unexpectedUndefined(\"Choice: \" + JSON.stringify(form));\r\n return;\r\n } else {\r\n choiceName = choiceName.toString();\r\n\r\n const choiceNameJs = Utilities.javascriptifyName(Utilities.sanitizeJavascriptName(choiceName), true);\r\n\r\n if (!choicesAdded[choiceNameJs]) {\r\n choicesAdded[choiceNameJs] = true;\r\n\r\n if (choice.description) {\r\n content.push(\" /**\");\r\n content.push(\" * @remarks\");\r\n FormDefinitionTypeScriptGenerator.appendLongTextWithAsterisks(content, choice.description, 60, 3);\r\n content.push(\" */\");\r\n }\r\n\r\n content.push(\" \" + choiceNameJs + \" = \" + \"`\" + choiceName + \"`\" + (i < choices.length - 1 ? \",\" : \"\"));\r\n }\r\n }\r\n }\r\n\r\n content.push(\"}\");\r\n }\r\n\r\n public static appendLongTextWithAsterisks(\r\n content: string[],\r\n text: string,\r\n maxLineLength: number,\r\n asteriskSpacing: number\r\n ) {\r\n const lines = this.splitIntoLines(text, maxLineLength);\r\n\r\n for (const line of lines) {\r\n const asterisks = \" \".repeat(asteriskSpacing) + \"* \";\r\n\r\n content.push(asterisks + line);\r\n }\r\n }\r\n\r\n public static splitIntoLines(value: string, maxLineLength: number) {\r\n const lines: string[] = [];\r\n\r\n const words = value.split(\" \");\r\n\r\n let curLine = \"\";\r\n for (let i = 0; i < words.length - 1; i++) {\r\n const nextWord = words[i + 1];\r\n\r\n if (curLine.length + nextWord.length > maxLineLength) {\r\n lines.push(curLine + words[i]);\r\n curLine = \"\";\r\n } else {\r\n curLine += words[i] + \" \";\r\n }\r\n }\r\n\r\n if (curLine.length + words[words.length - 1].length > maxLineLength) {\r\n lines.push(curLine);\r\n lines.push(words[words.length - 1]);\r\n } else {\r\n lines.push(curLine + words[words.length - 1]);\r\n }\r\n\r\n return lines;\r\n }\r\n\r\n public getValueAsString(value: any) {\r\n if (Array.isArray(value)) {\r\n let result = \"[\";\r\n\r\n let index = 0;\r\n for (const subVal of value) {\r\n if (index > 0) {\r\n result += \", \";\r\n }\r\n\r\n result += subVal.toString();\r\n\r\n index++;\r\n }\r\n return result + \"]\";\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n public sanitizeForTable(value: string) {\r\n value = value.replace(/\\\\r/gi, \" \");\r\n value = value.replace(/\\\\t/gi, \" \");\r\n value = value.replace(/\\\\n/gi, \"<br>\");\r\n value = value.replace(/\\\\\"/gi, '\"');\r\n value = value.replace(/\\r/gi, \" \");\r\n value = value.replace(/\\n/gi, \"<br>\");\r\n value = value.replace(/ /gi, \" \");\r\n value = value.replace(/ /gi, \" \");\r\n value = value.trim();\r\n\r\n return value;\r\n }\r\n\r\n static getTypeScriptFieldTypeDescription(field: IField, objectTypeName: string) {\r\n let strDescription = \"string\";\r\n\r\n if (field.choices) {\r\n if (field.mustMatchChoices) {\r\n strDescription = objectTypeName;\r\n } else {\r\n strDescription = objectTypeName + \"| string\";\r\n }\r\n }\r\n\r\n switch (field.dataType) {\r\n case FieldDataType.int:\r\n return \"number\";\r\n case FieldDataType.boolean:\r\n return \"boolean\";\r\n case FieldDataType.float:\r\n return \"number\";\r\n case FieldDataType.stringEnum:\r\n return strDescription;\r\n case FieldDataType.intEnum:\r\n return \"number\";\r\n case FieldDataType.intBoolean:\r\n return \"boolean\";\r\n case FieldDataType.number:\r\n return \"number\";\r\n case FieldDataType.long:\r\n return \"number\";\r\n case FieldDataType.stringLookup:\r\n return strDescription;\r\n case FieldDataType.intValueLookup:\r\n return \"number\";\r\n case FieldDataType.point3:\r\n return \"number[]\";\r\n case FieldDataType.intPoint3:\r\n return \"number[]\";\r\n case FieldDataType.longFormString:\r\n return strDescription;\r\n case FieldDataType.keyedObjectCollection:\r\n return \"{ [key: string]: any }\";\r\n case FieldDataType.objectArray:\r\n return (objectTypeName ? objectTypeName : \"object\") + \"[]\";\r\n case FieldDataType.object:\r\n return objectTypeName ? objectTypeName : \"object\";\r\n case FieldDataType.stringArray:\r\n return \"string[]\";\r\n case FieldDataType.intRange:\r\n return \"number[]\";\r\n case FieldDataType.floatRange:\r\n return \"number[]\";\r\n case FieldDataType.minecraftFilter:\r\n return \"jsoncommon.MinecraftFilter\";\r\n case FieldDataType.percentRange:\r\n return \"number[]\";\r\n case FieldDataType.minecraftEventTrigger:\r\n return \"jsoncommon.MinecraftEventTrigger\";\r\n case FieldDataType.minecraftEventReference:\r\n return \"string\";\r\n case FieldDataType.longFormStringArray:\r\n return strDescription + \"[]\";\r\n case FieldDataType.keyedStringCollection:\r\n return \"{ [key: string]: \" + strDescription + \" }\";\r\n case FieldDataType.version:\r\n return \"string | number[]\";\r\n case FieldDataType.uuid:\r\n return \"string\";\r\n case FieldDataType.keyedBooleanCollection:\r\n return \"{ [key: string]: boolean }\";\r\n case FieldDataType.keyedStringArrayCollection:\r\n return \"{ [key: string]: \" + strDescription + \"[] }\";\r\n case FieldDataType.arrayOfKeyedStringCollection:\r\n return \"{ [key: string]: \" + strDescription + \"[] }[]\";\r\n case FieldDataType.keyedKeyedStringArrayCollection:\r\n return \"{ [key: string]: { [key: string]: string[] } }\";\r\n case FieldDataType.keyedNumberCollection:\r\n return \"{ [key: string]: number }\";\r\n case FieldDataType.keyedNumberArrayCollection:\r\n return \"{ [key: string]: number[] }\";\r\n case FieldDataType.numberArray:\r\n return \"number[]\";\r\n case FieldDataType.point2:\r\n return \"number[]\";\r\n case FieldDataType.localizableString:\r\n return \"string\";\r\n case FieldDataType.string:\r\n return \"string\";\r\n case FieldDataType.molang:\r\n return \"string\";\r\n case FieldDataType.molangArray:\r\n return \"string[]\";\r\n default:\r\n return strDescription;\r\n }\r\n }\r\n public getMarkdownBookmark(id: string) {\r\n return id.toLowerCase().replace(/ /gi, \"-\");\r\n }\r\n\r\n public getFormsFromFilter(formsByPath: { [name: string]: IFormDefinition }, formsPath: string, mode: ExportMode) {\r\n const filteredList: { [name: string]: IFormDefinition } = {};\r\n\r\n for (const formPath in formsByPath) {\r\n let includeFile = true;\r\n\r\n if (\r\n formPath.indexOf(\"index\") >= 0 ||\r\n formPath.indexOf(\"overview\") >= 0 ||\r\n formPath.indexOf(\"describes\") >= 0 ||\r\n formPath.indexOf(\"versioned\") >= 0\r\n ) {\r\n includeFile = false;\r\n }\r\n\r\n if (\r\n includeFile &&\r\n formPath.toLowerCase().startsWith(formsPath) &&\r\n formsByPath[formPath] &&\r\n (formsPath.indexOf(\"behavior\") >= 0 || formPath.indexOf(\"behavior\") < 0) &&\r\n (formsPath.indexOf(\"_on\") >= 0 || formPath.indexOf(\"minecraft_on\") < 0)\r\n ) {\r\n filteredList[formPath] = formsByPath[formPath];\r\n }\r\n }\r\n\r\n return filteredList;\r\n }\r\n\r\n public async loadFormJsonFromFolder(\r\n formsByPath: { [name: string]: IFormDefinition },\r\n inputFolder: IFolder,\r\n outputFolder: IFolder\r\n ) {\r\n await inputFolder.load();\r\n\r\n const fileList: IIndexJson = { files: [], folders: [] };\r\n\r\n for (const folderName in inputFolder.folders) {\r\n const folder = inputFolder.folders[folderName];\r\n\r\n if (folder) {\r\n await this.loadFormJsonFromFolder(formsByPath, folder, outputFolder.ensureFolder(folderName));\r\n\r\n fileList.folders.push(folderName);\r\n }\r\n }\r\n\r\n for (const fileName in inputFolder.files) {\r\n const file = inputFolder.files[fileName];\r\n\r\n if (file) {\r\n await file.loadContent();\r\n\r\n const jsonO = StorageUtilities.getJsonObject(file);\r\n\r\n if (jsonO) {\r\n formsByPath[file.storageRelativePath] = jsonO;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|