Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "internxt-crypto",
"version": "0.0.9-alpha",
"version": "0.0.12",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"module": "dist/index.js",
Expand All @@ -9,10 +9,7 @@
],
"scripts": {
"prepare": "husky",
"dev": "vite",
"build": "vite build",
"start": "vite preview",
"build:staging": "vite build --mode staging",
"build": "tsdown",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"format": "prettier \"{src,tests}/**/*.{ts,tsx}\" --write",
Expand All @@ -23,15 +20,16 @@
"devDependencies": {
"@internxt/eslint-config-internxt": "2.0.1",
"@internxt/prettier-config": "https://github.com/internxt/prettier-config.git#v1.0.2",
"@playwright/test": "^1.54.2",
"@vitest/browser-playwright": "^4.0.10",
"@vitest/coverage-istanbul": "^4.0.10",
"eslint": "^9.34.0",
"knip": "^5.82.1",
"lint-staged": "^16.1.4",
"playwright": "^1.54.1",
"prettier": "^3.6.2",
"tsdown": "^0.20.1",
"typescript": "^5.9.3",
"vite": "^7.0.6",
"vitest": "^4.0.0"
},
"dependencies": {
Expand All @@ -44,6 +42,19 @@
"idb": "^8.0.3",
"uuid": "^13.0.0"
},
"exports": {
Copy link
Contributor

@larryrider larryrider Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Im still not sure about having to define this on every 'class'/'service' of the project
But if its the only way, maybe it could be a good idea to add to the Readme.md some instructions so its clear how to implement a new functionality (like where we should add it -> ‎package.json, tsdown.config.ts, ‎src/index.ts, etc)

wdyt? @TamaraFinogina

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defining exports is the only way it worked. Not sure if it's because I'm importing this library in commonjs projects and they need some help or not. I'll add read.me

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe could use wildcard exports :)

  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.mjs",
      "require": "./dist/index.js"
    },
    "./*": {
      "types": "./dist/*.d.ts",
      "import": "./dist/*.mjs",
      "require": "./dist/*.js"
    }
  }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CandelR Seems to be working. Thanks!!!

".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.js"
},
"./*": {
"types": "./dist/*.d.ts",
"import": "./dist/*.mjs",
"require": "./dist/*.js"
}
},
"sideEffects": false,
"lint-staged": {
"*.{js,jsx,tsx,ts}": [
"prettier --write"
Expand Down
102 changes: 91 additions & 11 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,93 @@
export * as asymmetric from './asymmetric-crypto';
export * as deriveKey from './derive-key';
export * as emailCrypto from './email-crypto';
export * as emailSearch from './email-search';
export * as hash from './hash';
export * as keyWrapper from './key-wrapper';
export * as keystoreCrypto from './keystore-crypto';
export * as pq from './post-quantum-crypto';
export * as storage from './storage-service';
export * as symmetric from './symmetric-crypto';
export * as utils from './utils';
export {
deriveSecretKey,
generateEccKeys,
exportPublicKey,
importPublicKey,
exportPrivateKey,
importPrivateKey,
} from './asymmetric-crypto';
export {
deriveSymmetricKeyFromTwoKeys,
deriveSymmetricCryptoKeyFromTwoKeys,
deriveSymmetricKeyFromTwoKeysAndContext,
deriveSymmetricKeyFromContext,
deriveSymmetricCryptoKeyFromContext,
getKeyFromPassword,
getKeyFromPasswordAndSalt,
getKeyFromPasswordHex,
getKeyFromPasswordAndSaltHex,
verifyKeyFromPasswordHex,
} from './derive-key';
export {
encryptEmailHybrid,
encryptEmailHybridForMultipleRecipients,
decryptEmailHybrid,
createPwdProtectedEmail,
decryptPwdProtectedEmail,
generateEmailKeys,
} from './email-crypto';
export {
openDatabase,
closeDatabase,
deriveIndexKey,
encryptAndStoreEmail,
encryptAndStoreManyEmail,
getAndDecryptEmail,
getAndDecryptAllEmails,
deleteEmail,
getEmailCount,
deleteOldestEmails,
enforceMaxEmailNumber,
getAllEmailsSortedNewestFirst,
getAllEmailsSortedOldestFirst,
getEmailBatch,
createCacheFromDB,
getEmailFromCache,
deleteEmailFromCache,
addEmailsToCache,
addEmailToCache,
addEmailToSearchIndex,
removeEmailFromSearchIndex,
buildSearchIndexFromCache,
searchEmails,
} from './email-search';
export {
hashDataArray,
hashDataArrayWithKey,
hashDataArrayHex,
hashDataArrayWithKeyHex,
getBytesFromData,
getBytesFromDataHex,
getBytesFromDataArrayHex,
computeMac,
} from './hash';
export { unwrapKey, wrapKey } from './key-wrapper';
export { createEncryptionAndRecoveryKeystores, openEncryptionKeystore, openRecoveryKeystore } from './keystore-crypto';
export { generateKyberKeys, encapsulateKyber, decapsulateKyber } from './post-quantum-crypto/kyber768';
export {
encryptSymmetrically,
decryptSymmetrically,
importSymmetricCryptoKey,
exportSymmetricCryptoKey,
genSymmetricCryptoKey,
genSymmetricKey,
deriveSymmetricCryptoKey,
} from './symmetric-crypto';
export {
uint8ArrayToHex,
UTF8ToUint8,
uint8ToUTF8,
hexToUint8Array,
uint8ArrayToBase64,
base64ToUint8Array,
genMnemonic,
base64ToPublicKey,
publicKeyToBase64,
generateUuid,
uuidToBytes,
bytesToUuid,
mnemonicToBytes,
bytesToMnemonic,
} from './utils';
export * from './types';
export * from './constants';
2 changes: 1 addition & 1 deletion src/keystore-crypto/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { base64ToUint8Array, uint8ArrayToBase64, UTF8ToUint8, mnemonicToBytes, p
import { deriveSymmetricCryptoKeyFromContext } from '../derive-key';
import { CONTEXT_ENC_KEYSTORE, AES_KEY_BIT_LENGTH, CONTEXT_RECOVERY } from '../constants';
import { getBytesFromData } from '../hash';
import { EmailKeys, EncryptedKeystore, KeystoreType } from 'types';
import { EmailKeys, EncryptedKeystore, KeystoreType } from '../types';
import { exportPrivateKey, importPrivateKey, importPublicKey } from '../asymmetric-crypto';

/**
Expand Down
2 changes: 0 additions & 2 deletions src/vite-env.d.ts

This file was deleted.

30 changes: 9 additions & 21 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
{
"compilerOptions": {
"baseUrl": "./src",
"emitDeclarationOnly": true,
"target": "ES2022",
"module": "nodenext",
"declaration": true,
"declarationMap": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"noImplicitAny": false,
"downlevelIteration": true,
"esModuleInterop": true,
"moduleResolution": "nodenext",
"incremental": true,
"types": ["vite/client"]
"tsBuildInfoFile": "./dist/.tsbuildinfo"
},
"types": ["filesystem", "@types/react"],
"include": ["src", "vite-env.d.ts"]
}
"include": ["src"]
}
28 changes: 28 additions & 0 deletions tsdown.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { defineConfig } from 'tsdown';

export default defineConfig({
entry: {
index: 'src/index.ts',
'asymmetric-crypto': 'src/asymmetric-crypto/index.ts',
'symmetric-crypto': 'src/symmetric-crypto/index.ts',
'post-quantum-crypto': 'src/post-quantum-crypto/index.ts',
hash: 'src/hash/index.ts',
'derive-key': 'src/derive-key/index.ts',
'email-crypto': 'src/email-crypto/index.ts',
'keystore-crypto': 'src/keystore-crypto/index.ts',
'email-search': 'src/email-search/index.ts',
'storage-service': 'src/storage-service/index.ts',
utils: 'src/utils/index.ts',
types: 'src/types.ts',
constants: 'src/constants.ts',
},
platform: 'browser',
format: ['esm', 'cjs'],
sourcemap: true,
clean: true,
treeshake: true,
outDir: 'dist',
dts: true,
noExternal: ['hash-wasm'],
target: false,
});
43 changes: 0 additions & 43 deletions vite.config.ts

This file was deleted.

Loading