first commit

This commit is contained in:
AntoXa PRO 2024-03-06 16:08:27 +03:00
commit 45361e277d
10 changed files with 141 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
dist
node_modules
package-lock.json

9
.prettierrc Normal file
View File

@ -0,0 +1,9 @@
{
"useTabs": true,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"trailingComma": "none",
"arrowParens": "avoid",
"printWidth": 79
}

43
package.json Normal file
View File

@ -0,0 +1,43 @@
{
"name": "directus-helpers",
"version": "1.0.0",
"description": "Helpers Directus Extensions",
"author": "AntoXa PRO <info@antoxa.pro>",
"homepage": "https://antoxahub.ru/antoxa/directus-helpers",
"repository": {
"type": "git",
"url": "https://antoxahub.ru/antoxa/directus-helpers.git"
},
"module": "./dist/index.mjs",
"main": "./dist/index.umd.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"requier": "./dist/index.umd.js"
},
"./dist/*": "./dist/*",
"./package.json": "./package.json",
"./tsconfig.json": "./tsconfig.json"
},
"files": [
"dist",
"tsconfig.json"
],
"scripts": {
"build": "vite build",
"prepare": "npm run build"
},
"keywords": [
"Directus"
],
"devDependencies": {
"@directus/api": "^18.0.0",
"@directus/extensions-sdk": "^11.0.0",
"prettier": "^3.2.5",
"vite": "^5.1.5",
"vite-plugin-dts": "^3.7.3"
},
"license": "ISC"
}

2
src/index.ts Normal file
View File

@ -0,0 +1,2 @@
export * from './services'
export * from './operations'

1
src/operations/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './trigger'

View File

@ -0,0 +1,7 @@
export type TTreggerData<TName extends string = string> = {
$trigger: {
body: {
collection: TName
}
}
}

47
src/services/factory.ts Normal file
View File

@ -0,0 +1,47 @@
import type { SchemaOverview, Accountability } from '@directus/types'
import type { ItemsService, FilesService } from '@directus/api/dist/services'
export type TFactoryServicesOpts = {
services: any
schema: SchemaOverview
accountability?: Accountability
}
type TServices<K extends keyof any> = { [P in K]: any }
export type TFactoryTypes = Record<string, any>
export class FactoryServices<
TTypes extends TFactoryTypes = any,
> {
private opts: TFactoryServicesOpts
private _items: Partial<TServices<keyof TTypes>> = {}
private _files: FilesService | null = null
constructor(opts: TFactoryServicesOpts) {
this.opts = opts
}
items<TName extends keyof TTypes, TService extends TTypes[TName]>(
name: TName
) {
if (!this._items[name]) {
this._items[name] = new this.opts.services.ItemsService(name, {
schema: this.opts.schema,
accountability: this.opts.accountability
})
}
return this._items[name] as ItemsService<TService>
}
files() {
if (!this._files) {
this._files = new this.opts.services.FilesService({
schema: this.opts.schema,
accountability: this.opts.accountability
})
}
return this._files as FilesService
}
}

1
src/services/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './factory'

15
tsconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"strict": true,
"moduleResolution": "Node",
"isolatedModules": true,
"esModuleInterop": true,
"useDefineForClassFields": true,
"declaration": true
},
"include": ["src/**/*.ts", "src/**/*.d.ts"]
}

13
vite.config.ts Normal file
View File

@ -0,0 +1,13 @@
import { defineConfig } from 'vite'
import dts from 'vite-plugin-dts'
export default defineConfig({
plugins: [dts()],
build: {
lib: {
entry: 'src/index.ts',
name: 'directus-helpers',
fileName: 'index'
}
}
})