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.
Files changed (272) hide show
  1. periplus/__init__.py +70 -0
  2. periplus/checkmap.py +80 -0
  3. periplus/cli.py +658 -0
  4. periplus/contract/schema/map.schema.json +138 -0
  5. periplus/contract/schema/navigation.schema.json +200 -0
  6. periplus/contract/schema/pack-file.schema.json +1405 -0
  7. periplus/contract/schema/pack-manifest.schema.json +245 -0
  8. periplus/contract/schema/project-settings.schema.json +85 -0
  9. periplus/contract/spec/engine.md +151 -0
  10. periplus/contract/spec/rules.md +352 -0
  11. periplus/detect.py +228 -0
  12. periplus/engine/__init__.py +5 -0
  13. periplus/engine/check.py +481 -0
  14. periplus/engine/emit.py +368 -0
  15. periplus/engine/packload.py +2321 -0
  16. periplus/engine/pattern.py +27 -0
  17. periplus/engine/rules.py +1946 -0
  18. periplus/engine/select.py +491 -0
  19. periplus/engine/source.py +172 -0
  20. periplus/engine/tree.py +424 -0
  21. periplus/errors.py +332 -0
  22. periplus/init.py +358 -0
  23. periplus/layout.py +28 -0
  24. periplus/manifest.py +498 -0
  25. periplus/map.py +364 -0
  26. periplus/navigate/__init__.py +1 -0
  27. periplus/navigate/find.py +143 -0
  28. periplus/navigate/ids.py +30 -0
  29. periplus/navigate/listing.py +42 -0
  30. periplus/navigate/mapfile.py +189 -0
  31. periplus/navigate/path.py +175 -0
  32. periplus/navigate/show.py +175 -0
  33. periplus/navigate/types.py +83 -0
  34. periplus/navigate/walk.py +138 -0
  35. periplus/packs/advancedqueue_basic@0.0.1/pack.yaml +14 -0
  36. periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type.yaml +9 -0
  37. periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type_annotation.yaml +43 -0
  38. periplus/packs/advancedqueue_basic@0.0.1/queue_job_type/queue_job_type_attribute.yaml +43 -0
  39. periplus/packs/ai_basic@0.0.1/ai_agent/ai_agent.yaml +8 -0
  40. periplus/packs/ai_basic@0.0.1/ai_agent/ai_agent_attribute.yaml +43 -0
  41. periplus/packs/ai_basic@0.0.1/ai_function_call/ai_function_call.yaml +8 -0
  42. periplus/packs/ai_basic@0.0.1/ai_function_call/ai_function_call_attribute.yaml +43 -0
  43. periplus/packs/ai_basic@0.0.1/pack.yaml +15 -0
  44. periplus/packs/config_pages_basic@0.0.1/bundle/config_pages_bundle_config.yaml +54 -0
  45. periplus/packs/config_pages_basic@0.0.1/pack.yaml +11 -0
  46. periplus/packs/crop_basic@0.0.1/bundle/crop_bundle_config.yaml +54 -0
  47. periplus/packs/crop_basic@0.0.1/pack.yaml +11 -0
  48. periplus/packs/drupal@0.1.0/block/block_placement.yaml +25 -0
  49. periplus/packs/drupal@0.1.0/block/block_placement_code.yaml +58 -0
  50. periplus/packs/drupal@0.1.0/block/block_placement_config.yaml +53 -0
  51. periplus/packs/drupal@0.1.0/block/block_plugin.yaml +52 -0
  52. periplus/packs/drupal@0.1.0/block/block_plugin_altered.yaml +61 -0
  53. periplus/packs/drupal@0.1.0/block/block_plugin_annotation.yaml +69 -0
  54. periplus/packs/drupal@0.1.0/block/block_plugin_attribute.yaml +56 -0
  55. periplus/packs/drupal@0.1.0/block/block_plugin_content.yaml +46 -0
  56. periplus/packs/drupal@0.1.0/block/block_plugin_derived.yaml +110 -0
  57. periplus/packs/drupal@0.1.0/block/block_plugin_deriver.yaml +30 -0
  58. periplus/packs/drupal@0.1.0/block/block_type.yaml +14 -0
  59. periplus/packs/drupal@0.1.0/block/block_type_code.yaml +43 -0
  60. periplus/packs/drupal@0.1.0/block/block_type_config.yaml +45 -0
  61. periplus/packs/drupal@0.1.0/cache/cache.yaml +18 -0
  62. periplus/packs/drupal@0.1.0/cache/cache_backend.yaml +31 -0
  63. periplus/packs/drupal@0.1.0/component/sdc.yaml +19 -0
  64. periplus/packs/drupal@0.1.0/component/sdc_definition.yaml +25 -0
  65. periplus/packs/drupal@0.1.0/component/sdc_use.yaml +25 -0
  66. periplus/packs/drupal@0.1.0/config/config_object.yaml +65 -0
  67. periplus/packs/drupal@0.1.0/display/display.yaml +32 -0
  68. periplus/packs/drupal@0.1.0/display/display_code.yaml +53 -0
  69. periplus/packs/drupal@0.1.0/display/display_config.yaml +95 -0
  70. periplus/packs/drupal@0.1.0/entity/entity.yaml +33 -0
  71. periplus/packs/drupal@0.1.0/entity/entity_class.yaml +60 -0
  72. periplus/packs/drupal@0.1.0/entity/entity_save.yaml +27 -0
  73. periplus/packs/drupal@0.1.0/entity/entity_type_annotation.yaml +85 -0
  74. periplus/packs/drupal@0.1.0/entity/entity_type_attribute.yaml +76 -0
  75. periplus/packs/drupal@0.1.0/field/field_instance_code.yaml +40 -0
  76. periplus/packs/drupal@0.1.0/field/field_instance_config.yaml +58 -0
  77. periplus/packs/drupal@0.1.0/field/field_storage.yaml +37 -0
  78. periplus/packs/drupal@0.1.0/field/field_storage_code.yaml +39 -0
  79. periplus/packs/drupal@0.1.0/field/field_storage_config.yaml +24 -0
  80. periplus/packs/drupal@0.1.0/form/form.yaml +48 -0
  81. periplus/packs/drupal@0.1.0/form/form_class.yaml +50 -0
  82. periplus/packs/drupal@0.1.0/form/form_id.yaml +48 -0
  83. periplus/packs/drupal@0.1.0/form/form_methods.yaml +39 -0
  84. periplus/packs/drupal@0.1.0/hook/hook.yaml +8 -0
  85. periplus/packs/drupal@0.1.0/hook/hook_attribute.yaml +28 -0
  86. periplus/packs/drupal@0.1.0/module/module.yaml +8 -0
  87. periplus/packs/drupal@0.1.0/module/module_info.yaml +50 -0
  88. periplus/packs/drupal@0.1.0/pack.yaml +184 -0
  89. periplus/packs/drupal@0.1.0/plugin/plugin.yaml +17 -0
  90. periplus/packs/drupal@0.1.0/plugin/plugin_annotation.yaml +120 -0
  91. periplus/packs/drupal@0.1.0/recommendations/recommendations.yaml +14 -0
  92. periplus/packs/drupal@0.1.0/service/service.yaml +19 -0
  93. periplus/packs/drupal@0.1.0/service/service_autowire.yaml +28 -0
  94. periplus/packs/drupal@0.1.0/service/service_definition.yaml +24 -0
  95. periplus/packs/drupal@0.1.0/service/service_use.yaml +43 -0
  96. periplus/packs/drupal_basic@0.3.0/action/action.yaml +9 -0
  97. periplus/packs/drupal_basic@0.3.0/action/action_annotation.yaml +43 -0
  98. periplus/packs/drupal_basic@0.3.0/action/action_attribute.yaml +43 -0
  99. periplus/packs/drupal_basic@0.3.0/block/block_placement.yaml +16 -0
  100. periplus/packs/drupal_basic@0.3.0/block/block_placement_config.yaml +51 -0
  101. periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin.yaml +14 -0
  102. periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin_annotation.yaml +47 -0
  103. periplus/packs/drupal_basic@0.3.0/block_plugin/block_plugin_attribute.yaml +43 -0
  104. periplus/packs/drupal_basic@0.3.0/block_type/block_type.yaml +8 -0
  105. periplus/packs/drupal_basic@0.3.0/block_type/block_type_config.yaml +54 -0
  106. periplus/packs/drupal_basic@0.3.0/boundary/boundary_types.yaml +19 -0
  107. periplus/packs/drupal_basic@0.3.0/bundle/bundle.yaml +20 -0
  108. periplus/packs/drupal_basic@0.3.0/bundle/bundle_config.yaml +393 -0
  109. periplus/packs/drupal_basic@0.3.0/call/call.yaml +349 -0
  110. periplus/packs/drupal_basic@0.3.0/component/component.yaml +30 -0
  111. periplus/packs/drupal_basic@0.3.0/config/config_object.yaml +119 -0
  112. periplus/packs/drupal_basic@0.3.0/constraint/constraint.yaml +8 -0
  113. periplus/packs/drupal_basic@0.3.0/constraint/constraint_annotation.yaml +43 -0
  114. periplus/packs/drupal_basic@0.3.0/constraint/constraint_attribute.yaml +43 -0
  115. periplus/packs/drupal_basic@0.3.0/display/display.yaml +30 -0
  116. periplus/packs/drupal_basic@0.3.0/display/display_config.yaml +203 -0
  117. periplus/packs/drupal_basic@0.3.0/display/display_mode_config.yaml +60 -0
  118. periplus/packs/drupal_basic@0.3.0/entity_type/config_entity_type_annotation.yaml +46 -0
  119. periplus/packs/drupal_basic@0.3.0/entity_type/config_entity_type_attribute.yaml +43 -0
  120. periplus/packs/drupal_basic@0.3.0/entity_type/content_entity_type_annotation.yaml +46 -0
  121. periplus/packs/drupal_basic@0.3.0/entity_type/content_entity_type_attribute.yaml +43 -0
  122. periplus/packs/drupal_basic@0.3.0/entity_type/entity_type.yaml +16 -0
  123. periplus/packs/drupal_basic@0.3.0/field/field_instance_config.yaml +116 -0
  124. periplus/packs/drupal_basic@0.3.0/field/field_storage.yaml +21 -0
  125. periplus/packs/drupal_basic@0.3.0/field/field_storage_config.yaml +45 -0
  126. periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter.yaml +8 -0
  127. periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter_annotation.yaml +46 -0
  128. periplus/packs/drupal_basic@0.3.0/field_formatter/field_formatter_attribute.yaml +43 -0
  129. periplus/packs/drupal_basic@0.3.0/field_type/field_type_annotation.yaml +46 -0
  130. periplus/packs/drupal_basic@0.3.0/field_type/field_type_attribute.yaml +50 -0
  131. periplus/packs/drupal_basic@0.3.0/field_widget/field_widget_annotation.yaml +46 -0
  132. periplus/packs/drupal_basic@0.3.0/field_widget/field_widget_attribute.yaml +50 -0
  133. periplus/packs/drupal_basic@0.3.0/form/form_id.yaml +80 -0
  134. periplus/packs/drupal_basic@0.3.0/hook/hook.yaml +100 -0
  135. periplus/packs/drupal_basic@0.3.0/hook/hook_attribute.yaml +64 -0
  136. periplus/packs/drupal_basic@0.3.0/hook/hook_theme_include.yaml +34 -0
  137. periplus/packs/drupal_basic@0.3.0/library/library.yaml +12 -0
  138. periplus/packs/drupal_basic@0.3.0/library/library_definition.yaml +58 -0
  139. periplus/packs/drupal_basic@0.3.0/local_action/local_action.yaml +12 -0
  140. periplus/packs/drupal_basic@0.3.0/local_action/local_action_definition.yaml +49 -0
  141. periplus/packs/drupal_basic@0.3.0/mail/mail.yaml +8 -0
  142. periplus/packs/drupal_basic@0.3.0/mail/mail_attribute.yaml +43 -0
  143. periplus/packs/drupal_basic@0.3.0/media_source/media_source.yaml +8 -0
  144. periplus/packs/drupal_basic@0.3.0/media_source/media_source_annotation.yaml +43 -0
  145. periplus/packs/drupal_basic@0.3.0/media_source/media_source_attribute.yaml +79 -0
  146. periplus/packs/drupal_basic@0.3.0/menu_link/menu_link.yaml +18 -0
  147. periplus/packs/drupal_basic@0.3.0/menu_link/menu_link_definition.yaml +48 -0
  148. periplus/packs/drupal_basic@0.3.0/module/module.yaml +7 -0
  149. periplus/packs/drupal_basic@0.3.0/module/module_info.yaml +58 -0
  150. periplus/packs/drupal_basic@0.3.0/pack.yaml +528 -0
  151. periplus/packs/drupal_basic@0.3.0/permission/permission.yaml +7 -0
  152. periplus/packs/drupal_basic@0.3.0/permission/permission_definition.yaml +27 -0
  153. periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker.yaml +9 -0
  154. periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker_annotation.yaml +43 -0
  155. periplus/packs/drupal_basic@0.3.0/queue_worker/queue_worker_attribute.yaml +43 -0
  156. periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource.yaml +8 -0
  157. periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource_annotation.yaml +43 -0
  158. periplus/packs/drupal_basic@0.3.0/rest_resource/rest_resource_attribute.yaml +43 -0
  159. periplus/packs/drupal_basic@0.3.0/role/role.yaml +14 -0
  160. periplus/packs/drupal_basic@0.3.0/role/role_config.yaml +44 -0
  161. periplus/packs/drupal_basic@0.3.0/route/route.yaml +42 -0
  162. periplus/packs/drupal_basic@0.3.0/route/route_definition.yaml +113 -0
  163. periplus/packs/drupal_basic@0.3.0/route/route_options.yaml +55 -0
  164. periplus/packs/drupal_basic@0.3.0/route/route_requirements.yaml +108 -0
  165. periplus/packs/drupal_basic@0.3.0/service/service.yaml +56 -0
  166. periplus/packs/drupal_basic@0.3.0/service/service_definition.yaml +181 -0
  167. periplus/packs/drupal_basic@0.3.0/template/template.yaml +86 -0
  168. periplus/packs/drupal_basic@0.3.0/template/template_route_link.yaml +30 -0
  169. periplus/packs/drupal_basic@0.3.0/theme/theme.yaml +15 -0
  170. periplus/packs/drupal_basic@0.3.0/theme/theme_info.yaml +61 -0
  171. periplus/packs/drupal_basic@0.3.0/theme_hook/template_suggestion.yaml +29 -0
  172. periplus/packs/drupal_basic@0.3.0/theme_hook/theme_hook.yaml +87 -0
  173. periplus/packs/drupal_basic@0.3.0/theme_hook/theme_hook_render.yaml +20 -0
  174. periplus/packs/drupal_basic@0.3.0/url/url.yaml +88 -0
  175. periplus/packs/drupal_basic@0.3.0/views_plugin/views_field_attribute.yaml +80 -0
  176. periplus/packs/drupal_basic@0.3.0/views_plugin/views_filter_attribute.yaml +80 -0
  177. periplus/packs/drupal_basic@0.3.0/views_plugin/views_plugin.yaml +15 -0
  178. periplus/packs/drupal_basic@0.3.0/views_plugin/views_style_attribute.yaml +80 -0
  179. periplus/packs/drupal_js_basic@0.0.1/attachment/attachment.yaml +12 -0
  180. periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_php.yaml +15 -0
  181. periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_php_array.yaml +52 -0
  182. periplus/packs/drupal_js_basic@0.0.1/attachment/attachment_in_twig.yaml +26 -0
  183. periplus/packs/drupal_js_basic@0.0.1/attachment/php_function_holder.yaml +13 -0
  184. periplus/packs/drupal_js_basic@0.0.1/behavior/behavior.yaml +198 -0
  185. periplus/packs/drupal_js_basic@0.0.1/pack.yaml +153 -0
  186. periplus/packs/drupal_js_basic@0.0.1/setting/setting.yaml +13 -0
  187. periplus/packs/drupal_js_basic@0.0.1/setting/setting_in_js.yaml +15 -0
  188. periplus/packs/drupal_js_basic@0.0.1/setting/setting_in_php.yaml +92 -0
  189. periplus/packs/drush_basic@0.0.1/command/command.yaml +15 -0
  190. periplus/packs/drush_basic@0.0.1/command/command_annotation.yaml +60 -0
  191. periplus/packs/drush_basic@0.0.1/command/command_attribute.yaml +88 -0
  192. periplus/packs/drush_basic@0.0.1/pack.yaml +29 -0
  193. periplus/packs/eck_basic@0.0.1/bundle/eck_bundle_config.yaml +56 -0
  194. periplus/packs/eck_basic@0.0.1/entity_type/eck_entity_type_config.yaml +26 -0
  195. periplus/packs/eck_basic@0.0.1/pack.yaml +28 -0
  196. periplus/packs/go@0.0.2/interfaces/satisfies.yaml +47 -0
  197. periplus/packs/go@0.0.2/pack.yaml +51 -0
  198. periplus/packs/go@0.0.2/types/find_declarations.yaml +137 -0
  199. periplus/packs/go@0.0.2/types/node_types.yaml +36 -0
  200. periplus/packs/go_basic@0.0.3/pack.yaml +104 -0
  201. periplus/packs/go_basic@0.0.3/rules/calls.yaml +25 -0
  202. periplus/packs/go_basic@0.0.3/rules/declarations.yaml +40 -0
  203. periplus/packs/go_basic@0.0.3/rules/imports.yaml +16 -0
  204. periplus/packs/go_basic@0.0.3/types/node_types.yaml +15 -0
  205. periplus/packs/js_basic@0.0.1/function/function.yaml +68 -0
  206. periplus/packs/js_basic@0.0.1/pack.yaml +50 -0
  207. periplus/packs/laravel_basic@0.0.5/pack.yaml +313 -0
  208. periplus/packs/laravel_basic@0.0.5/rules/classes.yaml +42 -0
  209. periplus/packs/laravel_basic@0.0.5/rules/config.yaml +229 -0
  210. periplus/packs/laravel_basic@0.0.5/rules/routes.yaml +210 -0
  211. periplus/packs/laravel_basic@0.0.5/rules/types.yaml +50 -0
  212. periplus/packs/laravel_basic@0.0.5/rules/views.yaml +100 -0
  213. periplus/packs/paragraphs_basic@0.0.1/bundle/paragraph_bundle_config.yaml +54 -0
  214. periplus/packs/paragraphs_basic@0.0.1/pack.yaml +12 -0
  215. periplus/packs/php@0.1.0/edges/edge_kinds.yaml +64 -0
  216. periplus/packs/php@0.1.0/edges/find_calls.yaml +34 -0
  217. periplus/packs/php@0.1.0/edges/find_imports.yaml +18 -0
  218. periplus/packs/php@0.1.0/edges/find_member_access.yaml +22 -0
  219. periplus/packs/php@0.1.0/edges/find_structure.yaml +38 -0
  220. periplus/packs/php@0.1.0/embedded/embedded_regions.yaml +19 -0
  221. periplus/packs/php@0.1.0/imports/imports.yaml +20 -0
  222. periplus/packs/php@0.1.0/pack.yaml +117 -0
  223. periplus/packs/php@0.1.0/resolution/excluded_tokens.yaml +23 -0
  224. periplus/packs/php@0.1.0/resolution/resolution.yaml +35 -0
  225. periplus/packs/php@0.1.0/types/find_declarations.yaml +102 -0
  226. periplus/packs/php@0.1.0/types/node_types.yaml +55 -0
  227. periplus/packs/php_basic@0.2.0/edges/edge_kinds.yaml +48 -0
  228. periplus/packs/php_basic@0.2.0/edges/find_structure.yaml +750 -0
  229. periplus/packs/php_basic@0.2.0/imports/imports.yaml +19 -0
  230. periplus/packs/php_basic@0.2.0/pack.yaml +94 -0
  231. periplus/packs/php_basic@0.2.0/types/find_declarations.yaml +267 -0
  232. periplus/packs/php_basic@0.2.0/types/node_types.yaml +55 -0
  233. periplus/packs/profile_basic@0.0.1/bundle/profile_bundle_config.yaml +54 -0
  234. periplus/packs/profile_basic@0.0.1/pack.yaml +12 -0
  235. periplus/packs/salesforce_basic@0.0.1/event/salesforce_event.yaml +36 -0
  236. periplus/packs/salesforce_basic@0.0.1/pack.yaml +31 -0
  237. periplus/packs/salesforce_basic@0.0.1/salesforce_mapping/salesforce_mapping.yaml +19 -0
  238. periplus/packs/salesforce_basic@0.0.1/salesforce_mapping/salesforce_mapping_config.yaml +83 -0
  239. periplus/packs/salesforce_basic@0.0.1/salesforce_mapping_field/salesforce_mapping_field.yaml +8 -0
  240. periplus/packs/salesforce_basic@0.0.1/salesforce_mapping_field/salesforce_mapping_field_annotation.yaml +43 -0
  241. periplus/packs/twig@0.0.1/pack.yaml +26 -0
  242. periplus/packs/twig@0.0.1/types/template.yaml +57 -0
  243. periplus/packs/twig_basic@0.1.0/pack.yaml +11 -0
  244. periplus/packs/twig_tweak_basic@0.0.1/pack.yaml +27 -0
  245. periplus/packs/twig_tweak_basic@0.0.1/rules/block.yaml +20 -0
  246. periplus/packs/twig_tweak_basic@0.0.1/rules/entity.yaml +35 -0
  247. periplus/packs/twig_tweak_basic@0.0.1/rules/field.yaml +21 -0
  248. periplus/packs/twig_tweak_basic@0.0.1/rules/menu.yaml +21 -0
  249. periplus/packs/webform_basic@0.0.1/bundle/webform_submission_bundle_config.yaml +54 -0
  250. periplus/packs/webform_basic@0.0.1/pack.yaml +20 -0
  251. periplus/packs/webform_basic@0.0.1/webform_handler/webform_handler.yaml +8 -0
  252. periplus/packs/webform_basic@0.0.1/webform_handler/webform_handler_annotation.yaml +43 -0
  253. periplus/packs/yaml@0.0.1/pack.yaml +72 -0
  254. periplus/packs/yaml@0.0.1/types/find_mapping_entry.yaml +21 -0
  255. periplus/packs/yaml@0.0.1/types/yaml_types.yaml +44 -0
  256. periplus/packs/yaml_basic@0.1.0/pack.yaml +10 -0
  257. periplus/packs.py +447 -0
  258. periplus/preflight.py +102 -0
  259. periplus/py.typed +0 -0
  260. periplus/report.py +596 -0
  261. periplus/resolution.py +355 -0
  262. periplus/settings.py +617 -0
  263. periplus/settings.stub.yml +99 -0
  264. periplus/spec.py +774 -0
  265. periplus/update.py +197 -0
  266. periplus/validate.py +655 -0
  267. periplus_map-0.2.1.dist-info/METADATA +566 -0
  268. periplus_map-0.2.1.dist-info/RECORD +272 -0
  269. periplus_map-0.2.1.dist-info/WHEEL +4 -0
  270. periplus_map-0.2.1.dist-info/entry_points.txt +2 -0
  271. periplus_map-0.2.1.dist-info/licenses/LICENSE +202 -0
  272. 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