# Installazzjoni tal-klijent

> Tagħbija client.js mis-CDN ta’ Entase, imbagħad oħloq istanza. M’hemm l-ebda pakkett x’tinstalla u l-ebda pass ta’ build.

Il-klijent jiġi pprovdut mis-CDN ta’ Entase bħala fajl wieħed. M’hemm l-ebda pakkett npm, l-ebda bundle x’tibni, u l-ebda dipendenza x’żżomm aġġornata – dejjem tikseb il-verżjoni attwali.

```html
<script src="https://js.entase.com/client.js"></script>
```

It-tagħbija tal-iskript tiddefinixxi klassi globali `Entase`. Ma jagħmel xejn ieħor waħdu: l-ebda talba għan-netwerk, l-ebda bidla fid-DOM, ma jiġi rrendut xejn. Kollox jibda meta toħloq istanza.

## Ħolqien ta’ istanza

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
```

Oħloq **istanza waħda għal kull paġna** u użaha mill-ġdid għal kull avveniment. Il-kostruttur jirreġistra listener ta’ `message` fuq it-tieqa u jibda jidentifika liema modalità ta’ checkout id-dominju tiegħek huwa awtorizzat juża, għalhekk il-ħolqien ta’ diversi istanzi jfisser listeners duplikati u sejħiet ta’ detezzjoni duplikati mingħajr ebda benefiċċju.

Kull għażla għandha valur awtomatiku, għalhekk `new Entase()` mingħajr argumenti hija valida – iżda mingħajr `pk` il-klijent ma jistax jivverifika li d-dominju tiegħek jista’ juża checkout inline, u dejjem jgħaddi għal tieqa pop-up. Ara [Modalitajiet ta’ checkout](/developers/js-client/checkout-modes.md).

## Tagħbija tal-iskript b’mod asinkronu

Jekk tgħabbi `client.js` b’`async` jew `defer`, il-klassi tkun għadha ma teżistix meta jaħdem l-iskript inline tiegħek. Il-librerija tibgħat avveniment `entase:ready` fuq `window` ladarba tkun tgħabbiet, għalhekk stenna għalih:

```html
<script src="https://js.entase.com/client.js" async></script>
<script>
  let entase = null;

  const init = () => { entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' }); };

  if (typeof Entase !== 'undefined') init();
  else window.addEventListener('entase:ready', init);
</script>
```

Il-verifika ta’ `typeof` l-ewwel hija importanti: jekk l-iskript ikun diġà spiċċa jitgħabba, `entase:ready` ikun diġà ntbagħat u li tisma’ għalih ikun ifisser li tistenna għal dejjem.

## Tindif

F’applikazzjoni b’paġna waħda, sejjaħ `destroy()` meta l-veduta li tippossjedi l-istanza titneħħa:

```js
entase.destroy();
```

Dan ineħħi l-listeners tat-tieqa li rreġistra l-klijent. Istanza meqruda ma tistax terġa’ tintuża – jekk issejjaħ `book()` fuqha, jiġi rreġistrat żball fil-log u ma jiġri xejn. Oħloq istanza ġdida minflok.

## Politika tas-Sigurtà tal-Kontenut

Jekk is-sit tiegħek jibgħat header `Content-Security-Policy`, il-checkout jeħtieġ:

- `script-src https://js.entase.com` – biex titgħabba l-librerija.
- `frame-src https://www.entase.com` – il-checkout jiġi rrendut f’iframe fil-modalità pannell.
- `connect-src https://www.entase.com` – il-klijent isejjaħ l-API ta’ Entase biex jiddetermina l-modalità ta’ checkout permessa.

Mingħajr `frame-src`, il-modalità pannell tipproduċi pannell vojt. Mingħajr `connect-src`, id-detezzjoni tal-modalità tfalli u kull checkout jinfetaħ bħala pop-up.
