0.1.0-alpha.36 • Published 1 year ago

@crosscopy/core v0.1.0-alpha.36

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

crosscopy-core

Core npm package containing main logic and algorithms used in crosscopy

Main Components

  • crypto
    • For encryption and decryption
  • plugin
    • A plugin system
    • Including plugins
      • encryptionPlugin
      • syncPlugin
      • notionPlugin
  • database

Limitation

This package doesn't support ESM. Although a ESM version is compiled, it won 't work due to missing ESM of crypto.js.

NPM Package

Install Package

If you want to install this package, set the registry first

# choose one of the following if you don't have a .npmrc file
npm config set @crosscopy:registry https://registry.npmjs.org
npm config set @crosscopy:registry https://npm.pkg.github.com

Publish Package

# publish to npmjs registry
npm config set @crosscopy:registry https://registry.npmjs.org
npm publish --access public

# publish to github registry
npm config set @crosscopy:registry https://npm.pkg.github.com
npm publish

Sample Usage

Service

import { PrismaClient } from '@prisma/client';
import { createClient, RedisClientType } from 'redis';
import {
  UserServiceImpl,
  UserServicePrismaImpl,
  UserServiceRedisImpl,
} from '@crosscopy/core/service';

import dotenv from 'dotenv';

dotenv.config();

const url = process.env.DATABASE_URL;
const prisma = new PrismaClient({ datasources: { db: { url } } });
const redisUrl = process.env.REDIS_URL;
const redisClient: RedisClientType = createClient({ url: redisUrl });

redisClient.connect().then(() => {
  const userServiceRedis = new UserServiceRedisImpl(redisClient);
  const userServicePrisma = new UserServicePrismaImpl(prisma, redisClient);
  const userService = new UserServiceImpl(
    userServicePrisma,
    userServiceRedis,
    redisClient
  );

  userService.findByUsername('username').then((user) => {
    console.log(user);
  });
});
".": {
  "require": "./dist/index.cjs",
  "import": "./dist/index.js",
  "types": "./dist/index.d.ts"
},
"./plugin": {
  "require": "./dist/plugin.cjs",
  "import": "./dist/plugin.js",
  "types": "./dist/plugin.d.ts"
},
"./crypto": {
  "require": "./dist/crypto.cjs",
  "import": "./dist/crypto.js",
  "types": "./dist/crypto.d.ts"
},
"./io": {
  "require": "./dist/io.cjs",
  "import": "./dist/io.js",
  "types": "./dist/io.d.ts"
},
"./syncer": {
  "require": "./dist/syncer.cjs",
  "import": "./dist/syncer.js",
  "types": "./dist/syncer.d.ts"
},
"./util": {
  "require": "./dist/util.cjs",
  "import": "./dist/util.js",
  "types": "./dist/util.d.ts"
},
"./service": {
  "require": "./dist/service.cjs",
  "import": "./dist/service.js",
  "types": "./dist/service.d.ts"
}