Elgg  Version 6.3
ESMService.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Javascript;
4 
7 use Elgg\Config;
9 
16 class ESMService {
17 
18  protected array $imports = [];
19 
20  protected array $runtime_modules = [];
21 
30  public function __construct(
31  protected ViewsService $views,
32  protected SimpleCache $cache,
33  protected ExternalFiles $externalFiles,
34  protected Config $config
35  ) {
36  }
37 
43  public function getImportMapData(): array {
44  $modules = $this->views->getESModules();
45  $imports = [];
46  $result = [];
47 
48  foreach ($modules as $name) {
49  $short_name = str_replace('.mjs', '', $name);
50  $imports[$short_name] = $this->cache->getUrl($name);
51  }
52 
53  $result['imports'] = array_merge($imports, $this->runtime_modules);
54 
55  if (!$this->config->subresource_integrity_enabled) {
56  return $result;
57  }
58 
59  foreach ($result['imports'] as $name => $import) {
60  $integrity = $this->externalFiles->getSubResourceIntegrity('js', "{$name}.mjs");
61  // fallback for runtime modules
62  $integrity = $integrity ?? $this->externalFiles->getSubResourceIntegrity('js', $name);
63 
64  if (!empty($integrity)) {
65  $result['integrity'][$import] = $integrity;
66  }
67  }
68 
69  return $result;
70  }
71 
80  public function register(string $name, string $href): void {
81  $this->runtime_modules[$name] = $href;
82  }
83 
91  public function import(string $name): void {
92  $this->imports[$name] = true;
93  }
94 
100  public function getImports(): array {
101  return array_keys($this->imports);
102  }
103 }
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:73
External files service.
Simple cache service.
Definition: SimpleCache.php:15
Keeps track of ES modules.
Definition: ESMService.php:16
__construct(protected ViewsService $views, protected SimpleCache $cache, protected ExternalFiles $externalFiles, protected Config $config)
Constructor.
Definition: ESMService.php:30
getImports()
Returns all modules that requested to be loaded.
Definition: ESMService.php:100
getImportMapData()
Returns the importmap data.
Definition: ESMService.php:43
Views service.
$config
Advanced site settings, debugging section.
Definition: debugging.php:6
$views
Definition: item.php:17
if($item->getLinkClass()) $href
Definition: submit.php:22