@nestjs-dash/mikroorm 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, normalizeSortDirection, Searchable, SoftDeletable, Sortable, type EntityColumnMeta, type EntityConstructor, type SortDirectionInput } from '@nestjs-dash/adapter';
2
+ export { listQueryConfigFromEntity } from '@nestjs-dash/core';
3
+ //# sourceMappingURL=entity-decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-decorators.d.ts","sourceRoot":"","sources":["../src/entity-decorators.ts"],"names":[],"mappings":"AASA,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,QAAQ,EACR,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, normalizeSortDirection, Searchable, SoftDeletable, Sortable } from '@nestjs-dash/adapter';
2
+ export { listQueryConfigFromEntity } from '@nestjs-dash/core';
3
+ //# sourceMappingURL=entity-decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-decorators.js","sourceRoot":"","sources":["../src/entity-decorators.ts"],"names":[],"mappings":"AASA,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,QAAQ,EAIX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,87 @@
1
- export {};
1
+ import type { EntityManager } from '@mikro-orm/core';
2
+ import type { BelongsToMeta, FindOneOptions, ListQuery, ListQueryConfig, Paginated, PropertyAdapter, PropertyType, RecordData, RelationCapableAdapter, RelationDefinition, RelationOption, ResourceAdapter, SoftDeleteCapableAdapter } from '@nestjs-dash/adapter';
3
+ import { type ResourceClass } from '@nestjs-dash/core';
4
+ type EntityPropertyLike = {
5
+ name: string;
6
+ primary?: boolean;
7
+ runtimeType?: string;
8
+ kind?: string;
9
+ };
10
+ export declare class MikroOrmProperty implements PropertyAdapter {
11
+ private readonly propertyName;
12
+ private readonly propertyType;
13
+ private readonly flags;
14
+ constructor(propertyName: string, propertyType: PropertyType, flags?: {
15
+ id?: boolean;
16
+ editable?: boolean;
17
+ sortable?: boolean;
18
+ });
19
+ name(): string;
20
+ type(): PropertyType;
21
+ isId(): boolean;
22
+ isEditable(): boolean;
23
+ isSortable(): boolean;
24
+ }
25
+ export declare function propertiesFromMetadata(properties: EntityPropertyLike[]): MikroOrmProperty[];
26
+ export declare class MikroOrmResource implements ResourceAdapter, RelationCapableAdapter, SoftDeleteCapableAdapter {
27
+ private readonly resourceId;
28
+ private readonly entityName;
29
+ private readonly em;
30
+ private readonly props;
31
+ private readonly defaultConfig;
32
+ private readonly options;
33
+ constructor(resourceId: string, entityName: string, em: EntityManager, props: PropertyAdapter[], defaultConfig: ListQueryConfig, options?: {
34
+ relations?: RelationDefinition[];
35
+ resolveRelated?: (slug: string) => MikroOrmResource | undefined;
36
+ softDeleteField?: string;
37
+ });
38
+ id(): string;
39
+ properties(): PropertyAdapter[];
40
+ supportsSoftDelete(): boolean;
41
+ deletedAtField(): string;
42
+ restore(id: string): Promise<void>;
43
+ find(query: ListQuery, config?: ListQueryConfig): Promise<Paginated<RecordData>>;
44
+ findOne(id: string, options?: FindOneOptions): Promise<RecordData | null>;
45
+ create(data: RecordData): Promise<RecordData>;
46
+ update(id: string, data: RecordData): Promise<RecordData>;
47
+ delete(id: string): Promise<void>;
48
+ findRelated(ownerId: string, relation: RelationDefinition, query: ListQuery): Promise<Paginated<RecordData>>;
49
+ associate(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
50
+ dissociate(_ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
51
+ attach(ownerId: string, relation: RelationDefinition, relatedId: string, pivot?: RecordData): Promise<void>;
52
+ detach(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
53
+ searchRelatedOptions(meta: BelongsToMeta, query?: {
54
+ search?: string;
55
+ limit?: number;
56
+ }): Promise<RelationOption[]>;
57
+ private pivotRelatedIds;
58
+ private requireRelated;
59
+ }
60
+ export declare function createMikroOrmResource(options: {
61
+ id: string;
62
+ entityName: string;
63
+ em: EntityManager;
64
+ properties: PropertyAdapter[];
65
+ listQueryConfig: ListQueryConfig;
66
+ relations?: RelationDefinition[];
67
+ resolveRelated?: (slug: string) => MikroOrmResource | undefined;
68
+ softDeleteField?: string;
69
+ }): MikroOrmResource;
70
+ export type CreateMikroOrmResourceFromModelOptions = {
71
+ properties?: PropertyAdapter[];
72
+ listQueryConfig?: ListQueryConfig;
73
+ relations?: RelationDefinition[];
74
+ resolveRelated?: (slug: string) => MikroOrmResource | undefined;
75
+ id?: string;
76
+ entityName?: string;
77
+ };
78
+ export declare function createMikroOrmResourceFromModel(resource: ResourceClass, em: EntityManager, options?: CreateMikroOrmResourceFromModelOptions): MikroOrmResource;
79
+ export declare function bindMikroOrmResourcesFromModels(resources: ResourceClass[], em: EntityManager): void;
80
+ export declare const MikroOrmAdapter: {
81
+ forRoot(): {
82
+ name: string;
83
+ };
84
+ createResource: typeof createMikroOrmResource;
85
+ };
86
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, listQueryConfigFromEntity, normalizeSortDirection, Searchable, SoftDeletable, Sortable, type EntityColumnMeta, type SortDirectionInput } from './entity-decorators.js';
2
87
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,367 @@
1
- import { createRequire } from 'node:module';
2
- const require = createRequire(import.meta.url);
3
- const pkg = require('../package.json');
4
- console.log(`Hello from ${pkg.name}`);
1
+ import { relationsFromResource, resolveListQueryConfig, resolveResourceSlug, } from '@nestjs-dash/core';
2
+ import { getSoftDeleteField, listQueryConfigFromEntity } from './entity-decorators.js';
3
+ export class MikroOrmProperty {
4
+ constructor(propertyName, propertyType, flags = {}) {
5
+ this.propertyName = propertyName;
6
+ this.propertyType = propertyType;
7
+ this.flags = flags;
8
+ }
9
+ name() {
10
+ return this.propertyName;
11
+ }
12
+ type() {
13
+ return this.propertyType;
14
+ }
15
+ isId() {
16
+ return this.flags.id ?? false;
17
+ }
18
+ isEditable() {
19
+ return this.flags.editable ?? !this.isId();
20
+ }
21
+ isSortable() {
22
+ return this.flags.sortable ?? true;
23
+ }
24
+ }
25
+ function mapRuntimeTypeToPropertyType(property) {
26
+ if (property.kind && property.kind !== 'scalar') {
27
+ return 'reference';
28
+ }
29
+ switch (property.runtimeType) {
30
+ case 'boolean':
31
+ return 'boolean';
32
+ case 'number':
33
+ case 'bigint':
34
+ return 'number';
35
+ case 'Date':
36
+ return 'datetime';
37
+ case 'object':
38
+ return 'json';
39
+ default:
40
+ return 'string';
41
+ }
42
+ }
43
+ export function propertiesFromMetadata(properties) {
44
+ return properties.map((property) => {
45
+ const isId = property.primary ?? false;
46
+ return new MikroOrmProperty(property.name, mapRuntimeTypeToPropertyType(property), {
47
+ id: isId,
48
+ editable: !isId,
49
+ sortable: true,
50
+ });
51
+ });
52
+ }
53
+ function operatorToMikroFilter(operator, value) {
54
+ switch (operator) {
55
+ case '$eq':
56
+ return { $eq: value };
57
+ case '$not':
58
+ return { $ne: value };
59
+ case '$null':
60
+ return { $eq: null };
61
+ case '$in':
62
+ return { $in: value.split(',') };
63
+ case '$gt':
64
+ return { $gt: value };
65
+ case '$gte':
66
+ return { $gte: value };
67
+ case '$lt':
68
+ return { $lt: value };
69
+ case '$lte':
70
+ return { $lte: value };
71
+ case '$btw': {
72
+ const [min, max] = value.split(',');
73
+ return { $gte: min, $lte: max };
74
+ }
75
+ case '$ilike':
76
+ case '$contains':
77
+ return { $ilike: `%${value}%` };
78
+ case '$sw':
79
+ return { $ilike: `${value}%` };
80
+ default:
81
+ return { $eq: value };
82
+ }
83
+ }
84
+ function emptyPage(query, config) {
85
+ const limit = query.limit ?? config.defaultLimit ?? 20;
86
+ return {
87
+ data: [],
88
+ meta: {
89
+ itemsPerPage: limit,
90
+ totalItems: 0,
91
+ currentPage: query.page ?? 1,
92
+ totalPages: 1,
93
+ sortBy: query.sortBy ?? config.defaultSortBy ?? [],
94
+ },
95
+ };
96
+ }
97
+ function singularize(value) {
98
+ return value.endsWith('s') ? value.slice(0, -1) : value;
99
+ }
100
+ export class MikroOrmResource {
101
+ constructor(resourceId, entityName, em, props, defaultConfig, options = {}) {
102
+ this.resourceId = resourceId;
103
+ this.entityName = entityName;
104
+ this.em = em;
105
+ this.props = props;
106
+ this.defaultConfig = defaultConfig;
107
+ this.options = options;
108
+ }
109
+ id() {
110
+ return this.resourceId;
111
+ }
112
+ properties() {
113
+ return this.props;
114
+ }
115
+ supportsSoftDelete() {
116
+ return this.options.softDeleteField != null;
117
+ }
118
+ deletedAtField() {
119
+ if (!this.options.softDeleteField) {
120
+ throw new Error(`Resource ${this.resourceId} has no soft-delete field configured`);
121
+ }
122
+ return this.options.softDeleteField;
123
+ }
124
+ async restore(id) {
125
+ const field = this.deletedAtField();
126
+ await this.em.nativeUpdate(this.entityName, { id }, { [field]: null });
127
+ }
128
+ async find(query, config) {
129
+ const effectiveConfig = {
130
+ ...this.defaultConfig,
131
+ ...config,
132
+ sortableColumns: config?.sortableColumns ?? this.defaultConfig.sortableColumns,
133
+ };
134
+ const defaultLimit = effectiveConfig.defaultLimit ?? 20;
135
+ const maxLimit = effectiveConfig.maxLimit ?? 100;
136
+ const limit = Math.min(Math.max(query.limit ?? defaultLimit, 1), maxLimit);
137
+ const page = Math.max(query.page ?? 1, 1);
138
+ const and = [];
139
+ if (this.options.softDeleteField && !query.withDeleted) {
140
+ and.push({ [this.options.softDeleteField]: null });
141
+ }
142
+ const search = query.search?.trim();
143
+ const searchable = query.searchBy?.length
144
+ ? query.searchBy
145
+ : (effectiveConfig.searchableColumns ?? []);
146
+ if (search && searchable.length > 0) {
147
+ and.push({ $or: searchable.map((column) => ({ [column]: { $ilike: `%${search}%` } })) });
148
+ }
149
+ if (query.filter) {
150
+ for (const [column, raw] of Object.entries(query.filter)) {
151
+ const allowed = effectiveConfig.filterableColumns?.[column];
152
+ if (!allowed)
153
+ continue;
154
+ const values = Array.isArray(raw) ? raw : [raw];
155
+ for (const expression of values) {
156
+ const [operatorRaw, ...rest] = expression.split(':');
157
+ const value = rest.join(':');
158
+ const operator = (operatorRaw?.startsWith('$') ? operatorRaw : '$eq');
159
+ if (allowed !== true && !allowed.includes(operator))
160
+ continue;
161
+ and.push({ [column]: operatorToMikroFilter(operator, value) });
162
+ }
163
+ }
164
+ }
165
+ const where = and.length > 0 ? { $and: and } : {};
166
+ const sortBy = query.sortBy?.length ? query.sortBy : (effectiveConfig.defaultSortBy ?? []);
167
+ const orderBy = {};
168
+ for (const [column, direction] of sortBy) {
169
+ if (!effectiveConfig.sortableColumns.includes(column))
170
+ continue;
171
+ orderBy[column] = direction;
172
+ }
173
+ const [entities, totalItems] = await this.em.findAndCount(this.entityName, where, {
174
+ limit,
175
+ offset: (page - 1) * limit,
176
+ orderBy: orderBy,
177
+ });
178
+ return {
179
+ data: entities,
180
+ meta: {
181
+ itemsPerPage: limit,
182
+ totalItems,
183
+ currentPage: page,
184
+ totalPages: Math.max(Math.ceil(totalItems / limit), 1),
185
+ sortBy,
186
+ search: query.search,
187
+ filter: query.filter,
188
+ },
189
+ };
190
+ }
191
+ async findOne(id, options) {
192
+ const record = await this.em.findOne(this.entityName, { id }, options?.relations?.length ? { populate: options.relations } : undefined);
193
+ if (!record)
194
+ return null;
195
+ if (this.options.softDeleteField &&
196
+ record[this.options.softDeleteField] != null) {
197
+ return null;
198
+ }
199
+ return record;
200
+ }
201
+ async create(data) {
202
+ const entity = this.em.create(this.entityName, data);
203
+ this.em.persist(entity);
204
+ await this.em.flush();
205
+ return entity;
206
+ }
207
+ async update(id, data) {
208
+ await this.em.nativeUpdate(this.entityName, { id }, data);
209
+ const updated = await this.findOne(id);
210
+ if (!updated) {
211
+ throw new Error(`Record ${id} not found`);
212
+ }
213
+ return updated;
214
+ }
215
+ async delete(id) {
216
+ if (this.options.softDeleteField) {
217
+ await this.em.nativeUpdate(this.entityName, { id }, {
218
+ [this.options.softDeleteField]: new Date(),
219
+ });
220
+ return;
221
+ }
222
+ await this.em.nativeDelete(this.entityName, { id });
223
+ }
224
+ async findRelated(ownerId, relation, query) {
225
+ const related = this.requireRelated(relation.relatedResource);
226
+ const config = relation.listQueryConfig ?? { sortableColumns: ['id'], defaultLimit: 20 };
227
+ if (relation.type === 'has-many') {
228
+ const foreignKey = relation.foreignKey;
229
+ if (!foreignKey) {
230
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
231
+ }
232
+ return related.find({ ...query, filter: { ...query.filter, [foreignKey]: `$eq:${ownerId}` } }, { ...config, filterableColumns: { ...config.filterableColumns, [foreignKey]: true } });
233
+ }
234
+ const ids = await this.pivotRelatedIds(ownerId, relation);
235
+ if (ids.length === 0) {
236
+ return emptyPage(query, config);
237
+ }
238
+ return related.find({ ...query, filter: { ...query.filter, id: `$in:${ids.join(',')}` } }, { ...config, filterableColumns: { ...config.filterableColumns, id: true } });
239
+ }
240
+ async associate(ownerId, relation, relatedId) {
241
+ const foreignKey = relation.foreignKey;
242
+ if (!foreignKey) {
243
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
244
+ }
245
+ const relatedRepo = this.requireRelated(relation.relatedResource);
246
+ await relatedRepo.em.nativeUpdate(relatedRepo.entityName, { id: relatedId }, {
247
+ [foreignKey]: ownerId,
248
+ });
249
+ }
250
+ async dissociate(_ownerId, relation, relatedId) {
251
+ const foreignKey = relation.foreignKey;
252
+ if (!foreignKey) {
253
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
254
+ }
255
+ const relatedRepo = this.requireRelated(relation.relatedResource);
256
+ await relatedRepo.em.nativeUpdate(relatedRepo.entityName, { id: relatedId }, {
257
+ [foreignKey]: null,
258
+ });
259
+ }
260
+ async attach(ownerId, relation, relatedId, pivot) {
261
+ if (!relation.pivotTable) {
262
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
263
+ }
264
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
265
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
266
+ const extra = pivot ? Object.entries(pivot) : [];
267
+ const columns = [pivotForeignKey, pivotRelatedKey, ...extra.map(([key]) => key)];
268
+ const values = [ownerId, relatedId, ...extra.map(([, value]) => value)];
269
+ const placeholders = columns.map(() => '?').join(', ');
270
+ try {
271
+ await this.em
272
+ .getConnection()
273
+ .execute(`insert into ${relation.pivotTable} (${columns.join(', ')}) values (${placeholders})`, values, 'run');
274
+ }
275
+ catch {
276
+ }
277
+ }
278
+ async detach(ownerId, relation, relatedId) {
279
+ if (!relation.pivotTable) {
280
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
281
+ }
282
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
283
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
284
+ await this.em
285
+ .getConnection()
286
+ .execute(`delete from ${relation.pivotTable} where ${pivotForeignKey} = ? and ${pivotRelatedKey} = ?`, [ownerId, relatedId], 'run');
287
+ }
288
+ async searchRelatedOptions(meta, query = {}) {
289
+ const related = this.requireRelated(meta.resource);
290
+ const searchBy = meta.searchBy ?? [meta.titleAttribute];
291
+ const result = await related.find({ search: query.search, searchBy, limit: query.limit ?? 25, page: 1 }, { sortableColumns: [meta.titleAttribute, 'id'], searchableColumns: searchBy });
292
+ return result.data.map((row) => ({
293
+ value: String(row.id),
294
+ label: String(row[meta.titleAttribute] ?? row.id),
295
+ }));
296
+ }
297
+ async pivotRelatedIds(ownerId, relation) {
298
+ if (!relation.pivotTable) {
299
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
300
+ }
301
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
302
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
303
+ const rows = (await this.em
304
+ .getConnection()
305
+ .execute(`select ${pivotRelatedKey} as related_id from ${relation.pivotTable} where ${pivotForeignKey} = ?`, [ownerId], 'all'));
306
+ return rows.map((row) => String(row.related_id));
307
+ }
308
+ requireRelated(slug) {
309
+ if (slug === this.resourceId) {
310
+ return this;
311
+ }
312
+ const related = this.options.resolveRelated?.(slug);
313
+ if (!related) {
314
+ throw new Error(`Related repository for ${slug} not registered`);
315
+ }
316
+ return related;
317
+ }
318
+ }
319
+ export function createMikroOrmResource(options) {
320
+ return new MikroOrmResource(options.id, options.entityName, options.em, options.properties, options.listQueryConfig, {
321
+ relations: options.relations,
322
+ resolveRelated: options.resolveRelated,
323
+ softDeleteField: options.softDeleteField,
324
+ });
325
+ }
326
+ export function createMikroOrmResourceFromModel(resource, em, options = {}) {
327
+ const model = resource.model;
328
+ if (model == null) {
329
+ throw new Error(`Resource ${resource.name} is missing static model for MikroORM auto-bind`);
330
+ }
331
+ const entityName = options.entityName ?? model.name;
332
+ const meta = em.getMetadata(entityName);
333
+ const properties = options.properties ?? propertiesFromMetadata(meta.props);
334
+ const softDeleteField = getSoftDeleteField(model);
335
+ const listQueryConfig = options.listQueryConfig ??
336
+ resolveListQueryConfig(resource, properties.map((property) => property.name()), (tableDefaults, columnCapabilities) => listQueryConfigFromEntity(model, tableDefaults, columnCapabilities, properties), properties);
337
+ return createMikroOrmResource({
338
+ id: options.id ?? resolveResourceSlug(resource),
339
+ entityName,
340
+ em,
341
+ properties,
342
+ listQueryConfig,
343
+ relations: options.relations ?? relationsFromResource(resource),
344
+ resolveRelated: options.resolveRelated,
345
+ softDeleteField,
346
+ });
347
+ }
348
+ export function bindMikroOrmResourcesFromModels(resources, em) {
349
+ const built = new Map();
350
+ const resolveRelated = (slug) => built.get(slug);
351
+ for (const resource of resources) {
352
+ if (resource.adapter || resource.model == null) {
353
+ continue;
354
+ }
355
+ const adapter = createMikroOrmResourceFromModel(resource, em, { resolveRelated });
356
+ built.set(resolveResourceSlug(resource), adapter);
357
+ resource.adapter = adapter;
358
+ }
359
+ }
360
+ export const MikroOrmAdapter = {
361
+ forRoot() {
362
+ return { name: '@nestjs-dash/mikroorm' };
363
+ },
364
+ createResource: createMikroOrmResource,
365
+ };
366
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, listQueryConfigFromEntity, normalizeSortDirection, Searchable, SoftDeletable, Sortable } from './entity-decorators.js';
5
367
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAqB,CAAC;AAE3D,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,8 @@
1
1
  {
2
2
  "name": "@nestjs-dash/mikroorm",
3
- "version": "0.0.1",
4
- "description": "MikroORM adapter for nestjs-dash (ResourceAdapter/DatabaseAdapter implementation + entity decorators)",
3
+ "version": "0.1.1",
4
+ "description": "MikroORM adapter for NestJS Dash (ResourceAdapter/DatabaseAdapter implementation + entity decorators)",
5
5
  "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/nestjs-dash/mikroorm.git"
9
- },
10
- "bugs": {
11
- "url": "https://github.com/nestjs-dash/mikroorm/issues"
12
- },
13
- "homepage": "https://github.com/nestjs-dash/mikroorm#readme",
14
6
  "files": [
15
7
  "dist"
16
8
  ],
@@ -22,31 +14,18 @@
22
14
  }
23
15
  },
24
16
  "publishConfig": {
25
- "access": "public",
26
- "registry": "https://registry.npmjs.org/",
27
- "tag": "latest"
17
+ "access": "public"
28
18
  },
29
- "scripts": {
30
- "build": "tsc -p tsconfig.json",
31
- "check-types": "tsc -p tsconfig.json --noEmit",
32
- "format": "oxfmt",
33
- "lint": "oxlint src",
34
- "test": "vitest run",
35
- "test:coverage": "vitest run --coverage",
36
- "release": "release-it",
37
- "dev": "tsc -p tsconfig.json --watch"
19
+ "dependencies": {
20
+ "@nestjs-dash/adapter": "0.1.1",
21
+ "@nestjs-dash/core": "0.1.1"
38
22
  },
39
23
  "devDependencies": {
24
+ "@nestjs-dash/typescript-config": "0.1.0",
40
25
  "@mikro-orm/core": "^7.2.0",
41
- "@types/node": "^26.5.1",
42
- "@vitest/coverage-v8": "5.0.0",
43
- "oxfmt": "^0.67.0",
44
- "oxlint": "^1.82.0",
45
26
  "reflect-metadata": "^0.2.2",
46
- "typescript": "7.0.2",
47
- "vitest": "^5.0.0",
48
- "release-it": "^21.0.2",
49
- "@release-it/conventional-changelog": "^12.0.0"
27
+ "typescript": "6.0.3",
28
+ "vitest": "^5.0.0"
50
29
  },
51
30
  "peerDependencies": {
52
31
  "@mikro-orm/core": "^6.0.0 || ^7.0.0",
@@ -56,5 +35,14 @@
56
35
  "reflect-metadata": {
57
36
  "optional": true
58
37
  }
38
+ },
39
+ "scripts": {
40
+ "build": "tsc -p tsconfig.json",
41
+ "check-types": "tsc -p tsconfig.json --noEmit",
42
+ "format": "oxfmt",
43
+ "lint": "oxlint src",
44
+ "test": "vitest run",
45
+ "test:coverage": "vitest run --coverage",
46
+ "dev": "tsc -p tsconfig.json --watch"
59
47
  }
60
48
  }
package/README.md DELETED
@@ -1 +0,0 @@
1
- # @nestjs-dash/prisma