diff --git a/CHANGELOG.md b/CHANGELOG.md index f4a5e8d..2cc1d48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to `permafrost-dev/alpinejs-ray` will be documented in this --- +## 2.0.1 - 2024-02-21 + +- fixing errors to ray +- updated readme for handling errors +- updated changelog for this update. + ## 2.0.0 - 2022-03-09 - drop support for Alpine v2 diff --git a/README.md b/README.md index 5ff441a..a5b0ed2 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ ## Debug Alpine.js code with Ray to fix problems faster -Install this package into any project using [Alpine.js](https://github.com/alpinejs/alpine) to send messages to the [Ray app](https://myray.app). +Install this package into any project using [Alpine.js](https://github.com/alpinejs/alpine) to send messages to +the [Ray app](https://myray.app). > Note: use version `^1.4` of this package for Alpine v2 and `^2.0` for Alpine v3. @@ -27,11 +28,12 @@ Install this package into any project using [Alpine.js](https://github.com/alpin ### Installation via CDN (recommended) -The preferred way to use this package is to load it via CDN, which must be done _before_ loading Alpine. +The preferred way to use this package is to load it via CDN, which must be done _before_ loading Alpine. The `axios` library must be loaded prior to loading `alpinejs-ray` and `Alpine`: ```html + @@ -76,27 +81,31 @@ To configure `alpinejs-ray`, you must create an `alpineRayConfig` property on th ``` -| Name | Type(s) | Default | Description | -| --- | --- | --- | --- | -| `logComponentsInit` | `boolean` | `false` | Send info on component initializations to Ray | -| `logErrors` | `boolean` | `false` | Send javascript errors to Ray instead of the console | -| `logEvents` | `boolean, array` | `false` | Send specified custom events to Ray, or `false` to disable | +| Name | Type(s) | Default | Description | +|---------------------|------------------|---------|------------------------------------------------------------| +| `logComponentsInit` | `boolean` | `false` | Send info on component initializations to Ray | +| `logErrors` | `boolean` | `false` | Send javascript errors to Ray instead of the console | +| `logEvents` | `boolean, array` | `false` | Send specified custom events to Ray, or `false` to disable | ## Usage After installing the plugin, access the `$ray()` magic method within your components: ```html + ``` -See the [node-ray reference](https://github.com/permafrost-dev/node-ray#reference) for a complete list of available methods. +See the [node-ray reference](https://github.com/permafrost-dev/node-ray#reference) for a complete list of available +methods. ### Directives -Use the `x-ray` directive within your HTML markup to easily send data to Ray. The value of the directive must be a valid javascript expression. +Use the `x-ray` directive within your HTML markup to easily send data to Ray. The value of the directive must be a valid +javascript expression. ```html +
@@ -104,35 +113,38 @@ Use the `x-ray` directive within your HTML markup to easily send data to Ray. Th
``` -The `x-ray` directive values are reactive; if the value changes, the new data will be sent to and displayed in Ray in-place. +The `x-ray` directive values are reactive; if the value changes, the new data will be sent to and displayed in Ray +in-place. The changed value will be momentarily highlighted in Ray to indicate that it was updated. ## Example Components ```html + ``` ```html +
Hi There Ray!
- ``` @@ -150,8 +162,8 @@ Alpine stores can be automatically sent to Ray whenever the store data is mutate window.Alpine.store('mydata', { showing: false, }); - -setInterval( () => { + +setInterval(() => { window.Alpine.store('mydata').showing = !window.Alpine.store('mydata').showing; }, 3000); ``` @@ -159,26 +171,27 @@ setInterval( () => { To watch the store and display changes in Ray, use the `$ray().watchStore('name')` method: ```html +
Hi There Ray!
- ``` diff --git a/src/AlpineRayMagicMethod.ts b/src/AlpineRayMagicMethod.ts index 46c1bc4..fa42bb0 100644 --- a/src/AlpineRayMagicMethod.ts +++ b/src/AlpineRayMagicMethod.ts @@ -1,6 +1,13 @@ -import { ray } from '@/AlpineRay'; -import { AlpineRayConfig, getAlpineRayConfig } from '@/AlpineRayConfig'; -import { checkForAxios, encodeHtmlEntities, filterObjectKeys, findParentComponent, getWindow, highlightHtmlMarkup } from '@/lib/utils'; +import {ray} from '@/AlpineRay'; +import {AlpineRayConfig, getAlpineRayConfig} from '@/AlpineRayConfig'; +import { + checkForAxios, + encodeHtmlEntities, + filterObjectKeys, + findParentComponent, + getWindow, + highlightHtmlMarkup +} from '@/lib/utils'; import minimatch from 'minimatch'; function getMatches(patterns: string[], values: string[]) { @@ -45,7 +52,7 @@ const AlpineRayMagicMethod = { window.addEventListener(eventName, e => { if (eventName.includes('-') || (nameParts.length === 2 && lastNamePart === 'window')) { - rayInstance.table( + rayInstance().table( { event: name, payload: e.detail ?? null, @@ -71,7 +78,7 @@ const AlpineRayMagicMethod = { if (errorEvent.error || errorEvent.reason) { const data = errorEvent.reason || errorEvent.error; - const { el, expression } = data; + const {el, expression} = data; const parentComponent = findParentComponent(el); // component and parent components are not alpine components, so do nothing @@ -85,9 +92,9 @@ const AlpineRayMagicMethod = { `${encodeHtmlEntities(expression)}`, ); - const componentData = parentComponent.__x ?? { $data: {} }; + const componentData = parentComponent.__x ?? {$data: {}}; - rayInstance.table( + rayInstance().table( { errorType: `alpine.js error`, errorReason: data.toString(), @@ -125,7 +132,7 @@ const AlpineRayMagicMethod = { checkForAxios(window); - Alpine.directive('ray', (el, { expression }, { evaluateLater, effect }) => { + Alpine.directive('ray', (el, {expression}, {evaluateLater, effect}) => { const result = evaluateLater(expression); effect(() => { @@ -182,11 +189,11 @@ const AlpineRayMagicMethod = { rayInstance = this.trackRays[ident]; - this.trackRays[ident] = rayInstance.table(tableData, 'x-ray'); + this.trackRays[ident] = rayInstance().table(tableData, 'x-ray'); setTimeout(() => { tableData['data'] = tableData['data'].replace('bg-red-400', ''); - this.trackRays[ident] = rayInstance.table(tableData, 'x-ray'); + this.trackRays[ident] = rayInstance().table(tableData, 'x-ray'); }, 3000); } else { rayInstance().table(tableData, 'x-ray');