@decaf-ts/core 0.1.0 → 0.1.2

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.
Files changed (54) hide show
  1. package/dist/core.bundle.min.js +1 -1
  2. package/dist/esm/core.bundle.min.esm.js +1 -1
  3. package/lib/esm/index.d.ts +1 -1
  4. package/lib/esm/index.js +1 -1
  5. package/lib/esm/interfaces/SequenceOptions.d.ts +2 -1
  6. package/lib/esm/interfaces/index.d.ts +0 -1
  7. package/lib/esm/interfaces/index.js +1 -1
  8. package/lib/esm/model/decorators.d.ts +5 -2
  9. package/lib/esm/model/decorators.js +1 -1
  10. package/lib/esm/model/index.d.ts +1 -0
  11. package/lib/esm/model/index.js +1 -1
  12. package/lib/esm/persistence/Adapter.d.ts +20 -8
  13. package/lib/esm/persistence/Adapter.js +1 -1
  14. package/lib/esm/persistence/constants.js +1 -1
  15. package/lib/esm/persistence/decorators.d.ts +0 -1
  16. package/lib/esm/persistence/decorators.js +1 -1
  17. package/lib/esm/persistence/utils.d.ts +2 -0
  18. package/lib/esm/persistence/utils.js +1 -1
  19. package/lib/esm/repository/Repository.d.ts +12 -5
  20. package/lib/esm/repository/Repository.js +1 -1
  21. package/lib/esm/repository/decorators.d.ts +3 -0
  22. package/lib/esm/repository/decorators.js +1 -0
  23. package/lib/esm/repository/index.d.ts +4 -0
  24. package/lib/esm/repository/index.js +1 -1
  25. package/lib/esm/repository/utils.d.ts +5 -0
  26. package/lib/esm/repository/utils.js +1 -0
  27. package/lib/index.cjs +1 -1
  28. package/lib/index.d.ts +1 -1
  29. package/lib/interfaces/SequenceOptions.d.ts +2 -1
  30. package/lib/interfaces/index.cjs +1 -1
  31. package/lib/interfaces/index.d.ts +0 -1
  32. package/lib/model/decorators.cjs +1 -1
  33. package/lib/model/decorators.d.ts +5 -2
  34. package/lib/model/index.cjs +1 -1
  35. package/lib/model/index.d.ts +1 -0
  36. package/lib/persistence/Adapter.cjs +1 -1
  37. package/lib/persistence/Adapter.d.ts +20 -8
  38. package/lib/persistence/constants.cjs +1 -1
  39. package/lib/persistence/decorators.cjs +1 -1
  40. package/lib/persistence/decorators.d.ts +0 -1
  41. package/lib/persistence/utils.cjs +1 -1
  42. package/lib/persistence/utils.d.ts +2 -0
  43. package/lib/repository/Repository.cjs +1 -1
  44. package/lib/repository/Repository.d.ts +12 -5
  45. package/lib/repository/decorators.cjs +1 -0
  46. package/lib/repository/decorators.d.ts +3 -0
  47. package/lib/repository/index.cjs +1 -1
  48. package/lib/repository/index.d.ts +4 -0
  49. package/lib/repository/utils.cjs +1 -0
  50. package/package.json +13 -11
  51. package/lib/esm/interfaces/IAdapter.d.ts +0 -5
  52. package/lib/esm/interfaces/IAdapter.js +0 -0
  53. package/lib/interfaces/IAdapter.cjs +0 -1
  54. package/lib/interfaces/IAdapter.d.ts +0 -5
@@ -1,18 +1,30 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
1
+ import { BaseError, DBModel } from "@decaf-ts/db-decorators";
2
2
  import { Observer } from "../interfaces/Observer";
3
- import { IAdapter } from "../interfaces/IAdapter";
4
3
  import { Sequence } from "../interfaces/Sequence";
5
4
  import { Constructor } from "@decaf-ts/decorator-validation";
6
5
  import { SequenceOptions } from "../interfaces/SequenceOptions";
7
- export declare abstract class Adapter<T = string> implements IAdapter<T> {
6
+ import { RawExecutor } from "../interfaces/RawExecutor";
7
+ import { Observable } from "../interfaces/Observable";
8
+ export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>, Observable {
8
9
  private static _current;
10
+ private static _cache;
9
11
  private observers;
12
+ private readonly _native;
13
+ get native(): Y;
14
+ constructor(native: Y, flavour: string);
15
+ protected isReserved(attr: string): boolean;
16
+ protected abstract parseError(err: Error): BaseError;
10
17
  abstract createIndex(...args: any[]): Promise<any>;
11
18
  abstract getSequence<V extends DBModel>(model: V, sequence: Constructor<Sequence>, options?: SequenceOptions): Promise<Sequence>;
12
- abstract create<V>(model: V, ...args: any[]): Promise<V>;
13
- abstract read<V>(key: string | number, ...args: any[]): Promise<V>;
14
- abstract update<V>(model: V, ...args: any[]): Promise<V>;
15
- abstract delete<V>(key: string | number, ...args: any[]): Promise<V>;
19
+ prepare<V extends DBModel>(model: V, pk: string | number): Promise<{
20
+ record: Record<string, any>;
21
+ id: string;
22
+ }>;
23
+ revert<V extends DBModel>(obj: Record<string, any>, clazz: string | Constructor<V>, pk: string, id: string | number): Promise<V>;
24
+ abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
25
+ abstract read(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
26
+ abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
27
+ abstract delete(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
16
28
  abstract raw<V>(rawInput: T, ...args: any[]): Promise<V>;
17
29
  /**
18
30
  * @summary Registers an {@link Observer}
@@ -33,7 +45,7 @@ export declare abstract class Adapter<T = string> implements IAdapter<T> {
33
45
  * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
34
46
  */
35
47
  updateObservers(...args: any[]): Promise<void>;
36
- static get current(): Adapter<any>;
48
+ static get current(): Adapter<any, any>;
37
49
  static get(flavour: any): Adapter<any> | undefined;
38
50
  static setCurrent(flavour: string): void;
39
51
  }
@@ -1 +1 @@
1
- import{InternalError,NotFoundError}from"@decaf-ts/db-decorators";import{Injectables}from"@decaf-ts/injectable-decorators";import{genAdapterInjectableKey}from"./utils";import{ObserverError}from"../repository/errors";class Adapter{constructor(){this.observers=[]}observe(r){if(-1!==this.observers.indexOf(r))throw new InternalError("Observer already registered");this.observers.push(r)}unObserve(r){r=this.observers.indexOf(r);if(-1===r)throw new InternalError("Failed to find Observer");this.observers.splice(r,1)}async updateObservers(...t){return new Promise((r,e)=>{Promise.all(this.observers.map(r=>r.refresh(...t))).then(()=>{r()}).catch(r=>e(new ObserverError(r)))})}static get current(){return this._current}static get(r){var e=Injectables.get(genAdapterInjectableKey(r));if(e)return e;throw new InternalError(`No Adapter registered under ${r}. Did you use the @adapter decorator?`)}static setCurrent(r){var e=this.get(r);if(!e)throw new NotFoundError(`No persistence flavour ${r} registered`);this._current=e}}export{Adapter};
1
+ import{InternalError,NotFoundError}from"@decaf-ts/db-decorators";import{ObserverError}from"../repository/errors";import{Model}from"@decaf-ts/decorator-validation";import{getColumnName}from"./utils";import{PersistenceKeys}from"./constants";class Adapter{static{this._cache={}}get native(){return this._native}constructor(e,r){this.observers=[],this._native=e,Adapter._cache[r]=this}isReserved(e){return!e}async prepare(s,i){var e=Object.entries(s).reduce((e,[r,t])=>{if(r!==i){r=getColumnName(s,r);if(this.isReserved(r))throw new InternalError(`Property name ${r} is reserved`);e[r]=t}return e},{});return s[PersistenceKeys.METADATA]&&Object.defineProperty(e,PersistenceKeys.METADATA,{enumerable:!1,writable:!1,value:s[PersistenceKeys.METADATA]}),{record:e,id:s[i]}}async revert(t,e,s,r){var i={},r=(i[s]=r,"string"==typeof e?Model.build(i,e):new e(i)),e=t[PersistenceKeys.METADATA],i=Object.keys(r).reduce((e,r)=>(r!==s&&(e[r]=t[getColumnName(e,r)]),e),r);return e&&Object.defineProperty(i,PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:e}),i}observe(e){if(-1!==this.observers.indexOf(e))throw new InternalError("Observer already registered");this.observers.push(e)}unObserve(e){e=this.observers.indexOf(e);if(-1===e)throw new InternalError("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(...t){return new Promise((e,r)=>{Promise.all(this.observers.map(e=>e.refresh(...t))).then(()=>{e()}).catch(e=>r(new ObserverError(e)))})}static get current(){return this._current}static get(e){if(e in this._cache)return this._cache[e];throw new InternalError(`No Adapter registered under ${e}. Did you use the @adapter decorator?`)}static setCurrent(e){var r=this.get(e);if(!r)throw new NotFoundError(`No persistence flavour ${e} registered`);this._current=r}}export{Adapter};
@@ -1 +1 @@
1
- let PersistenceKeys={REFLECT:"model.persistence.",INDEX:"index",UNIQUE:"unique",ADAPTER:"adapter",INJECTABLE:"decaf-adapter-{0}"};export{PersistenceKeys};
1
+ let PersistenceKeys={REFLECT:"model.persistence.",INDEX:"index",UNIQUE:"unique",ADAPTER:"adapter",INJECTABLE:"decaf-adapter-{0}",TABLE:"table",COLUMN:"column",METADATA:"__metadata"};export{PersistenceKeys};
@@ -1,3 +1,2 @@
1
1
  export declare function getPersistenceKey(key: string): string;
2
- export declare function adapter(flavour: string): (original: any) => any;
3
2
  export declare function uses(flavour: string): import("@decaf-ts/reflection").CustomDecorator<V>;
@@ -1 +1 @@
1
- import{injectable}from"@decaf-ts/injectable-decorators";import{metadata}from"@decaf-ts/reflection";import{PersistenceKeys}from"./constants";import{genAdapterInjectableKey}from"./utils";function getPersistenceKey(e){return PersistenceKeys.REFLECT+e}function adapter(e){return injectable(genAdapterInjectableKey(e),!0)}function uses(e){return metadata(getPersistenceKey(PersistenceKeys.ADAPTER),genAdapterInjectableKey(e))}export{getPersistenceKey,adapter,uses};
1
+ import{metadata}from"@decaf-ts/reflection";import{PersistenceKeys}from"./constants";function getPersistenceKey(e){return PersistenceKeys.REFLECT+e}function uses(e){return metadata(getPersistenceKey(PersistenceKeys.ADAPTER),e)}export{getPersistenceKey,uses};
@@ -1 +1,3 @@
1
+ import { DBModel } from "@decaf-ts/db-decorators";
1
2
  export declare function genAdapterInjectableKey(flavour: string): string;
3
+ export declare function getColumnName<T extends DBModel>(model: T, attribute: string): any;
@@ -1 +1 @@
1
- import{sf}from"@decaf-ts/decorator-validation";import{PersistenceKeys}from"./constants";function genAdapterInjectableKey(e){return sf(PersistenceKeys.INJECTABLE,e)}export{genAdapterInjectableKey};
1
+ import{sf}from"@decaf-ts/decorator-validation";import{PersistenceKeys}from"./constants";import{getPersistenceKey}from"./decorators";function genAdapterInjectableKey(e){return sf(PersistenceKeys.INJECTABLE,e)}function getColumnName(e,t){e=Reflect.getMetadata(getPersistenceKey(PersistenceKeys.COLUMN),e,t);return e||t}export{genAdapterInjectableKey,getColumnName};
@@ -2,15 +2,21 @@ import { DBModel, Repository as Rep } from "@decaf-ts/db-decorators";
2
2
  import { Observable } from "../interfaces/Observable";
3
3
  import { Observer } from "../interfaces/Observer";
4
4
  import { Adapter } from "../persistence/Adapter";
5
- export declare abstract class Repository<T extends DBModel> extends Rep<T> implements Observable {
5
+ import { Constructor } from "@decaf-ts/decorator-validation";
6
+ export declare class Repository<T extends DBModel, V = any> extends Rep<T> implements Observable {
6
7
  private observers;
7
8
  private readonly _adapter;
8
- get adapter(): Adapter<string>;
9
- protected constructor();
9
+ private _tableName;
10
+ private _pk;
11
+ get adapter(): Adapter<any, V>;
12
+ protected get tableName(): string;
13
+ protected get pk(): string;
14
+ constructor(adapter?: Adapter<any, V>, clazz?: Constructor<T>);
10
15
  create(model: T, ...args: any[]): Promise<T>;
11
- read(key: string, ...args: any[]): Promise<T>;
16
+ read(id: string, ...args: any[]): Promise<T>;
12
17
  update(model: T, ...args: any[]): Promise<T>;
13
- delete(key: string, ...args: any[]): Promise<T>;
18
+ protected updatePrefix(model: T, ...args: any[]): Promise<[T, ...args: any[]]>;
19
+ delete(id: string, ...args: any[]): Promise<T>;
14
20
  /**
15
21
  * @summary Registers an {@link Observer}
16
22
  * @param {Observer} observer
@@ -30,4 +36,5 @@ export declare abstract class Repository<T extends DBModel> extends Rep<T> imple
30
36
  * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
31
37
  */
32
38
  updateObservers(...args: any[]): Promise<void>;
39
+ static forModel<T extends DBModel>(model: Constructor<T>): Repository<T>;
33
40
  }
@@ -1 +1 @@
1
- import{InternalError,Repository as Rep}from"@decaf-ts/db-decorators";import{ObserverError}from"./errors";class Repository extends Rep{get adapter(){if(this._adapter)return this._adapter;throw new InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?")}constructor(){super(),this.observers=[]}async create(r,...e){return this.adapter.create(r,...e)}async read(r,...e){return this.adapter.read(r,...e)}async update(r,...e){return this.adapter.update(r,...e)}async delete(r,...e){return this.adapter.delete(r,...e)}observe(r){if(-1!==this.observers.indexOf(r))throw new InternalError("Observer already registered");this.observers.push(r)}unObserve(r){r=this.observers.indexOf(r);if(-1===r)throw new InternalError("Failed to find Observer");this.observers.splice(r,1)}async updateObservers(...t){return new Promise((r,e)=>{Promise.all(this.observers.map(r=>r.refresh(...t))).then(()=>{r()}).catch(r=>e(new ObserverError(r)))})}}export{Repository};
1
+ import{DBKeys,enforceDBDecorators,findModelId,findPrimaryKey,getDBKey,InternalError,OperationKeys,Repository as Rep,ValidationError}from"@decaf-ts/db-decorators";import{ObserverError}from"./errors";import{Adapter}from"../persistence/Adapter";import{getTableName}from"./utils";import{getPersistenceKey}from"../persistence/decorators";import{PersistenceKeys}from"../persistence/constants";class Repository extends Rep{get adapter(){if(this._adapter)return this._adapter;throw new InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?")}get tableName(){return this._tableName||(this._tableName=getTableName(this.class)),this._tableName}get pk(){return this._pk||(this._pk=findPrimaryKey(new this.class).id),this._pk}constructor(e,r){super(r),this.observers=[],e&&(this._adapter=e)}async create(e,...r){var{record:e,id:t}=await this.adapter.prepare(e,this.pk),e=await this.adapter.create(this.tableName,t,e,...r);return this.adapter.revert(e,this.class,this.pk,t)}async read(e,...r){r=await this.adapter.read(this.tableName,e,...r);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...r){var{record:e,id:t}=await this.adapter.prepare(e,this.pk),e=await this.adapter.update(this.tableName,t,e,...r);return this.adapter.revert(e,this.class,this.pk,t)}async updatePrefix(e,...r){e=new this.class(e);var t=findModelId(e),t=await this.read(t),s=(await enforceDBDecorators(this,e,OperationKeys.UPDATE,OperationKeys.ON,t),e.hasErrors(t));if(s)throw new ValidationError(s.toString());return t[PersistenceKeys.METADATA]&&!e[PersistenceKeys.METADATA]&&Object.defineProperty(e,PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:t[PersistenceKeys.METADATA]}),[e,...r]}async delete(e,...r){r=await this.adapter.delete(this.tableName,e,...r);return this.adapter.revert(r,this.class,this.pk,e)}observe(e){if(-1!==this.observers.indexOf(e))throw new InternalError("Observer already registered");this.observers.push(e)}unObserve(e){e=this.observers.indexOf(e);if(-1===e)throw new InternalError("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(...t){return new Promise((e,r)=>{Promise.all(this.observers.map(e=>e.refresh(...t))).then(()=>{e()}).catch(e=>r(new ObserverError(e)))})}static forModel(r){var e=Reflect.getMetadata(getDBKey(DBKeys.REPOSITORY),r.constructor);if(!e)throw new InternalError("No registered repository found for model "+r.constructor.name);var t=Reflect.getMetadata(getPersistenceKey(PersistenceKeys.ADAPTER),e.constructor);if(!t)throw new InternalError("No registered persistence adapter found for model "+r.constructor.name);var s=Adapter.get(t);if(!s)throw new InternalError("No registered persistence adapter found flavour "+t);let a;try{a=e(s)}catch(e){throw new InternalError(`Failed to boot repository for ${r.constructor.name} using persistence adapter `+t)}return a}}export{Repository};
@@ -0,0 +1,3 @@
1
+ import { DBModel } from "@decaf-ts/db-decorators";
2
+ import { Constructor } from "@decaf-ts/decorator-validation";
3
+ export declare function repository<T extends DBModel>(model: Constructor<T>, nameOverride?: string): (original: any, propertyKey?: string) => any;
@@ -0,0 +1 @@
1
+ import{inject,injectable}from"@decaf-ts/injectable-decorators";import{DBKeys,getDBKey}from"@decaf-ts/db-decorators";import{metadata}from"@decaf-ts/reflection";import{bootRepository}from"./utils";function repository(o,a){return(e,t)=>{var r;return t?(r=bootRepository(o,e),inject(r)(e,t)):(metadata(getDBKey(DBKeys.REPOSITORY),a||e.name)(o),injectable(a||e.name,!0,e=>{Object.defineProperty(e,DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:o})})(e))}}export{repository};
@@ -1,2 +1,6 @@
1
+ export * from "./constants";
2
+ export * from "./decorators";
1
3
  export * from "./errors";
2
4
  export * from "./Repository";
5
+ export * from "./types";
6
+ export * from "./utils";
@@ -1 +1 @@
1
- export*from"./errors";export*from"./Repository";
1
+ export*from"./constants";export*from"./decorators";export*from"./errors";export*from"./Repository";export*from"./types";export*from"./utils";
@@ -0,0 +1,5 @@
1
+ import { DBModel } from "@decaf-ts/db-decorators";
2
+ import { Repository } from "./Repository";
3
+ import { Constructor } from "@decaf-ts/decorator-validation";
4
+ export declare function bootRepository<T extends DBModel>(model: Constructor<T>, original: (...args: any[]) => Repository<T>): string;
5
+ export declare function getTableName<T extends DBModel>(model: T | any): any;
@@ -0,0 +1 @@
1
+ import{DBKeys,DBModel,getDBKey,InternalError}from"@decaf-ts/db-decorators";import{Injectables}from"@decaf-ts/injectable-decorators";import{Adapter}from"../persistence/Adapter";import{getPersistenceKey}from"../persistence/decorators";import{PersistenceKeys}from"../persistence/constants";function bootRepository(e,t){var r=Reflect.getMetadata(getDBKey(DBKeys.REPOSITORY),e);if(!r)throw new InternalError("No Repository defined for model "+e.constructor.name);e=Reflect.getMetadata(getPersistenceKey(PersistenceKeys.ADAPTER),t);if(!e)throw new InternalError("Could not find persistence adapter definition for repository "+t.name);try{var o=Adapter.get(e);Injectables.get(r,o)}catch(e){throw new InternalError(e)}return r}function getTableName(e){var t=Reflect.getMetadata(getPersistenceKey(PersistenceKeys.TABLE),e instanceof DBModel?e.constructor:e);return t||(e instanceof DBModel?e.constructor:e).name}export{bootRepository,getTableName};
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.VERSION=void 0,__exportStar(require("./identity/index.cjs"),exports),__exportStar(require("./interfaces/index.cjs"),exports),__exportStar(require("./model/index.cjs"),exports),__exportStar(require("./persistence/index.cjs"),exports),__exportStar(require("./repository/index.cjs"),exports),exports.VERSION="0.0.4";
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.VERSION=void 0,__exportStar(require("./identity/index.cjs"),exports),__exportStar(require("./interfaces/index.cjs"),exports),__exportStar(require("./model/index.cjs"),exports),__exportStar(require("./persistence/index.cjs"),exports),__exportStar(require("./repository/index.cjs"),exports),exports.VERSION="0.1.1";
package/lib/index.d.ts CHANGED
@@ -20,4 +20,4 @@ export * from "./repository";
20
20
  * @const VERSION
21
21
  * @memberOf module:ts-workspace
22
22
  */
23
- export declare const VERSION = "0.0.4";
23
+ export declare const VERSION = "0.1.1";
@@ -6,5 +6,6 @@
6
6
  * @category Sequences
7
7
  */
8
8
  export interface SequenceOptions {
9
- startingValue: string | number;
9
+ name?: string;
10
+ startingValue?: string | number;
10
11
  }
@@ -1 +1 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./Builder.cjs"),exports),__exportStar(require("./Executor.cjs"),exports),__exportStar(require("./IAdapter.cjs"),exports),__exportStar(require("./Observable.cjs"),exports),__exportStar(require("./Observer.cjs"),exports),__exportStar(require("./RawExecutor.cjs"),exports),__exportStar(require("./Sequence.cjs"),exports),__exportStar(require("./SequenceOptions.cjs"),exports);
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./Builder.cjs"),exports),__exportStar(require("./Executor.cjs"),exports),__exportStar(require("./Observable.cjs"),exports),__exportStar(require("./Observer.cjs"),exports),__exportStar(require("./RawExecutor.cjs"),exports),__exportStar(require("./Sequence.cjs"),exports),__exportStar(require("./SequenceOptions.cjs"),exports);
@@ -1,6 +1,5 @@
1
1
  export * from "./Builder";
2
2
  export * from "./Executor";
3
- export * from "./IAdapter";
4
3
  export * from "./Observable";
5
4
  export * from "./Observer";
6
5
  export * from "./RawExecutor";
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.index=index,exports.uniqueOnCreateUpdate=uniqueOnCreateUpdate,exports.unique=unique;let db_decorators_1=require("@decaf-ts/db-decorators"),reflection_1=require("@decaf-ts/reflection"),constants_1=require("../persistence/constants.cjs");function index(e,t){return(0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(""+constants_1.PersistenceKeys.INDEX+(e&&e.length?"."+e.join("."):"")),{directions:t,compositions:e})}async function uniqueOnCreateUpdate(e,t,r){if(r[t]){try{await this.read(r[t])}catch(e){if(e instanceof db_decorators_1.NotFoundError)return}throw new db_decorators_1.ConflictError(`model already exists with ${t} equal to `+JSON.stringify(r[t],void 0,2))}}function unique(){return(0,reflection_1.apply)((0,db_decorators_1.onCreateUpdate)(uniqueOnCreateUpdate),(0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(constants_1.PersistenceKeys.UNIQUE),{}))}
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.table=table,exports.column=column,exports.index=index,exports.uniqueOnCreateUpdate=uniqueOnCreateUpdate,exports.unique=unique;let db_decorators_1=require("@decaf-ts/db-decorators"),reflection_1=require("@decaf-ts/reflection"),constants_1=require("../persistence/constants.cjs"),decorators_1=require("../persistence/decorators.cjs");function table(e){return(0,reflection_1.metadata)((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.TABLE),e)}function column(e){return(0,reflection_1.metadata)((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.COLUMN),e)}function index(e,t){return(0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(""+constants_1.PersistenceKeys.INDEX+(e&&e.length?"."+e.join("."):"")),{directions:t,compositions:e})}async function uniqueOnCreateUpdate(e,t,r){if(r[t]){try{await this.read(r[t])}catch(e){if(e instanceof db_decorators_1.NotFoundError)return}throw new db_decorators_1.ConflictError(`model already exists with ${t} equal to `+JSON.stringify(r[t],void 0,2))}}function unique(){return(0,reflection_1.apply)((0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(constants_1.PersistenceKeys.UNIQUE),{}))}
@@ -1,3 +1,7 @@
1
+ import { DBModel, IRepository } from "@decaf-ts/db-decorators";
2
+ import { OrderDirection } from "../repository/constants";
3
+ export declare function table(tableName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
4
+ export declare function column(columnName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
1
5
  /**
2
6
  * @summary Index Decorator
3
7
  * @description properties decorated will the index in the
@@ -7,8 +11,7 @@
7
11
  * @param {string[]} [compositions]
8
12
  *
9
13
  * @function index
10
- */ import { DBModel, IRepository } from "@decaf-ts/db-decorators";
11
- import { OrderDirection } from "../repository/constants";
14
+ */
12
15
  export declare function index(compositions?: string[], directions?: OrderDirection[]): import("@decaf-ts/reflection").CustomDecorator<V>;
13
16
  export declare function uniqueOnCreateUpdate<T extends DBModel, V extends IRepository<T>, Y = any>(this: V, data: Y, key: string, model: T): Promise<void>;
14
17
  /**
@@ -1 +1 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&("get"in n?t.__esModule:!n.writable&&!n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BaseModel.cjs"),exports);
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&("get"in i?t.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){e[o=void 0===o?r:o]=t[r]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BaseModel.cjs"),exports),__exportStar(require("./decorators.cjs"),exports);
@@ -1 +1,2 @@
1
1
  export * from "./BaseModel";
2
+ export * from "./decorators";
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.Adapter=void 0;let db_decorators_1=require("@decaf-ts/db-decorators"),injectable_decorators_1=require("@decaf-ts/injectable-decorators"),utils_1=require("./utils.cjs"),errors_1=require("../repository/errors.cjs");class Adapter{constructor(){this.observers=[]}observe(r){if(-1!==this.observers.indexOf(r))throw new db_decorators_1.InternalError("Observer already registered");this.observers.push(r)}unObserve(r){r=this.observers.indexOf(r);if(-1===r)throw new db_decorators_1.InternalError("Failed to find Observer");this.observers.splice(r,1)}async updateObservers(...t){return new Promise((r,e)=>{Promise.all(this.observers.map(r=>r.refresh(...t))).then(()=>{r()}).catch(r=>e(new errors_1.ObserverError(r)))})}static get current(){return this._current}static get(r){var e=injectable_decorators_1.Injectables.get((0,utils_1.genAdapterInjectableKey)(r));if(e)return e;throw new db_decorators_1.InternalError(`No Adapter registered under ${r}. Did you use the @adapter decorator?`)}static setCurrent(r){var e=this.get(r);if(!e)throw new db_decorators_1.NotFoundError(`No persistence flavour ${r} registered`);this._current=e}}exports.Adapter=Adapter;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.Adapter=void 0;let db_decorators_1=require("@decaf-ts/db-decorators"),errors_1=require("../repository/errors.cjs"),decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("./constants.cjs");class Adapter{static{this._cache={}}get native(){return this._native}constructor(e,r){this.observers=[],this._native=e,Adapter._cache[r]=this}isReserved(e){return!e}async prepare(s,o){var e=Object.entries(s).reduce((e,[r,t])=>{if(r!==o){r=(0,utils_1.getColumnName)(s,r);if(this.isReserved(r))throw new db_decorators_1.InternalError(`Property name ${r} is reserved`);e[r]=t}return e},{});return s[constants_1.PersistenceKeys.METADATA]&&Object.defineProperty(e,constants_1.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,value:s[constants_1.PersistenceKeys.METADATA]}),{record:e,id:s[o]}}async revert(t,e,s,r){var o={},r=(o[s]=r,"string"==typeof e?decorator_validation_1.Model.build(o,e):new e(o)),e=t[constants_1.PersistenceKeys.METADATA],o=Object.keys(r).reduce((e,r)=>(r!==s&&(e[r]=t[(0,utils_1.getColumnName)(e,r)]),e),r);return e&&Object.defineProperty(o,constants_1.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:e}),o}observe(e){if(-1!==this.observers.indexOf(e))throw new db_decorators_1.InternalError("Observer already registered");this.observers.push(e)}unObserve(e){e=this.observers.indexOf(e);if(-1===e)throw new db_decorators_1.InternalError("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(...t){return new Promise((e,r)=>{Promise.all(this.observers.map(e=>e.refresh(...t))).then(()=>{e()}).catch(e=>r(new errors_1.ObserverError(e)))})}static get current(){return this._current}static get(e){if(e in this._cache)return this._cache[e];throw new db_decorators_1.InternalError(`No Adapter registered under ${e}. Did you use the @adapter decorator?`)}static setCurrent(e){var r=this.get(e);if(!r)throw new db_decorators_1.NotFoundError(`No persistence flavour ${e} registered`);this._current=r}}exports.Adapter=Adapter;
@@ -1,18 +1,30 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
1
+ import { BaseError, DBModel } from "@decaf-ts/db-decorators";
2
2
  import { Observer } from "../interfaces/Observer";
3
- import { IAdapter } from "../interfaces/IAdapter";
4
3
  import { Sequence } from "../interfaces/Sequence";
5
4
  import { Constructor } from "@decaf-ts/decorator-validation";
6
5
  import { SequenceOptions } from "../interfaces/SequenceOptions";
7
- export declare abstract class Adapter<T = string> implements IAdapter<T> {
6
+ import { RawExecutor } from "../interfaces/RawExecutor";
7
+ import { Observable } from "../interfaces/Observable";
8
+ export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>, Observable {
8
9
  private static _current;
10
+ private static _cache;
9
11
  private observers;
12
+ private readonly _native;
13
+ get native(): Y;
14
+ constructor(native: Y, flavour: string);
15
+ protected isReserved(attr: string): boolean;
16
+ protected abstract parseError(err: Error): BaseError;
10
17
  abstract createIndex(...args: any[]): Promise<any>;
11
18
  abstract getSequence<V extends DBModel>(model: V, sequence: Constructor<Sequence>, options?: SequenceOptions): Promise<Sequence>;
12
- abstract create<V>(model: V, ...args: any[]): Promise<V>;
13
- abstract read<V>(key: string | number, ...args: any[]): Promise<V>;
14
- abstract update<V>(model: V, ...args: any[]): Promise<V>;
15
- abstract delete<V>(key: string | number, ...args: any[]): Promise<V>;
19
+ prepare<V extends DBModel>(model: V, pk: string | number): Promise<{
20
+ record: Record<string, any>;
21
+ id: string;
22
+ }>;
23
+ revert<V extends DBModel>(obj: Record<string, any>, clazz: string | Constructor<V>, pk: string, id: string | number): Promise<V>;
24
+ abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
25
+ abstract read(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
26
+ abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
27
+ abstract delete(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
16
28
  abstract raw<V>(rawInput: T, ...args: any[]): Promise<V>;
17
29
  /**
18
30
  * @summary Registers an {@link Observer}
@@ -33,7 +45,7 @@ export declare abstract class Adapter<T = string> implements IAdapter<T> {
33
45
  * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
34
46
  */
35
47
  updateObservers(...args: any[]): Promise<void>;
36
- static get current(): Adapter<any>;
48
+ static get current(): Adapter<any, any>;
37
49
  static get(flavour: any): Adapter<any> | undefined;
38
50
  static setCurrent(flavour: string): void;
39
51
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.PersistenceKeys=void 0,exports.PersistenceKeys={REFLECT:"model.persistence.",INDEX:"index",UNIQUE:"unique",ADAPTER:"adapter",INJECTABLE:"decaf-adapter-{0}"};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.PersistenceKeys=void 0,exports.PersistenceKeys={REFLECT:"model.persistence.",INDEX:"index",UNIQUE:"unique",ADAPTER:"adapter",INJECTABLE:"decaf-adapter-{0}",TABLE:"table",COLUMN:"column",METADATA:"__metadata"};
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPersistenceKey=getPersistenceKey,exports.adapter=adapter,exports.uses=uses;let injectable_decorators_1=require("@decaf-ts/injectable-decorators"),reflection_1=require("@decaf-ts/reflection"),constants_1=require("./constants.cjs"),utils_1=require("./utils.cjs");function getPersistenceKey(e){return constants_1.PersistenceKeys.REFLECT+e}function adapter(e){return(0,injectable_decorators_1.injectable)((0,utils_1.genAdapterInjectableKey)(e),!0)}function uses(e){return(0,reflection_1.metadata)(getPersistenceKey(constants_1.PersistenceKeys.ADAPTER),(0,utils_1.genAdapterInjectableKey)(e))}
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPersistenceKey=getPersistenceKey,exports.uses=uses;let reflection_1=require("@decaf-ts/reflection"),constants_1=require("./constants.cjs");function getPersistenceKey(e){return constants_1.PersistenceKeys.REFLECT+e}function uses(e){return(0,reflection_1.metadata)(getPersistenceKey(constants_1.PersistenceKeys.ADAPTER),e)}
@@ -1,3 +1,2 @@
1
1
  export declare function getPersistenceKey(key: string): string;
2
- export declare function adapter(flavour: string): (original: any) => any;
3
2
  export declare function uses(flavour: string): import("@decaf-ts/reflection").CustomDecorator<V>;
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.genAdapterInjectableKey=genAdapterInjectableKey;let decorator_validation_1=require("@decaf-ts/decorator-validation"),constants_1=require("./constants.cjs");function genAdapterInjectableKey(e){return(0,decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE,e)}
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.genAdapterInjectableKey=genAdapterInjectableKey,exports.getColumnName=getColumnName;let decorator_validation_1=require("@decaf-ts/decorator-validation"),constants_1=require("./constants.cjs"),decorators_1=require("./decorators.cjs");function genAdapterInjectableKey(e){return(0,decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE,e)}function getColumnName(e,t){e=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.COLUMN),e,t);return e||t}
@@ -1 +1,3 @@
1
+ import { DBModel } from "@decaf-ts/db-decorators";
1
2
  export declare function genAdapterInjectableKey(flavour: string): string;
3
+ export declare function getColumnName<T extends DBModel>(model: T, attribute: string): any;
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repository=void 0;let db_decorators_1=require("@decaf-ts/db-decorators"),errors_1=require("./errors.cjs");class Repository extends db_decorators_1.Repository{get adapter(){if(this._adapter)return this._adapter;throw new db_decorators_1.InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?")}constructor(){super(),this.observers=[]}async create(r,...e){return this.adapter.create(r,...e)}async read(r,...e){return this.adapter.read(r,...e)}async update(r,...e){return this.adapter.update(r,...e)}async delete(r,...e){return this.adapter.delete(r,...e)}observe(r){if(-1!==this.observers.indexOf(r))throw new db_decorators_1.InternalError("Observer already registered");this.observers.push(r)}unObserve(r){r=this.observers.indexOf(r);if(-1===r)throw new db_decorators_1.InternalError("Failed to find Observer");this.observers.splice(r,1)}async updateObservers(...s){return new Promise((r,e)=>{Promise.all(this.observers.map(r=>r.refresh(...s))).then(()=>{r()}).catch(r=>e(new errors_1.ObserverError(r)))})}}exports.Repository=Repository;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repository=void 0;let db_decorators_1=require("@decaf-ts/db-decorators"),errors_1=require("./errors.cjs"),Adapter_1=require("../persistence/Adapter.cjs"),utils_1=require("./utils.cjs"),decorators_1=require("../persistence/decorators.cjs"),constants_1=require("../persistence/constants.cjs");class Repository extends db_decorators_1.Repository{get adapter(){if(this._adapter)return this._adapter;throw new db_decorators_1.InternalError("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?")}get tableName(){return this._tableName||(this._tableName=(0,utils_1.getTableName)(this.class)),this._tableName}get pk(){return this._pk||(this._pk=(0,db_decorators_1.findPrimaryKey)(new this.class).id),this._pk}constructor(e,r){super(r),this.observers=[],e&&(this._adapter=e)}async create(e,...r){var{record:e,id:t}=await this.adapter.prepare(e,this.pk),e=await this.adapter.create(this.tableName,t,e,...r);return this.adapter.revert(e,this.class,this.pk,t)}async read(e,...r){r=await this.adapter.read(this.tableName,e,...r);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...r){var{record:e,id:t}=await this.adapter.prepare(e,this.pk),e=await this.adapter.update(this.tableName,t,e,...r);return this.adapter.revert(e,this.class,this.pk,t)}async updatePrefix(e,...r){e=new this.class(e);var t=(0,db_decorators_1.findModelId)(e),t=await this.read(t),s=(await(0,db_decorators_1.enforceDBDecorators)(this,e,db_decorators_1.OperationKeys.UPDATE,db_decorators_1.OperationKeys.ON,t),e.hasErrors(t));if(s)throw new db_decorators_1.ValidationError(s.toString());return t[constants_1.PersistenceKeys.METADATA]&&!e[constants_1.PersistenceKeys.METADATA]&&Object.defineProperty(e,constants_1.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:t[constants_1.PersistenceKeys.METADATA]}),[e,...r]}async delete(e,...r){r=await this.adapter.delete(this.tableName,e,...r);return this.adapter.revert(r,this.class,this.pk,e)}observe(e){if(-1!==this.observers.indexOf(e))throw new db_decorators_1.InternalError("Observer already registered");this.observers.push(e)}unObserve(e){e=this.observers.indexOf(e);if(-1===e)throw new db_decorators_1.InternalError("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(...t){return new Promise((e,r)=>{Promise.all(this.observers.map(e=>e.refresh(...t))).then(()=>{e()}).catch(e=>r(new errors_1.ObserverError(e)))})}static forModel(r){var e=Reflect.getMetadata((0,db_decorators_1.getDBKey)(db_decorators_1.DBKeys.REPOSITORY),r.constructor);if(!e)throw new db_decorators_1.InternalError("No registered repository found for model "+r.constructor.name);var t=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.ADAPTER),e.constructor);if(!t)throw new db_decorators_1.InternalError("No registered persistence adapter found for model "+r.constructor.name);var s=Adapter_1.Adapter.get(t);if(!s)throw new db_decorators_1.InternalError("No registered persistence adapter found flavour "+t);let a;try{a=e(s)}catch(e){throw new db_decorators_1.InternalError(`Failed to boot repository for ${r.constructor.name} using persistence adapter `+t)}return a}}exports.Repository=Repository;
@@ -2,15 +2,21 @@ import { DBModel, Repository as Rep } from "@decaf-ts/db-decorators";
2
2
  import { Observable } from "../interfaces/Observable";
3
3
  import { Observer } from "../interfaces/Observer";
4
4
  import { Adapter } from "../persistence/Adapter";
5
- export declare abstract class Repository<T extends DBModel> extends Rep<T> implements Observable {
5
+ import { Constructor } from "@decaf-ts/decorator-validation";
6
+ export declare class Repository<T extends DBModel, V = any> extends Rep<T> implements Observable {
6
7
  private observers;
7
8
  private readonly _adapter;
8
- get adapter(): Adapter<string>;
9
- protected constructor();
9
+ private _tableName;
10
+ private _pk;
11
+ get adapter(): Adapter<any, V>;
12
+ protected get tableName(): string;
13
+ protected get pk(): string;
14
+ constructor(adapter?: Adapter<any, V>, clazz?: Constructor<T>);
10
15
  create(model: T, ...args: any[]): Promise<T>;
11
- read(key: string, ...args: any[]): Promise<T>;
16
+ read(id: string, ...args: any[]): Promise<T>;
12
17
  update(model: T, ...args: any[]): Promise<T>;
13
- delete(key: string, ...args: any[]): Promise<T>;
18
+ protected updatePrefix(model: T, ...args: any[]): Promise<[T, ...args: any[]]>;
19
+ delete(id: string, ...args: any[]): Promise<T>;
14
20
  /**
15
21
  * @summary Registers an {@link Observer}
16
22
  * @param {Observer} observer
@@ -30,4 +36,5 @@ export declare abstract class Repository<T extends DBModel> extends Rep<T> imple
30
36
  * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
31
37
  */
32
38
  updateObservers(...args: any[]): Promise<void>;
39
+ static forModel<T extends DBModel>(model: Constructor<T>): Repository<T>;
33
40
  }
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.repository=repository;let injectable_decorators_1=require("@decaf-ts/injectable-decorators"),db_decorators_1=require("@decaf-ts/db-decorators"),reflection_1=require("@decaf-ts/reflection"),utils_1=require("./utils.cjs");function repository(o,a){return(e,r)=>{var t;return r?(t=(0,utils_1.bootRepository)(o,e),(0,injectable_decorators_1.inject)(t)(e,r)):((0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(db_decorators_1.DBKeys.REPOSITORY),a||e.name)(o),(0,injectable_decorators_1.injectable)(a||e.name,!0,e=>{Object.defineProperty(e,db_decorators_1.DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:o})})(e))}}
@@ -0,0 +1,3 @@
1
+ import { DBModel } from "@decaf-ts/db-decorators";
2
+ import { Constructor } from "@decaf-ts/decorator-validation";
3
+ export declare function repository<T extends DBModel>(model: Constructor<T>, nameOverride?: string): (original: any, propertyKey?: string) => any;
@@ -1 +1 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./errors.cjs"),exports),__exportStar(require("./Repository.cjs"),exports);
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./constants.cjs"),exports),__exportStar(require("./decorators.cjs"),exports),__exportStar(require("./errors.cjs"),exports),__exportStar(require("./Repository.cjs"),exports),__exportStar(require("./types.cjs"),exports),__exportStar(require("./utils.cjs"),exports);
@@ -1,2 +1,6 @@
1
+ export * from "./constants";
2
+ export * from "./decorators";
1
3
  export * from "./errors";
2
4
  export * from "./Repository";
5
+ export * from "./types";
6
+ export * from "./utils";
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.bootRepository=bootRepository,exports.getTableName=getTableName;let db_decorators_1=require("@decaf-ts/db-decorators"),injectable_decorators_1=require("@decaf-ts/injectable-decorators"),Adapter_1=require("../persistence/Adapter.cjs"),decorators_1=require("../persistence/decorators.cjs"),constants_1=require("../persistence/constants.cjs");function bootRepository(e,t){var r=Reflect.getMetadata((0,db_decorators_1.getDBKey)(db_decorators_1.DBKeys.REPOSITORY),e);if(!r)throw new db_decorators_1.InternalError("No Repository defined for model "+e.constructor.name);e=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.ADAPTER),t);if(!e)throw new db_decorators_1.InternalError("Could not find persistence adapter definition for repository "+t.name);try{var o=Adapter_1.Adapter.get(e);injectable_decorators_1.Injectables.get(r,o)}catch(e){throw new db_decorators_1.InternalError(e)}return r}function getTableName(e){var t=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.TABLE),e instanceof db_decorators_1.DBModel?e.constructor:e);return t||(e instanceof db_decorators_1.DBModel?e.constructor:e).name}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "template for ts projects",
5
5
  "type": "module",
6
6
  "exports": {
@@ -64,13 +64,15 @@
64
64
  },
65
65
  "homepage": "https://github.com/decaf-ts/ts-workspace#readme",
66
66
  "devDependencies": {
67
- "@types/jest": "^29.5.12",
67
+ "@decaf-ts/transactional-decorators": "latest",
68
+ "@types/jest": "^29.5.13",
68
69
  "@typescript-eslint/eslint-plugin": "^7.1.1",
69
- "clean-publish": "^4.3.0",
70
+ "clean-publish": "^5.0.0",
71
+ "dpdm": "^3.14.0",
70
72
  "eslint": "^8.57.0",
71
73
  "eslint-config-prettier": "^9.1.0",
72
74
  "eslint-plugin-prettier": "^5.1.3",
73
- "gulp": "^4.0.2",
75
+ "gulp": "^5.0.0",
74
76
  "gulp-if": "^3.0.0",
75
77
  "gulp-rename": "^2.0.0",
76
78
  "gulp-replace": "^1.1.4",
@@ -81,18 +83,18 @@
81
83
  "jest": "^29.7.0",
82
84
  "jest-coverage-badges": "^1.1.2",
83
85
  "jest-junit": "^16.0.0",
84
- "jsdoc": "^4.0.2",
86
+ "jsdoc": "^4.0.3",
85
87
  "jsdoc-mermaid": "^1.0.0",
86
88
  "markdown-include": "^0.4.3",
87
89
  "merge-stream": "^2.0.0",
88
- "nodemon": "^3.1.0",
89
- "npm-check-updates": "^16.14.15",
90
- "prettier": "^3.2.5",
91
- "rimraf": "^5.0.5",
92
- "ts-jest": "^29.1.2",
90
+ "nodemon": "^3.1.7",
91
+ "npm-check-updates": "^17.1.3",
92
+ "prettier": "^3.3.3",
93
+ "rimraf": "^6.0.1",
94
+ "ts-jest": "^29.2.5",
93
95
  "ts-loader": "^9.5.1",
94
96
  "ts-node": "^10.9.2",
95
- "typescript": "^5.4.2",
97
+ "typescript": "^5.6.2",
96
98
  "vinyl-named": "^1.1.0",
97
99
  "webpack-stream": "^7.0.0"
98
100
  },
@@ -1,5 +0,0 @@
1
- import { RawExecutor } from "./RawExecutor";
2
- import { Observable } from "./Observable";
3
- import { CrudOperator } from "@decaf-ts/db-decorators";
4
- export interface IAdapter<T> extends CrudOperator<any>, RawExecutor<T>, Observable {
5
- }
File without changes
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1,5 +0,0 @@
1
- import { RawExecutor } from "./RawExecutor";
2
- import { Observable } from "./Observable";
3
- import { CrudOperator } from "@decaf-ts/db-decorators";
4
- export interface IAdapter<T> extends CrudOperator<any>, RawExecutor<T>, Observable {
5
- }