diff --git a/.changeset/electron-package-scaffold.md b/.changeset/electron-package-scaffold.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/electron-package-scaffold.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.github/labeler.yml b/.github/labeler.yml index 642ff9645ad..f51b3241838 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -16,6 +16,10 @@ clerk-js: - changed-files: - any-glob-to-any-file: packages/clerk-js/** +electron: + - changed-files: + - any-glob-to-any-file: packages/electron/** + elements: - changed-files: - any-glob-to-any-file: packages/elements/** diff --git a/packages/electron/package.json b/packages/electron/package.json new file mode 100644 index 00000000000..d9b22c6c27c --- /dev/null +++ b/packages/electron/package.json @@ -0,0 +1,61 @@ +{ + "name": "@clerk/electron", + "version": "0.0.0", + "description": "Clerk SDK for Electron", + "keywords": [ + "auth", + "authentication", + "passwordless", + "session", + "jwt", + "electron", + "clerk" + ], + "homepage": "https://clerk.com/", + "bugs": { + "url": "https://github.com/clerk/javascript/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/clerk/javascript.git", + "directory": "packages/electron" + }, + "license": "MIT", + "author": "Clerk", + "sideEffects": false, + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsdown", + "clean": "rimraf ./dist", + "dev": "tsdown --watch", + "dev:pub": "pnpm dev -- --env.publish", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", + "lint": "eslint src", + "lint:attw": "attw --pack . --profile node16", + "lint:publint": "publint" + }, + "engines": { + "node": ">=20.9.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/electron/src/index.ts b/packages/electron/src/index.ts new file mode 100644 index 00000000000..71e0f778aff --- /dev/null +++ b/packages/electron/src/index.ts @@ -0,0 +1 @@ +export const clerkElectron = 'electron'; diff --git a/packages/electron/tsconfig.json b/packages/electron/tsconfig.json new file mode 100644 index 00000000000..ffa09e4e241 --- /dev/null +++ b/packages/electron/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "moduleResolution": "NodeNext", + "module": "NodeNext", + "sourceMap": false, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "allowJs": true, + "target": "ES2020", + "declaration": true, + "declarationMap": true, + "outDir": "dist", + "resolveJsonModule": true + }, + "include": ["src"] +} diff --git a/packages/electron/tsdown.config.mts b/packages/electron/tsdown.config.mts new file mode 100644 index 00000000000..6dd0d5c723e --- /dev/null +++ b/packages/electron/tsdown.config.mts @@ -0,0 +1,26 @@ +import { defineConfig } from 'tsdown'; + +import pkgJson from './package.json' with { type: 'json' }; + +export default defineConfig(overrideOptions => { + const isWatch = !!overrideOptions.watch; + const shouldPublish = !!overrideOptions.env?.publish; + + return { + entry: { + index: './src/index.ts', + }, + format: ['cjs', 'esm'], + fixedExtension: false, + clean: true, + minify: false, + sourcemap: true, + dts: true, + onSuccess: shouldPublish ? 'pkglab pub --ping' : undefined, + define: { + PACKAGE_NAME: `"${pkgJson.name}"`, + PACKAGE_VERSION: `"${pkgJson.version}"`, + __DEV__: `${isWatch}`, + }, + }; +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abac24e25af..f8c6a3f7528 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -524,6 +524,8 @@ importers: specifier: ^5.10.0 version: 5.10.0 + packages/electron: {} + packages/expo: dependencies: '@clerk/clerk-js':