From 0deca541660876190e905c0397858a11eb5da3d6 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 08:47:16 +0100 Subject: [PATCH 1/8] fix: :bug: Improve error handling in PermissionsAPI and update nx.json - Added error handling in PermissionsAPI to throw an error if the handler is closed. - Updated type definitions in types.ts to document the new error throwing behavior. - Removed the nxCloudAccessToken from nx.json for security reasons. --- nx.json | 3 +-- packages/permissions/src/PermissionsAPI.ts | 2 ++ packages/permissions/src/types.ts | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/nx.json b/nx.json index ec1cfd3..d45d4f7 100644 --- a/nx.json +++ b/nx.json @@ -29,6 +29,5 @@ "sharedGlobals" ] }, - "nxCloudId": "681f1bf43845db51336764b6", - "nxCloudAccessToken": "OWM0ZThhYWItODQwYS00ZjgzLWJhMWMtODYyOTgzMDVjMmZhfHJlYWQtd3JpdGU=" + "nxCloudId": "681f1bf43845db51336764b6" } \ No newline at end of file diff --git a/packages/permissions/src/PermissionsAPI.ts b/packages/permissions/src/PermissionsAPI.ts index e1c1e46..c80e787 100644 --- a/packages/permissions/src/PermissionsAPI.ts +++ b/packages/permissions/src/PermissionsAPI.ts @@ -202,6 +202,8 @@ export class PermissionsAPI { getPermission: () => { const _events = PermissionsAPI.#events.get(_handler) + if (!_events || _handler === null) throw new Error('Cannot get permission: handler has been closed') + PermissionsAPI.getPermission(permissionOption).then( ({ error, permission }) => { if (error) { diff --git a/packages/permissions/src/types.ts b/packages/permissions/src/types.ts index 5e4803d..1ae0b8f 100644 --- a/packages/permissions/src/types.ts +++ b/packages/permissions/src/types.ts @@ -150,6 +150,7 @@ export type PermissionHandler = { /** * Executes the permission request. * @returns {T} - The result of the permission request. + * @throws {Error} - Throws if handler is already closed */ getPermission: () => T From af57f8e7d888e462664e0c07c5073ad8dcf25a21 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 08:55:16 +0100 Subject: [PATCH 2/8] chore: :sparkles: Update package.json dependencies and package manager version - Changed package manager version from pnpm@9.2.0 to pnpm@9 for consistency. --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 28699c8..b98ff7b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "type": "git", "url": "https://github.com/ArcStackLab/webapis.git" }, - "packageManager": "pnpm@9.2.0", + "packageManager": "pnpm@9", "description": "A Comprehensive Integration of All Web Standard APIs", "scripts": { "build": "tsup", @@ -52,8 +52,11 @@ "esbuild": "^0.23.1", "eslint": "^9.9.1", "globals": "^15.9.0", + "gulp": "^5.0.0", + "gulp-cli": "^3.0.0", "husky": "^9.1.5", "lint-staged": "^15.2.10", + "netlify-cli": "^21.4.2", "nx": "19.8.0", "prettier": "^3.3.3", "tslib": "^2.7.0", From 1336bc21b6e8176aa52b1b366a9bfd3f4decfff2 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 09:25:17 +0100 Subject: [PATCH 3/8] chore: :sparkles: Update GitHub Actions workflow to include NX_CLOUD_ACCESS_TOKEN - Added environment variable NX_CLOUD_ACCESS_TOKEN to the verify.yml workflow for improved CI configuration. --- .github/workflows/verify.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 3a96a21..c530e1b 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,7 +5,8 @@ on: branches: - main pull_request: - +env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} permissions: actions: read contents: read From 710fae4ac04b254b428ff0d117b927b1b28b72f0 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 09:33:56 +0100 Subject: [PATCH 4/8] chore: :sparkles: Refactor GitHub Actions workflow to set NX_CLOUD_ACCESS_TOKEN in job environment - Moved the NX_CLOUD_ACCESS_TOKEN environment variable to the job level in verify.yml for improved clarity and organization. --- .github/workflows/verify.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index c530e1b..160cc03 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: -env: - NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} permissions: actions: read contents: read @@ -27,6 +25,8 @@ jobs: # Run this command as early as possible, before dependencies are installed # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - run: pnpm dlx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build" + env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} # Cache node_modules - uses: actions/setup-node@v4 From 2db1f9055fecac97fd0b93308d2dda6534b322e5 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 09:46:31 +0100 Subject: [PATCH 5/8] chore: :sparkles: Update GitHub Actions workflow to streamline NX_CLOUD_ACCESS_TOKEN usage - Simplified the command in the verify.yml workflow to echo the NX_CLOUD_ACCESS_TOKEN before running the Nx Cloud command, enhancing clarity and maintainability. --- .github/workflows/verify.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 160cc03..0dd5344 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,6 +5,8 @@ on: branches: - main pull_request: +env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} permissions: actions: read contents: read @@ -24,9 +26,7 @@ jobs: # This enables task distribution via Nx Cloud # Run this command as early as possible, before dependencies are installed # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - - run: pnpm dlx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build" - env: - NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} + - run: echo NX_TOKEN=$NX_CLOUD_ACCESS_TOKEN && pnpm dlx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build" # Cache node_modules - uses: actions/setup-node@v4 From 1697bb31bd7946796d06874b011428469bd53553 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 09:57:32 +0100 Subject: [PATCH 6/8] chore: :sparkles: Update GitHub Actions workflow to use pnpx for Nx commands - Replaced `pnpm exec` with `pnpx` for running Nx affected commands in the verify.yml workflow, ensuring consistency and improved command execution. --- .github/workflows/verify.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 0dd5344..ae8752f 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: -env: - NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} permissions: actions: read contents: read @@ -23,11 +21,6 @@ jobs: with: version: 9 - # This enables task distribution via Nx Cloud - # Run this command as early as possible, before dependencies are installed - # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - - run: echo NX_TOKEN=$NX_CLOUD_ACCESS_TOKEN && pnpm dlx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build" - # Cache node_modules - uses: actions/setup-node@v4 with: @@ -40,4 +33,4 @@ jobs: # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud # - run: pnpm exec nx-cloud record -- echo Hello World # Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected - - run: pnpm exec nx affected -t build && pnpm build + - run: pnpx nx affected -t build && pnpm build From 53707eca97e74d82af449db7749d200bd4885dea Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 09:59:19 +0100 Subject: [PATCH 7/8] chore: :sparkles: Update GitHub Actions workflow to allow non-frozen lockfile installation - Changed the pnpm install command in verify.yml from --frozen-lockfile to --no-frozen-lockfile to enable more flexible dependency resolution during CI runs. --- .github/workflows/verify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index ae8752f..0c201e5 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -27,7 +27,7 @@ jobs: node-version: 20 cache: 'pnpm' - - run: pnpm install --frozen-lockfile + - run: pnpm install --no-frozen-lockfile - uses: nrwl/nx-set-shas@v4 # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud From 98d2bf6996b31e17a11ea4eaf242a99218f81dc3 Mon Sep 17 00:00:00 2001 From: Odunayo Mohammed Date: Sat, 17 May 2025 10:08:50 +0100 Subject: [PATCH 8/8] chore: :sparkles: Update ESLint configuration and fix type reference in PermissionsAPI - Added '**/*.html' to the ESLint ignore patterns to exclude HTML files from linting. - Updated type reference in demo/index.js from PermissionsAPI.getPermissionHandler to getPermissionHandler for improved clarity. --- eslint.config.mjs | 3 ++- packages/permissions/demo/index.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 00e4284..2a7fd5d 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -20,7 +20,8 @@ export default [ '**/.nx', '**/pnpm-*.yaml', '**/node_modules', - '**/dist' + '**/dist', + '**/*.html' ] }, { diff --git a/packages/permissions/demo/index.js b/packages/permissions/demo/index.js index 447a4e9..1ca14a8 100644 --- a/packages/permissions/demo/index.js +++ b/packages/permissions/demo/index.js @@ -19,7 +19,7 @@ function createOptionTag(value) { } /** - * @type {ReturnType} + * @type {ReturnType} */ let permissionHandler const closeButton = document.querySelector('#close') @@ -49,7 +49,7 @@ const stateColor = { } function handlePermission(option) { - permissionHandler = PermissionsAPI.getPermissionHandler(option, { + permissionHandler = getPermissionHandler(option, { granted: (permission) => { console.log('Permission Granted:', permission) state.replaceChildren(