@typetron/framework 0.5.33 → 0.5.34

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.
package/Storage/Readme.md CHANGED
@@ -158,6 +158,21 @@ await avatars.assertExists('users/1.jpg')
158
158
  await avatars.assertCount('users', 1, true)
159
159
  ```
160
160
 
161
+ Services can inject a disk with `@Disk(name)`, or `@Disk()` for the default disk. The disk is resolved on every
162
+ access, so faking a disk also affects services that were already built:
163
+
164
+ ```ts
165
+ class AvatarService {
166
+ @Disk('avatars')
167
+ avatars: StorageDisk
168
+ }
169
+
170
+ const avatars = storage.fake('avatars')
171
+ await app.get(AvatarService).uploadAvatar(upload)
172
+ await avatars.assertExists('users/1.jpg')
173
+ storage.forget('avatars') // back to the configured disk
174
+ ```
175
+
161
176
  ## Custom Drivers
162
177
 
163
178
  Register a driver factory with `extend`. The factory receives its disk configuration, name, and Storage manager and returns a
@@ -4,6 +4,11 @@ import { Container } from './Container';
4
4
  export declare class ClassResolver extends BaseResolver {
5
5
  canResolve<T>(abstract: Constructor<T>): boolean;
6
6
  resolve<T>(abstract: Constructor<T>, parametersValues: object[]): T | Promise<T>;
7
+ /**
8
+ * Accessor properties resolve on every read so later container changes (e.g. faked disks) are seen.
9
+ * Defined on the instance so class field declarations can't shadow them. Assigning a value pins it.
10
+ */
11
+ private defineAccessors;
7
12
  reload<T>(abstract: Constructor<T>, concrete: T, container?: Container): T;
8
13
  }
9
14
  //# sourceMappingURL=ClassResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClassResolver.d.ts","sourceRoot":"","sources":["../../Container/ClassResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,qBAAa,aAAc,SAAQ,YAAY;IAC3C,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAIhD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE;IAiE/D,MAAM,CAAC,CAAC,EACJ,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,CAAC,EACX,SAAS,GAAE,SAA0B,GACtC,CAAC;CAyBP"}
1
+ {"version":3,"file":"ClassResolver.d.ts","sourceRoot":"","sources":["../../Container/ClassResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,qBAAa,aAAc,SAAQ,YAAY;IAC3C,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAIhD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE;IAwD/D;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB,MAAM,CAAC,CAAC,EACJ,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,CAAC,EACX,SAAS,GAAE,SAA0B,GACtC,CAAC;CAyBP"}
@@ -23,6 +23,7 @@ class ClassResolver extends Resolver_1.BaseResolver {
23
23
  });
24
24
  const instance = new abstract(...parameters);
25
25
  const metadata = Metadata_1.InjectableMetadata.get(abstract);
26
+ this.defineAccessors(instance, metadata);
26
27
  let asyncDependencies = 0;
27
28
  let resolve;
28
29
  let reject;
@@ -58,6 +59,25 @@ class ClassResolver extends Resolver_1.BaseResolver {
58
59
  }
59
60
  return instance;
60
61
  }
62
+ /**
63
+ * Accessor properties resolve on every read so later container changes (e.g. faked disks) are seen.
64
+ * Defined on the instance so class field declarations can't shadow them. Assigning a value pins it.
65
+ */
66
+ defineAccessors(instance, metadata) {
67
+ const container = this.container;
68
+ for (const property in metadata.accessors) {
69
+ const accessor = metadata.accessors[property];
70
+ let pinned;
71
+ Object.defineProperty(instance, property, {
72
+ configurable: true,
73
+ enumerable: true,
74
+ get: () => pinned ?? accessor(container),
75
+ set: (value) => {
76
+ pinned = value;
77
+ },
78
+ });
79
+ }
80
+ }
61
81
  // TODO figure out how to use this better
62
82
  // private getParameterValue<T>(abstract: Constructor<T>, index: number) {
63
83
  // const injectMetadata = Reflect.getMetadata('container:inject', abstract);
@@ -1 +1 @@
1
- {"version":3,"file":"ClassResolver.js","sourceRoot":"","sources":["../../Container/ClassResolver.ts"],"names":[],"mappings":";;;AACA,yCAAyC;AACzC,yCAAsD;AAEtD,yDAAoE;AAEpE,MAAa,aAAc,SAAQ,uBAAY;IAC3C,UAAU,CAAI,QAAwB;QAClC,OAAO,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA;IACpE,CAAC;IAED,OAAO,CAAI,QAAwB,EAAE,gBAA0B;QAE3D,gEAAgE;QAChE,MAAM,eAAe,GAAkB,kCAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU;eAChF,CAAC,kCAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAEpH,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;YACD,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAgB,CAAA,CAAC,8CAA8C;YACzG,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAA;QAE5C,MAAM,QAAQ,GAAG,6BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,iBAAiB,GAAG,CAAC,CAAA;QACzB,IAAI,OAA4C,CAAA;QAChD,IAAI,MAAkC,CAAA;QACtC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACtB,SAAQ;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAe,CAAA;YAClE,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;gBAC3B,iBAAiB,EAAE,CAAA;gBACnB,KAAK;qBACA,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;oBACpB,QAAQ,CAAC,UAAqB,CAAC,GAAG,aAAa,CAAA;oBAC/C,iBAAiB,EAAE,CAAA;oBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACrB,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACrB,CAAC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAA;gBACjB,CAAC,CAAC,CAAA;YACV,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,UAAqB,CAAC,GAAG,KAAK,CAAA;YAC3C,CAAC;QACL,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAI,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE;gBACtD,OAAO,GAAG,eAAe,CAAA;gBACzB,MAAM,GAAG,cAAc,CAAA;YAC3B,CAAC,CAAC,CAAA;QACN,CAAC;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,yCAAyC;IACzC,0EAA0E;IAC1E,gFAAgF;IAChF,6BAA6B;IAC7B,4FAA4F;IAC5F,QAAQ;IACR,sFAAsF;IACtF,6BAA6B;IAC7B,IAAI;IAEJ,MAAM,CACF,QAAwB,EACxB,QAAW,EACX,YAAuB,IAAI,CAAC,SAAS;QAErC,MAAM,QAAQ,GAAG,6BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjD,KAAK,MAAM,cAAc,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,SAAQ;YACZ,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACxD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,SAAQ;YACZ,CAAC;YACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACjC,QAAQ,CAAC,cAAyB,CAAC,GAAG,SAAS,CAAC,GAAG,CAC/C,UAAU,CACC,CAAA;gBACf,SAAQ;YACZ,CAAC;YACD,MAAM,kBAAkB,GAAG,6BAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC7D,IAAI,kBAAkB,CAAC,KAAK,KAAK,gBAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,KAAK,gBAAK,CAAC,UAAU,EAAE,CAAC;gBAC9F,QAAQ,CAAC,cAAyB,CAAC,GAAG,SAAS,CAAC,GAAG,CAC/C,UAAU,CACC,CAAA;YACnB,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;CACJ;AAnGD,sCAmGC"}
1
+ {"version":3,"file":"ClassResolver.js","sourceRoot":"","sources":["../../Container/ClassResolver.ts"],"names":[],"mappings":";;;AACA,yCAAyC;AACzC,yCAAsD;AAEtD,yDAAoE;AAEpE,MAAa,aAAc,SAAQ,uBAAY;IAC3C,UAAU,CAAI,QAAwB;QAClC,OAAO,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA;IACpE,CAAC;IAED,OAAO,CAAI,QAAwB,EAAE,gBAA0B;QAE3D,gEAAgE;QAChE,MAAM,eAAe,GAAkB,kCAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU;eAChF,CAAC,kCAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAEpH,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;YACD,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAgB,CAAA,CAAC,8CAA8C;YACzG,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAA;QAE5C,MAAM,QAAQ,GAAG,6BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACxC,IAAI,iBAAiB,GAAG,CAAC,CAAA;QACzB,IAAI,OAA4C,CAAA;QAChD,IAAI,MAAkC,CAAA;QACtC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACtB,SAAQ;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAe,CAAA;YAClE,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;gBAC3B,iBAAiB,EAAE,CAAA;gBACnB,KAAK;qBACA,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;oBACpB,QAAQ,CAAC,UAAqB,CAAC,GAAG,aAAa,CAAA;oBAC/C,iBAAiB,EAAE,CAAA;oBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACrB,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACrB,CAAC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAA;gBACjB,CAAC,CAAC,CAAA;YACV,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,UAAqB,CAAC,GAAG,KAAK,CAAA;YAC3C,CAAC;QACL,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAI,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE;gBACtD,OAAO,GAAG,eAAe,CAAA;gBACzB,MAAM,GAAG,cAAc,CAAA;YAC3B,CAAC,CAAC,CAAA;QACN,CAAC;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;;OAGG;IACK,eAAe,CAAI,QAAW,EAAE,QAA4B;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAC7C,IAAI,MAAe,CAAA;YACnB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBACtC,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;gBACxC,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE;oBACpB,MAAM,GAAG,KAAK,CAAA;gBAClB,CAAC;aACJ,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,0EAA0E;IAC1E,gFAAgF;IAChF,6BAA6B;IAC7B,4FAA4F;IAC5F,QAAQ;IACR,sFAAsF;IACtF,6BAA6B;IAC7B,IAAI;IAEJ,MAAM,CACF,QAAwB,EACxB,QAAW,EACX,YAAuB,IAAI,CAAC,SAAS;QAErC,MAAM,QAAQ,GAAG,6BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjD,KAAK,MAAM,cAAc,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,SAAQ;YACZ,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACxD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,SAAQ;YACZ,CAAC;YACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACjC,QAAQ,CAAC,cAAyB,CAAC,GAAG,SAAS,CAAC,GAAG,CAC/C,UAAU,CACC,CAAA;gBACf,SAAQ;YACZ,CAAC;YACD,MAAM,kBAAkB,GAAG,6BAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC7D,IAAI,kBAAkB,CAAC,KAAK,KAAK,gBAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,KAAK,gBAAK,CAAC,UAAU,EAAE,CAAC;gBAC9F,QAAQ,CAAC,cAAyB,CAAC,GAAG,SAAS,CAAC,GAAG,CAC/C,UAAU,CACC,CAAA;YACnB,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;CACJ;AAxHD,sCAwHC"}
@@ -1,5 +1,8 @@
1
1
  import { Resolver } from './Resolver';
2
2
  import { ServiceIdentifier } from './Contracts';
3
+ import type { Container } from './Container';
4
+ /** Resolves a property's value each time it is read */
5
+ export type PropertyAccessor = (container: Container) => unknown;
3
6
  export declare enum Scope {
4
7
  TRANSIENT = "TRANSIENT",
5
8
  SINGLETON = "SINGLETON",
@@ -17,6 +20,9 @@ export declare class InjectableMetadata extends InjectableMetadata_base {
17
20
  dependencies: {
18
21
  [key: string]: ServiceIdentifier<{}>;
19
22
  };
23
+ accessors: {
24
+ [key: string]: PropertyAccessor;
25
+ };
20
26
  }
21
27
  export {};
22
28
  //# sourceMappingURL=Metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../Container/Metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,oBAAY,KAAK;IACb,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;CAC5B;;;;;;AAED,qBAAa,kBAAmB,SAAQ,uBAAyB;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB,KAAK,EAAE,KAAK,CAAkB;IAC9B,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;KAAC,CAAK;CAC5D"}
1
+ {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../Container/Metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,uDAAuD;AACvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAA;AAEhE,oBAAY,KAAK;IACb,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;CAC5B;;;;;;AAED,qBAAa,kBAAmB,SAAQ,uBAAyB;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB,KAAK,EAAE,KAAK,CAAkB;IAC9B,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;KAAC,CAAK;IACzD,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAC,CAAK;CACpD"}
@@ -13,6 +13,7 @@ class InjectableMetadata extends (0, Metadata_1.MetadataKey)('injectable') {
13
13
  resolver;
14
14
  scope = Scope.SINGLETON;
15
15
  dependencies = {};
16
+ accessors = {};
16
17
  }
17
18
  exports.InjectableMetadata = InjectableMetadata;
18
19
  //# sourceMappingURL=Metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../Container/Metadata.ts"],"names":[],"mappings":";;;AAEA,kDAAiD;AAEjD,IAAY,KAKX;AALD,WAAY,KAAK;IACb,gCAAuB,CAAA;IACvB,gCAAuB,CAAA;IACvB,4BAAmB,CAAA;IACnB,kCAAyB,CAAA;AAC7B,CAAC,EALW,KAAK,qBAAL,KAAK,QAKhB;AAED,MAAa,kBAAmB,SAAQ,IAAA,sBAAW,EAAC,YAAY,CAAC;IAC7D,QAAQ,CAAW;IAEnB,KAAK,GAAU,KAAK,CAAC,SAAS,CAAA;IAC9B,YAAY,GAA2C,EAAE,CAAA;CAC5D;AALD,gDAKC"}
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../Container/Metadata.ts"],"names":[],"mappings":";;;AAEA,kDAAiD;AAMjD,IAAY,KAKX;AALD,WAAY,KAAK;IACb,gCAAuB,CAAA;IACvB,gCAAuB,CAAA;IACvB,4BAAmB,CAAA;IACnB,kCAAyB,CAAA;AAC7B,CAAC,EALW,KAAK,qBAAL,KAAK,QAKhB;AAED,MAAa,kBAAmB,SAAQ,IAAA,sBAAW,EAAC,YAAY,CAAC;IAC7D,QAAQ,CAAW;IAEnB,KAAK,GAAU,KAAK,CAAC,SAAS,CAAA;IAC9B,YAAY,GAA2C,EAAE,CAAA;IACzD,SAAS,GAAsC,EAAE,CAAA;CACpD;AAND,gDAMC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Injects a storage disk, resolved on every access so `storage.fake(name)` affects already built services.
3
+ * Omit the name to use the default disk.
4
+ */
5
+ export declare function Disk(name?: string): (target: object, property: string) => void;
6
+ //# sourceMappingURL=Decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decorators.d.ts","sourceRoot":"","sources":["../../Storage/Decorators.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IACd,QAAQ,MAAM,EAAE,UAAU,MAAM,UAKnD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Disk = Disk;
4
+ const Container_1 = require("../Container");
5
+ const Storage_1 = require("./Storage");
6
+ /**
7
+ * Injects a storage disk, resolved on every access so `storage.fake(name)` affects already built services.
8
+ * Omit the name to use the default disk.
9
+ */
10
+ function Disk(name) {
11
+ return function (target, property) {
12
+ const metadata = Container_1.InjectableMetadata.get(target.constructor);
13
+ metadata.accessors[property] = container => container.get(Storage_1.Storage).disk(name);
14
+ Container_1.InjectableMetadata.set(metadata, target.constructor);
15
+ };
16
+ }
17
+ //# sourceMappingURL=Decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decorators.js","sourceRoot":"","sources":["../../Storage/Decorators.ts"],"names":[],"mappings":";;AAOA,oBAMC;AAbD,4CAAiD;AACjD,uCAAmC;AAEnC;;;GAGG;AACH,SAAgB,IAAI,CAAC,IAAa;IAC9B,OAAO,UAAS,MAAc,EAAE,QAAgB;QAC5C,MAAM,QAAQ,GAAG,8BAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAC3D,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7E,8BAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACxD,CAAC,CAAA;AACL,CAAC"}
@@ -14,4 +14,5 @@ export * from './Drivers/ScopedDriver';
14
14
  export * from './Drivers/ReadOnlyDriver';
15
15
  export * from './Image';
16
16
  export * from './utils';
17
+ export * from './Decorators';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../Storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../Storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
@@ -30,4 +30,5 @@ __exportStar(require("./Drivers/ScopedDriver"), exports);
30
30
  __exportStar(require("./Drivers/ReadOnlyDriver"), exports);
31
31
  __exportStar(require("./Image"), exports);
32
32
  __exportStar(require("./utils"), exports);
33
+ __exportStar(require("./Decorators"), exports);
33
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../Storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB;AACtB,iDAA8B;AAC9B,4CAAyB;AACzB,gDAA6B;AAC7B,kDAA+B;AAC/B,+CAA4B;AAC5B,iDAA8B;AAC9B,0CAAuB;AACvB,2CAAwB;AACxB,wDAAqC;AACrC,yDAAsC;AACtC,qDAAkC;AAClC,yDAAsC;AACtC,2DAAwC;AACxC,0CAAuB;AACvB,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../Storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB;AACtB,iDAA8B;AAC9B,4CAAyB;AACzB,gDAA6B;AAC7B,kDAA+B;AAC/B,+CAA4B;AAC5B,iDAA8B;AAC9B,0CAAuB;AACvB,2CAAwB;AACxB,wDAAqC;AACrC,yDAAsC;AACtC,qDAAkC;AAClC,yDAAsC;AACtC,2DAAwC;AACxC,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typetron/framework",
3
3
  "description": "Modern Node.js framework for modern apps written in Typescript",
4
4
  "license": "MIT",
5
- "version": "0.5.33",
5
+ "version": "0.5.34",
6
6
  "keywords": [
7
7
  "typetron",
8
8
  "framework",