periplus-map 0.2.1__py3-none-any.whl
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.
- periplus/__init__.py +70 -0
- periplus/checkmap.py +80 -0
- periplus/cli.py +658 -0
- periplus/contract/schema/map.schema.json +138 -0
- periplus/contract/schema/navigation.schema.json +200 -0
- periplus/contract/schema/pack-file.schema.json +1405 -0
- periplus/contract/schema/pack-manifest.schema.json +245 -0
- periplus/contract/schema/project-settings.schema.json +85 -0
- periplus/contract/spec/engine.md +151 -0
- periplus/contract/spec/rules.md +352 -0
- periplus/detect.py +228 -0
- periplus/engine/__init__.py +5 -0
- periplus/engine/check.py +481 -0
- periplus/engine/emit.py +368 -0
- periplus/engine/packload.py +2321 -0
- periplus/engine/pattern.py +27 -0
- periplus/engine/rules.py +1946 -0
- periplus/engine/select.py +491 -0
- periplus/engine/source.py +172 -0
- periplus/engine/tree.py +424 -0
- periplus/errors.py +332 -0
- periplus/init.py +358 -0
- periplus/layout.py +28 -0
- periplus/manifest.py +498 -0
- periplus/map.py +364 -0
- periplus/navigate/__init__.py +1 -0
- periplus/navigate/find.py +143 -0
- periplus/navigate/ids.py +30 -0
- periplus/navigate/listing.py +42 -0
- periplus/navigate/mapfile.py +189 -0
- periplus/navigate/path.py +175 -0
- periplus/navigate/show.py +175 -0
- periplus/navigate/types.py +83 -0
- periplus/navigate/walk.py +138 -0
- periplus/packs/advancedqueue_basic@0.0.1/pack.yaml +14 -0
- periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type.yaml +9 -0
- periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type_annotation.yaml +43 -0
- periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type_attribute.yaml +43 -0
- periplus/packs/ai_basic@0.0.1/ai_agent/ai_agent.yaml +8 -0
- periplus/packs/ai_basic@0.0.1/ai_agent/ai_agent_attribute.yaml +43 -0
- periplus/packs/ai_basic@0.0.1/ai_function_call/ai_function_call.yaml +8 -0
- periplus/packs/ai_basic@0.0.1/ai_function_call/ai_function_call_attribute.yaml +43 -0
- periplus/packs/ai_basic@0.0.1/pack.yaml +15 -0
- periplus/packs/config_pages_basic@0.0.1/bundle/config_pages_bundle_config.yaml +54 -0
- periplus/packs/config_pages_basic@0.0.1/pack.yaml +11 -0
- periplus/packs/crop_basic@0.0.1/bundle/crop_bundle_config.yaml +54 -0
- periplus/packs/crop_basic@0.0.1/pack.yaml +11 -0
- periplus/packs/drupal@0.1.0/block/block_placement.yaml +25 -0
- periplus/packs/drupal@0.1.0/block/block_placement_code.yaml +58 -0
- periplus/packs/drupal@0.1.0/block/block_placement_config.yaml +53 -0
- periplus/packs/drupal@0.1.0/block/block_plugin.yaml +52 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_altered.yaml +61 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_annotation.yaml +69 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_attribute.yaml +56 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_content.yaml +46 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_derived.yaml +110 -0
- periplus/packs/drupal@0.1.0/block/block_plugin_deriver.yaml +30 -0
- periplus/packs/drupal@0.1.0/block/block_type.yaml +14 -0
- periplus/packs/drupal@0.1.0/block/block_type_code.yaml +43 -0
- periplus/packs/drupal@0.1.0/block/block_type_config.yaml +45 -0
- periplus/packs/drupal@0.1.0/cache/cache.yaml +18 -0
- periplus/packs/drupal@0.1.0/cache/cache_backend.yaml +31 -0
- periplus/packs/drupal@0.1.0/component/sdc.yaml +19 -0
- periplus/packs/drupal@0.1.0/component/sdc_definition.yaml +25 -0
- periplus/packs/drupal@0.1.0/component/sdc_use.yaml +25 -0
- periplus/packs/drupal@0.1.0/config/config_object.yaml +65 -0
- periplus/packs/drupal@0.1.0/display/display.yaml +32 -0
- periplus/packs/drupal@0.1.0/display/display_code.yaml +53 -0
- periplus/packs/drupal@0.1.0/display/display_config.yaml +95 -0
- periplus/packs/drupal@0.1.0/entity/entity.yaml +33 -0
- periplus/packs/drupal@0.1.0/entity/entity_class.yaml +60 -0
- periplus/packs/drupal@0.1.0/entity/entity_save.yaml +27 -0
- periplus/packs/drupal@0.1.0/entity/entity_type_annotation.yaml +85 -0
- periplus/packs/drupal@0.1.0/entity/entity_type_attribute.yaml +76 -0
- periplus/packs/drupal@0.1.0/field/field_instance_code.yaml +40 -0
- periplus/packs/drupal@0.1.0/field/field_instance_config.yaml +58 -0
- periplus/packs/drupal@0.1.0/field/field_storage.yaml +37 -0
- periplus/packs/drupal@0.1.0/field/field_storage_code.yaml +39 -0
- periplus/packs/drupal@0.1.0/field/field_storage_config.yaml +24 -0
- periplus/packs/drupal@0.1.0/form/form.yaml +48 -0
- periplus/packs/drupal@0.1.0/form/form_class.yaml +50 -0
- periplus/packs/drupal@0.1.0/form/form_id.yaml +48 -0
- periplus/packs/drupal@0.1.0/form/form_methods.yaml +39 -0
- periplus/packs/drupal@0.1.0/hook/hook.yaml +8 -0
- periplus/packs/drupal@0.1.0/hook/hook_attribute.yaml +28 -0
- periplus/packs/drupal@0.1.0/module/module.yaml +8 -0
- periplus/packs/drupal@0.1.0/module/module_info.yaml +50 -0
- periplus/packs/drupal@0.1.0/pack.yaml +184 -0
- periplus/packs/drupal@0.1.0/plugin/plugin.yaml +17 -0
- periplus/packs/drupal@0.1.0/plugin/plugin_annotation.yaml +120 -0
- periplus/packs/drupal@0.1.0/recommendations/recommendations.yaml +14 -0
- periplus/packs/drupal@0.1.0/service/service.yaml +19 -0
- periplus/packs/drupal@0.1.0/service/service_autowire.yaml +28 -0
- periplus/packs/drupal@0.1.0/service/service_definition.yaml +24 -0
- periplus/packs/drupal@0.1.0/service/service_use.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/action/action.yaml +9 -0
- periplus/packs/drupal_basic@0.3.0/action/action_annotation.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/action/action_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/block/block_placement.yaml +16 -0
- periplus/packs/drupal_basic@0.3.0/block/block_placement_config.yaml +51 -0
- periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin.yaml +14 -0
- periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin_annotation.yaml +47 -0
- periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/block_type/block_type.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/block_type/block_type_config.yaml +54 -0
- periplus/packs/drupal_basic@0.3.0/boundary/boundary_types.yaml +19 -0
- periplus/packs/drupal_basic@0.3.0/bundle/bundle.yaml +20 -0
- periplus/packs/drupal_basic@0.3.0/bundle/bundle_config.yaml +393 -0
- periplus/packs/drupal_basic@0.3.0/call/call.yaml +349 -0
- periplus/packs/drupal_basic@0.3.0/component/component.yaml +30 -0
- periplus/packs/drupal_basic@0.3.0/config/config_object.yaml +119 -0
- periplus/packs/drupal_basic@0.3.0/constraint/constraint.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/constraint/constraint_annotation.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/constraint/constraint_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/display/display.yaml +30 -0
- periplus/packs/drupal_basic@0.3.0/display/display_config.yaml +203 -0
- periplus/packs/drupal_basic@0.3.0/display/display_mode_config.yaml +60 -0
- periplus/packs/drupal_basic@0.3.0/entity_type/config_entity_type_annotation.yaml +46 -0
- periplus/packs/drupal_basic@0.3.0/entity_type/config_entity_type_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/entity_type/content_entity_type_annotation.yaml +46 -0
- periplus/packs/drupal_basic@0.3.0/entity_type/content_entity_type_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/entity_type/entity_type.yaml +16 -0
- periplus/packs/drupal_basic@0.3.0/field/field_instance_config.yaml +116 -0
- periplus/packs/drupal_basic@0.3.0/field/field_storage.yaml +21 -0
- periplus/packs/drupal_basic@0.3.0/field/field_storage_config.yaml +45 -0
- periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter_annotation.yaml +46 -0
- periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/field_type/field_type_annotation.yaml +46 -0
- periplus/packs/drupal_basic@0.3.0/field_type/field_type_attribute.yaml +50 -0
- periplus/packs/drupal_basic@0.3.0/field_widget/field_widget_annotation.yaml +46 -0
- periplus/packs/drupal_basic@0.3.0/field_widget/field_widget_attribute.yaml +50 -0
- periplus/packs/drupal_basic@0.3.0/form/form_id.yaml +80 -0
- periplus/packs/drupal_basic@0.3.0/hook/hook.yaml +100 -0
- periplus/packs/drupal_basic@0.3.0/hook/hook_attribute.yaml +64 -0
- periplus/packs/drupal_basic@0.3.0/hook/hook_theme_include.yaml +34 -0
- periplus/packs/drupal_basic@0.3.0/library/library.yaml +12 -0
- periplus/packs/drupal_basic@0.3.0/library/library_definition.yaml +58 -0
- periplus/packs/drupal_basic@0.3.0/local_action/local_action.yaml +12 -0
- periplus/packs/drupal_basic@0.3.0/local_action/local_action_definition.yaml +49 -0
- periplus/packs/drupal_basic@0.3.0/mail/mail.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/mail/mail_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/media_source/media_source.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/media_source/media_source_annotation.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/media_source/media_source_attribute.yaml +79 -0
- periplus/packs/drupal_basic@0.3.0/menu_link/menu_link.yaml +18 -0
- periplus/packs/drupal_basic@0.3.0/menu_link/menu_link_definition.yaml +48 -0
- periplus/packs/drupal_basic@0.3.0/module/module.yaml +7 -0
- periplus/packs/drupal_basic@0.3.0/module/module_info.yaml +58 -0
- periplus/packs/drupal_basic@0.3.0/pack.yaml +528 -0
- periplus/packs/drupal_basic@0.3.0/permission/permission.yaml +7 -0
- periplus/packs/drupal_basic@0.3.0/permission/permission_definition.yaml +27 -0
- periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker.yaml +9 -0
- periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker_annotation.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource.yaml +8 -0
- periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource_annotation.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource_attribute.yaml +43 -0
- periplus/packs/drupal_basic@0.3.0/role/role.yaml +14 -0
- periplus/packs/drupal_basic@0.3.0/role/role_config.yaml +44 -0
- periplus/packs/drupal_basic@0.3.0/route/route.yaml +42 -0
- periplus/packs/drupal_basic@0.3.0/route/route_definition.yaml +113 -0
- periplus/packs/drupal_basic@0.3.0/route/route_options.yaml +55 -0
- periplus/packs/drupal_basic@0.3.0/route/route_requirements.yaml +108 -0
- periplus/packs/drupal_basic@0.3.0/service/service.yaml +56 -0
- periplus/packs/drupal_basic@0.3.0/service/service_definition.yaml +181 -0
- periplus/packs/drupal_basic@0.3.0/template/template.yaml +86 -0
- periplus/packs/drupal_basic@0.3.0/template/template_route_link.yaml +30 -0
- periplus/packs/drupal_basic@0.3.0/theme/theme.yaml +15 -0
- periplus/packs/drupal_basic@0.3.0/theme/theme_info.yaml +61 -0
- periplus/packs/drupal_basic@0.3.0/theme_hook/template_suggestion.yaml +29 -0
- periplus/packs/drupal_basic@0.3.0/theme_hook/theme_hook.yaml +87 -0
- periplus/packs/drupal_basic@0.3.0/theme_hook/theme_hook_render.yaml +20 -0
- periplus/packs/drupal_basic@0.3.0/url/url.yaml +88 -0
- periplus/packs/drupal_basic@0.3.0/views_plugin/views_field_attribute.yaml +80 -0
- periplus/packs/drupal_basic@0.3.0/views_plugin/views_filter_attribute.yaml +80 -0
- periplus/packs/drupal_basic@0.3.0/views_plugin/views_plugin.yaml +15 -0
- periplus/packs/drupal_basic@0.3.0/views_plugin/views_style_attribute.yaml +80 -0
- periplus/packs/drupal_js_basic@0.0.1/attachment/attachment.yaml +12 -0
- periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_php.yaml +15 -0
- periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_php_array.yaml +52 -0
- periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_twig.yaml +26 -0
- periplus/packs/drupal_js_basic@0.0.1/attachment/php_function_holder.yaml +13 -0
- periplus/packs/drupal_js_basic@0.0.1/behavior/behavior.yaml +198 -0
- periplus/packs/drupal_js_basic@0.0.1/pack.yaml +153 -0
- periplus/packs/drupal_js_basic@0.0.1/setting/setting.yaml +13 -0
- periplus/packs/drupal_js_basic@0.0.1/setting/setting_in_js.yaml +15 -0
- periplus/packs/drupal_js_basic@0.0.1/setting/setting_in_php.yaml +92 -0
- periplus/packs/drush_basic@0.0.1/command/command.yaml +15 -0
- periplus/packs/drush_basic@0.0.1/command/command_annotation.yaml +60 -0
- periplus/packs/drush_basic@0.0.1/command/command_attribute.yaml +88 -0
- periplus/packs/drush_basic@0.0.1/pack.yaml +29 -0
- periplus/packs/eck_basic@0.0.1/bundle/eck_bundle_config.yaml +56 -0
- periplus/packs/eck_basic@0.0.1/entity_type/eck_entity_type_config.yaml +26 -0
- periplus/packs/eck_basic@0.0.1/pack.yaml +28 -0
- periplus/packs/go@0.0.2/interfaces/satisfies.yaml +47 -0
- periplus/packs/go@0.0.2/pack.yaml +51 -0
- periplus/packs/go@0.0.2/types/find_declarations.yaml +137 -0
- periplus/packs/go@0.0.2/types/node_types.yaml +36 -0
- periplus/packs/go_basic@0.0.3/pack.yaml +104 -0
- periplus/packs/go_basic@0.0.3/rules/calls.yaml +25 -0
- periplus/packs/go_basic@0.0.3/rules/declarations.yaml +40 -0
- periplus/packs/go_basic@0.0.3/rules/imports.yaml +16 -0
- periplus/packs/go_basic@0.0.3/types/node_types.yaml +15 -0
- periplus/packs/js_basic@0.0.1/function/function.yaml +68 -0
- periplus/packs/js_basic@0.0.1/pack.yaml +50 -0
- periplus/packs/laravel_basic@0.0.5/pack.yaml +313 -0
- periplus/packs/laravel_basic@0.0.5/rules/classes.yaml +42 -0
- periplus/packs/laravel_basic@0.0.5/rules/config.yaml +229 -0
- periplus/packs/laravel_basic@0.0.5/rules/routes.yaml +210 -0
- periplus/packs/laravel_basic@0.0.5/rules/types.yaml +50 -0
- periplus/packs/laravel_basic@0.0.5/rules/views.yaml +100 -0
- periplus/packs/paragraphs_basic@0.0.1/bundle/paragraph_bundle_config.yaml +54 -0
- periplus/packs/paragraphs_basic@0.0.1/pack.yaml +12 -0
- periplus/packs/php@0.1.0/edges/edge_kinds.yaml +64 -0
- periplus/packs/php@0.1.0/edges/find_calls.yaml +34 -0
- periplus/packs/php@0.1.0/edges/find_imports.yaml +18 -0
- periplus/packs/php@0.1.0/edges/find_member_access.yaml +22 -0
- periplus/packs/php@0.1.0/edges/find_structure.yaml +38 -0
- periplus/packs/php@0.1.0/embedded/embedded_regions.yaml +19 -0
- periplus/packs/php@0.1.0/imports/imports.yaml +20 -0
- periplus/packs/php@0.1.0/pack.yaml +117 -0
- periplus/packs/php@0.1.0/resolution/excluded_tokens.yaml +23 -0
- periplus/packs/php@0.1.0/resolution/resolution.yaml +35 -0
- periplus/packs/php@0.1.0/types/find_declarations.yaml +102 -0
- periplus/packs/php@0.1.0/types/node_types.yaml +55 -0
- periplus/packs/php_basic@0.2.0/edges/edge_kinds.yaml +48 -0
- periplus/packs/php_basic@0.2.0/edges/find_structure.yaml +750 -0
- periplus/packs/php_basic@0.2.0/imports/imports.yaml +19 -0
- periplus/packs/php_basic@0.2.0/pack.yaml +94 -0
- periplus/packs/php_basic@0.2.0/types/find_declarations.yaml +267 -0
- periplus/packs/php_basic@0.2.0/types/node_types.yaml +55 -0
- periplus/packs/profile_basic@0.0.1/bundle/profile_bundle_config.yaml +54 -0
- periplus/packs/profile_basic@0.0.1/pack.yaml +12 -0
- periplus/packs/salesforce_basic@0.0.1/event/salesforce_event.yaml +36 -0
- periplus/packs/salesforce_basic@0.0.1/pack.yaml +31 -0
- periplus/packs/salesforce_basic@0.0.1/salesforce_mapping/salesforce_mapping.yaml +19 -0
- periplus/packs/salesforce_basic@0.0.1/salesforce_mapping/salesforce_mapping_config.yaml +83 -0
- periplus/packs/salesforce_basic@0.0.1/salesforce_mapping_field/salesforce_mapping_field.yaml +8 -0
- periplus/packs/salesforce_basic@0.0.1/salesforce_mapping_field/salesforce_mapping_field_annotation.yaml +43 -0
- periplus/packs/twig@0.0.1/pack.yaml +26 -0
- periplus/packs/twig@0.0.1/types/template.yaml +57 -0
- periplus/packs/twig_basic@0.1.0/pack.yaml +11 -0
- periplus/packs/twig_tweak_basic@0.0.1/pack.yaml +27 -0
- periplus/packs/twig_tweak_basic@0.0.1/rules/block.yaml +20 -0
- periplus/packs/twig_tweak_basic@0.0.1/rules/entity.yaml +35 -0
- periplus/packs/twig_tweak_basic@0.0.1/rules/field.yaml +21 -0
- periplus/packs/twig_tweak_basic@0.0.1/rules/menu.yaml +21 -0
- periplus/packs/webform_basic@0.0.1/bundle/webform_submission_bundle_config.yaml +54 -0
- periplus/packs/webform_basic@0.0.1/pack.yaml +20 -0
- periplus/packs/webform_basic@0.0.1/webform_handler/webform_handler.yaml +8 -0
- periplus/packs/webform_basic@0.0.1/webform_handler/webform_handler_annotation.yaml +43 -0
- periplus/packs/yaml@0.0.1/pack.yaml +72 -0
- periplus/packs/yaml@0.0.1/types/find_mapping_entry.yaml +21 -0
- periplus/packs/yaml@0.0.1/types/yaml_types.yaml +44 -0
- periplus/packs/yaml_basic@0.1.0/pack.yaml +10 -0
- periplus/packs.py +447 -0
- periplus/preflight.py +102 -0
- periplus/py.typed +0 -0
- periplus/report.py +596 -0
- periplus/resolution.py +355 -0
- periplus/settings.py +617 -0
- periplus/settings.stub.yml +99 -0
- periplus/spec.py +774 -0
- periplus/update.py +197 -0
- periplus/validate.py +655 -0
- periplus_map-0.2.1.dist-info/METADATA +566 -0
- periplus_map-0.2.1.dist-info/RECORD +272 -0
- periplus_map-0.2.1.dist-info/WHEEL +4 -0
- periplus_map-0.2.1.dist-info/entry_points.txt +2 -0
- periplus_map-0.2.1.dist-info/licenses/LICENSE +202 -0
- periplus_map-0.2.1.dist-info/licenses/NOTICE +2 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# drupal pack — the recommendations: section.
|
|
4
|
+
|
|
5
|
+
# ======================================================================================
|
|
6
|
+
# Advice a pack may carry. The map may not.
|
|
7
|
+
# ======================================================================================
|
|
8
|
+
recommendations:
|
|
9
|
+
- topic: exported_configuration
|
|
10
|
+
text: >
|
|
11
|
+
Use a configuration overlay to reduce what gets exported. Less exported
|
|
12
|
+
configuration means less to map, and the map's config layer shrinks with it.
|
|
13
|
+
# Not derivable from the code, so it belongs to the pack and joins the map at read
|
|
14
|
+
# time. The map holds the count; this holds the note.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# drupal pack — declares the service and the edge that resolves one.
|
|
4
|
+
|
|
5
|
+
node_types:
|
|
6
|
+
|
|
7
|
+
- name: drupal.service
|
|
8
|
+
id_namespace: drupal.service
|
|
9
|
+
|
|
10
|
+
edge_kinds:
|
|
11
|
+
|
|
12
|
+
- kind: resolves_service
|
|
13
|
+
from: [php.callable, drupal.config_object]
|
|
14
|
+
to: drupal.service
|
|
15
|
+
# The config_object endpoint was added after a real refusal. A block placement
|
|
16
|
+
# references a service at block.block.block_ways_4_context.yml:21:
|
|
17
|
+
# user: '@user.current_user_context:current_user'
|
|
18
|
+
# With `from: php.callable` alone the endpoint check rejected that edge, which is the
|
|
19
|
+
# schema working — and the fix is to widen the endpoint, not to drop the edge.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# drupal pack — a service injected by attribute, on a property. One rule.
|
|
4
|
+
#
|
|
5
|
+
# Written to test whether an attribute sitting on something other than a class needs
|
|
6
|
+
# anything new. It does not.
|
|
7
|
+
|
|
8
|
+
needs:
|
|
9
|
+
types: [drupal.service]
|
|
10
|
+
|
|
11
|
+
rules:
|
|
12
|
+
|
|
13
|
+
- rule: autowired_property
|
|
14
|
+
reads: file
|
|
15
|
+
in: [custom_module, custom_theme]
|
|
16
|
+
match:
|
|
17
|
+
attribute: "Symfony\\Component\\DependencyInjection\\Attribute\\Autowire"
|
|
18
|
+
where:
|
|
19
|
+
- applies_to: property_declaration
|
|
20
|
+
id:
|
|
21
|
+
from: {attribute_argument: service}
|
|
22
|
+
must_be: string_literal
|
|
23
|
+
on_miss: unresolved
|
|
24
|
+
emits:
|
|
25
|
+
- edge: {kind: resolves_service, from: enclosing_class, to: this_node}
|
|
26
|
+
confidence: declared
|
|
27
|
+
# Same five keys as every other rule. The only difference from the block attribute rule
|
|
28
|
+
# is one `applies_to` value and which argument holds the id.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# drupal pack — services declared in a services file. One rule.
|
|
4
|
+
|
|
5
|
+
needs:
|
|
6
|
+
types: [drupal.service]
|
|
7
|
+
|
|
8
|
+
rules:
|
|
9
|
+
|
|
10
|
+
- rule: service_from_services_file
|
|
11
|
+
reads: file
|
|
12
|
+
in: [custom_module, custom_theme]
|
|
13
|
+
match:
|
|
14
|
+
file: "*.services"
|
|
15
|
+
filetype: yaml
|
|
16
|
+
each: "services.*"
|
|
17
|
+
id:
|
|
18
|
+
from: key
|
|
19
|
+
emits:
|
|
20
|
+
- node: {type: drupal.service}
|
|
21
|
+
confidence: declared
|
|
22
|
+
# `each` addresses inside a data file rather than treating the file as one thing. This
|
|
23
|
+
# and the menu links file are the two places the pack needs it, and how the expression
|
|
24
|
+
# is written is still open.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# drupal pack — code reaching a service. Two rules, and they differ in confidence for a
|
|
4
|
+
# reason that only the author knows.
|
|
5
|
+
|
|
6
|
+
needs:
|
|
7
|
+
types: [drupal.service]
|
|
8
|
+
|
|
9
|
+
rules:
|
|
10
|
+
|
|
11
|
+
- rule: static_service_accessor
|
|
12
|
+
reads: file
|
|
13
|
+
in: [custom_module, custom_theme]
|
|
14
|
+
match:
|
|
15
|
+
static_call: "Drupal::service"
|
|
16
|
+
id:
|
|
17
|
+
from: {argument: 0}
|
|
18
|
+
must_be: string_literal
|
|
19
|
+
on_miss: unresolved
|
|
20
|
+
emits:
|
|
21
|
+
- edge: {kind: resolves_service, from: enclosing_callable, to: this_node}
|
|
22
|
+
confidence: declared
|
|
23
|
+
# The id is a literal at the call site, so nothing is inferred.
|
|
24
|
+
|
|
25
|
+
- rule: constructor_injection
|
|
26
|
+
reads: file
|
|
27
|
+
in: [custom_module, custom_theme]
|
|
28
|
+
match:
|
|
29
|
+
node_type: php.method
|
|
30
|
+
where:
|
|
31
|
+
- has_promoted_constructor_parameter: true
|
|
32
|
+
id:
|
|
33
|
+
from: parameter_type
|
|
34
|
+
on_miss: unresolved
|
|
35
|
+
emits:
|
|
36
|
+
- edge: {kind: resolves_service, from: enclosing_callable, to: this_node}
|
|
37
|
+
confidence: inferred
|
|
38
|
+
# Identified by the parameter's type, which is a claim about what the container will
|
|
39
|
+
# pass rather than an observation of it. Same edge kind, lower confidence, and the
|
|
40
|
+
# difference is a property of the rule, not of the file it runs on.
|
|
41
|
+
#
|
|
42
|
+
# A third accessor form exists and is not covered: $container->get('entity_type.manager'),
|
|
43
|
+
# at NodeTypeBlockDeriver.php:32. Named here rather than left as a silent miss.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# An action plugin, named by its plugin id; plugin_class joins it to its class. It ends at the same
|
|
4
|
+
# type and id namespace whichever way it is declared.
|
|
5
|
+
|
|
6
|
+
node_types:
|
|
7
|
+
- name: drupal.action_plugin
|
|
8
|
+
parent: drupal.plugin
|
|
9
|
+
id_namespace: drupal.plugin.action
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# An action plugin declared by the Action docblock annotation on its class. Two rules because a rule
|
|
4
|
+
# that emits an edge emits no node. An id that is not text in double quotes makes no plugin and is
|
|
5
|
+
# listed under skipped in the map report.
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- rule: action_from_annotation
|
|
9
|
+
reads: file
|
|
10
|
+
in:
|
|
11
|
+
- action_classes
|
|
12
|
+
match:
|
|
13
|
+
annotation: Action
|
|
14
|
+
filetype: php
|
|
15
|
+
where:
|
|
16
|
+
- applies_to: class_declaration
|
|
17
|
+
id:
|
|
18
|
+
from:
|
|
19
|
+
annotation_key: id
|
|
20
|
+
must_be: string_literal
|
|
21
|
+
emits:
|
|
22
|
+
- node:
|
|
23
|
+
type: drupal.action_plugin
|
|
24
|
+
confidence: declared
|
|
25
|
+
- rule: action_from_annotation_edges
|
|
26
|
+
reads: file
|
|
27
|
+
in:
|
|
28
|
+
- action_classes
|
|
29
|
+
match:
|
|
30
|
+
annotation: Action
|
|
31
|
+
filetype: php
|
|
32
|
+
where:
|
|
33
|
+
- applies_to: class_declaration
|
|
34
|
+
id:
|
|
35
|
+
from:
|
|
36
|
+
annotation_key: id
|
|
37
|
+
must_be: string_literal
|
|
38
|
+
emits:
|
|
39
|
+
- edge:
|
|
40
|
+
kind: plugin_class
|
|
41
|
+
from: this_node
|
|
42
|
+
to: enclosing_class
|
|
43
|
+
confidence: declared
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# An action plugin declared by the Action attribute on its class. Two rules because a rule that
|
|
4
|
+
# emits an edge emits no node. An id that is not a text literal makes no plugin and is listed under
|
|
5
|
+
# skipped in the map report.
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- rule: action_from_attribute
|
|
9
|
+
reads: file
|
|
10
|
+
in:
|
|
11
|
+
- action_classes
|
|
12
|
+
match:
|
|
13
|
+
attribute: Drupal\Core\Action\Attribute\Action
|
|
14
|
+
filetype: php
|
|
15
|
+
where:
|
|
16
|
+
- applies_to: class_declaration
|
|
17
|
+
id:
|
|
18
|
+
from:
|
|
19
|
+
attribute_argument: id
|
|
20
|
+
must_be: string_literal
|
|
21
|
+
emits:
|
|
22
|
+
- node:
|
|
23
|
+
type: drupal.action_plugin
|
|
24
|
+
confidence: declared
|
|
25
|
+
- rule: action_from_attribute_edges
|
|
26
|
+
reads: file
|
|
27
|
+
in:
|
|
28
|
+
- action_classes
|
|
29
|
+
match:
|
|
30
|
+
attribute: Drupal\Core\Action\Attribute\Action
|
|
31
|
+
filetype: php
|
|
32
|
+
where:
|
|
33
|
+
- applies_to: class_declaration
|
|
34
|
+
id:
|
|
35
|
+
from:
|
|
36
|
+
attribute_argument: id
|
|
37
|
+
must_be: string_literal
|
|
38
|
+
emits:
|
|
39
|
+
- edge:
|
|
40
|
+
kind: plugin_class
|
|
41
|
+
from: this_node
|
|
42
|
+
to: enclosing_class
|
|
43
|
+
confidence: declared
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A placement is one instance of a block, in a theme, in a region. It is a config entity, so it
|
|
4
|
+
# refines drupal.config_object. The plugin it places is declared in block_plugin/.
|
|
5
|
+
|
|
6
|
+
node_types:
|
|
7
|
+
- name: drupal.block_placement
|
|
8
|
+
parent: drupal.config_object
|
|
9
|
+
- name: drupal.plugin
|
|
10
|
+
abstract: true
|
|
11
|
+
id_namespace: drupal.plugin
|
|
12
|
+
|
|
13
|
+
edge_kinds:
|
|
14
|
+
- kind: places_plugin
|
|
15
|
+
from: drupal.block_placement
|
|
16
|
+
to: drupal.block_plugin
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block placement read from its config file: its theme, region and weight, and the plugin it
|
|
4
|
+
# places. Two rules because a rule that emits an edge emits no node.
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- rule: block_placement_from_config
|
|
8
|
+
reads: file
|
|
9
|
+
in:
|
|
10
|
+
- config
|
|
11
|
+
- module_config
|
|
12
|
+
match:
|
|
13
|
+
file: block.block.*
|
|
14
|
+
filetype: yaml
|
|
15
|
+
id:
|
|
16
|
+
from: file_stem
|
|
17
|
+
emits:
|
|
18
|
+
- node:
|
|
19
|
+
type: drupal.block_placement
|
|
20
|
+
- attribute:
|
|
21
|
+
name: theme
|
|
22
|
+
from:
|
|
23
|
+
key: theme
|
|
24
|
+
- attribute:
|
|
25
|
+
name: region
|
|
26
|
+
from:
|
|
27
|
+
key: region
|
|
28
|
+
- attribute:
|
|
29
|
+
name: weight
|
|
30
|
+
from:
|
|
31
|
+
key: weight
|
|
32
|
+
confidence: declared
|
|
33
|
+
- rule: block_placement_from_config_edges
|
|
34
|
+
reads: file
|
|
35
|
+
in:
|
|
36
|
+
- config
|
|
37
|
+
- module_config
|
|
38
|
+
match:
|
|
39
|
+
file: block.block.*
|
|
40
|
+
filetype: yaml
|
|
41
|
+
id:
|
|
42
|
+
from: file_stem
|
|
43
|
+
emits:
|
|
44
|
+
- edge:
|
|
45
|
+
kind: places_plugin
|
|
46
|
+
from: this_node
|
|
47
|
+
to:
|
|
48
|
+
from:
|
|
49
|
+
key: plugin
|
|
50
|
+
template: drupal.plugin.block::{plugin}
|
|
51
|
+
confidence: declared
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block plugin, named by its plugin id, and the PHP class that implements it. The plugin_class
|
|
4
|
+
# kind starts at drupal.plugin, so every plugin type below it, in this pack or in another, has it.
|
|
5
|
+
|
|
6
|
+
node_types:
|
|
7
|
+
- name: drupal.block_plugin
|
|
8
|
+
parent: drupal.plugin
|
|
9
|
+
id_namespace: drupal.plugin.block
|
|
10
|
+
|
|
11
|
+
edge_kinds:
|
|
12
|
+
- kind: plugin_class
|
|
13
|
+
from: drupal.plugin
|
|
14
|
+
to: php.class
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block plugin declared by the Block docblock annotation on its class. It ends at the same type
|
|
4
|
+
# and id namespace as the attribute rule, so one plugin declared either way is the same node. An id
|
|
5
|
+
# that is not text in double quotes makes no plugin and is listed under skipped in the map report.
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- rule: block_plugin_from_annotation
|
|
9
|
+
reads: file
|
|
10
|
+
in:
|
|
11
|
+
- block_plugin_classes
|
|
12
|
+
match:
|
|
13
|
+
annotation: Block
|
|
14
|
+
filetype: php
|
|
15
|
+
where:
|
|
16
|
+
- applies_to: class_declaration
|
|
17
|
+
id:
|
|
18
|
+
from:
|
|
19
|
+
annotation_key: id
|
|
20
|
+
must_be: string_literal
|
|
21
|
+
emits:
|
|
22
|
+
- node:
|
|
23
|
+
type: drupal.block_plugin
|
|
24
|
+
- attribute:
|
|
25
|
+
name: admin_label
|
|
26
|
+
from:
|
|
27
|
+
annotation_key: admin_label
|
|
28
|
+
confidence: declared
|
|
29
|
+
- rule: block_plugin_from_annotation_edges
|
|
30
|
+
reads: file
|
|
31
|
+
in:
|
|
32
|
+
- block_plugin_classes
|
|
33
|
+
match:
|
|
34
|
+
annotation: Block
|
|
35
|
+
filetype: php
|
|
36
|
+
where:
|
|
37
|
+
- applies_to: class_declaration
|
|
38
|
+
id:
|
|
39
|
+
from:
|
|
40
|
+
annotation_key: id
|
|
41
|
+
must_be: string_literal
|
|
42
|
+
emits:
|
|
43
|
+
- edge:
|
|
44
|
+
kind: plugin_class
|
|
45
|
+
from: this_node
|
|
46
|
+
to: enclosing_class
|
|
47
|
+
confidence: declared
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block plugin declared by the Block attribute on its class. Two rules because a rule that emits
|
|
4
|
+
# an edge emits no node. An id that is not a text literal, such as a constant, makes no plugin and
|
|
5
|
+
# is listed under skipped in the map report.
|
|
6
|
+
|
|
7
|
+
rules:
|
|
8
|
+
- rule: block_plugin_from_attribute
|
|
9
|
+
reads: file
|
|
10
|
+
in:
|
|
11
|
+
- block_plugin_classes
|
|
12
|
+
match:
|
|
13
|
+
attribute: Drupal\Core\Block\Attribute\Block
|
|
14
|
+
filetype: php
|
|
15
|
+
where:
|
|
16
|
+
- applies_to: class_declaration
|
|
17
|
+
id:
|
|
18
|
+
from:
|
|
19
|
+
attribute_argument: id
|
|
20
|
+
must_be: string_literal
|
|
21
|
+
emits:
|
|
22
|
+
- node:
|
|
23
|
+
type: drupal.block_plugin
|
|
24
|
+
confidence: declared
|
|
25
|
+
- rule: block_plugin_from_attribute_edges
|
|
26
|
+
reads: file
|
|
27
|
+
in:
|
|
28
|
+
- block_plugin_classes
|
|
29
|
+
match:
|
|
30
|
+
attribute: Drupal\Core\Block\Attribute\Block
|
|
31
|
+
filetype: php
|
|
32
|
+
where:
|
|
33
|
+
- applies_to: class_declaration
|
|
34
|
+
id:
|
|
35
|
+
from:
|
|
36
|
+
attribute_argument: id
|
|
37
|
+
must_be: string_literal
|
|
38
|
+
emits:
|
|
39
|
+
- edge:
|
|
40
|
+
kind: plugin_class
|
|
41
|
+
from: this_node
|
|
42
|
+
to: enclosing_class
|
|
43
|
+
confidence: declared
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block type is a bundle: it says what fields a content block has. It refines drupal.bundle and
|
|
4
|
+
# shares its id, block_content.<id>.
|
|
5
|
+
|
|
6
|
+
node_types:
|
|
7
|
+
- name: drupal.block_type
|
|
8
|
+
parent: drupal.bundle
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A block type read from its config file, as the bundle rules read theirs: block_content.type.basic
|
|
4
|
+
# is the bundle block_content.basic.
|
|
5
|
+
|
|
6
|
+
rules:
|
|
7
|
+
- rule: block_type_from_config
|
|
8
|
+
reads: file
|
|
9
|
+
in:
|
|
10
|
+
- config
|
|
11
|
+
- module_config
|
|
12
|
+
match:
|
|
13
|
+
file: block_content.type.*
|
|
14
|
+
filetype: yaml
|
|
15
|
+
id:
|
|
16
|
+
from: file_stem
|
|
17
|
+
normalize:
|
|
18
|
+
- {replace: '^block_content\.type\.', with: 'block_content.'}
|
|
19
|
+
emits:
|
|
20
|
+
- node:
|
|
21
|
+
type: drupal.block_type
|
|
22
|
+
- attribute:
|
|
23
|
+
name: label
|
|
24
|
+
from:
|
|
25
|
+
key: label
|
|
26
|
+
confidence: declared
|
|
27
|
+
- rule: block_type_from_config_edges
|
|
28
|
+
reads: file
|
|
29
|
+
in:
|
|
30
|
+
- config
|
|
31
|
+
- module_config
|
|
32
|
+
match:
|
|
33
|
+
file: block_content.type.*
|
|
34
|
+
filetype: yaml
|
|
35
|
+
id:
|
|
36
|
+
from: file_stem
|
|
37
|
+
normalize:
|
|
38
|
+
- {replace: '^block_content\.type\.', with: 'block_content.'}
|
|
39
|
+
emits:
|
|
40
|
+
- edge:
|
|
41
|
+
kind: configured_by
|
|
42
|
+
from: this_node
|
|
43
|
+
to:
|
|
44
|
+
from:
|
|
45
|
+
key: id
|
|
46
|
+
template: 'block_content.type.{id}'
|
|
47
|
+
- edge:
|
|
48
|
+
kind: bundle_of
|
|
49
|
+
from: this_node
|
|
50
|
+
to:
|
|
51
|
+
from:
|
|
52
|
+
key: id
|
|
53
|
+
template: 'block_content'
|
|
54
|
+
confidence: declared
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# The roles a first-party class takes from the core base or interface it descends from, which the
|
|
4
|
+
# boundary block in pack.yaml names. Each keeps php.type, so the class keeps its id and every edge
|
|
5
|
+
# that ends on it.
|
|
6
|
+
|
|
7
|
+
node_types:
|
|
8
|
+
- name: drupal.controller_class
|
|
9
|
+
parent: php.class
|
|
10
|
+
id_namespace: php.type
|
|
11
|
+
- name: drupal.form_class
|
|
12
|
+
parent: php.class
|
|
13
|
+
id_namespace: php.type
|
|
14
|
+
- name: drupal.config_form_class
|
|
15
|
+
parent: drupal.form_class
|
|
16
|
+
id_namespace: php.type
|
|
17
|
+
- name: drupal.event_subscriber_class
|
|
18
|
+
parent: php.class
|
|
19
|
+
id_namespace: php.type
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
$schema: "https://periplus.dev/schema/0/pack-file.schema.json"
|
|
2
|
+
|
|
3
|
+
# A bundle: a content type, a vocabulary, a media type and the like; a block type refines it. Its
|
|
4
|
+
# id is the entity type and the bundle's machine name, as node.article, the two keys a field
|
|
5
|
+
# instance and a display state. So a bundle that a config file declares and one that only a field
|
|
6
|
+
# names are one node, whatever module's config prefix declares it: a pack for a contributed module
|
|
7
|
+
# maps its bundle config onto the same id. A bundle no rule declares is referenced, and a bundle
|
|
8
|
+
# config file stays a config object, the end of its bundle's configured_by edge.
|
|
9
|
+
|
|
10
|
+
node_types:
|
|
11
|
+
- name: drupal.bundle
|
|
12
|
+
id_namespace: drupal.bundle
|
|
13
|
+
|
|
14
|
+
edge_kinds:
|
|
15
|
+
- kind: configured_by
|
|
16
|
+
from: drupal.bundle
|
|
17
|
+
to: drupal.config_object
|
|
18
|
+
- kind: bundle_of
|
|
19
|
+
from: drupal.bundle
|
|
20
|
+
to: drupal.entity_type
|