vla 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -21,6 +21,12 @@ A TypeScript data layer kernel for backend- and fullstack apps. Compatible with
21
21
  - 🏗️ error handling
22
22
  - ...
23
23
 
24
+ ## Install
25
+
26
+ ```console
27
+ npm install vla
28
+ ```
29
+
24
30
  ## Why?
25
31
 
26
32
  Many fullstack frameworks lack structure and conventions on the backend side (data layer), but they have lots of good structure and conventions on the frontend side (presentation layer). They are still great frameworks and they all have their own strengths. This is where Vla comes in. It aims to fill in the missing gap in the data layer, allowing you to write well-structured maintainable, scalable and testable code.
package/dist/index.d.mts CHANGED
@@ -19,6 +19,8 @@ type ModuleClass<ModuleName extends string, LayerName extends Layer = Layer, TVi
19
19
  readonly unwrap?: PropertyKey;
20
20
  readonly parentLayers: readonly Layer[];
21
21
  };
22
+ type VlaInternalKeys = "inject" | "memo" | "devStable";
23
+ type UserSurface<T> = T extends object ? Omit<T, VlaInternalKeys> : T;
22
24
  //#endregion
23
25
  //#region src/concerns/memo.d.ts
24
26
  type BaseCtor$1<T = object> = abstract new (...args: any[]) => T;
@@ -126,7 +128,7 @@ declare function createModule<const ModuleName extends string>(moduleName: Modul
126
128
  readonly parentLayers: readonly Layer[];
127
129
  } ? TKey extends ModuleClass<ModuleName, Layer> ? "service" extends infer T ? T extends "service" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
128
130
  readonly __vla_visibility: "global" | "public";
129
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
131
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
130
132
  }) & {
131
133
  readonly __vla_module: ModuleName;
132
134
  readonly __vla_layer: "service";
@@ -142,7 +144,7 @@ declare function createModule<const ModuleName extends string>(moduleName: Modul
142
144
  readonly parentLayers: readonly Layer[];
143
145
  } ? TKey extends ModuleClass<ModuleName, Layer> ? "service" extends infer T ? T extends "service" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
144
146
  readonly __vla_visibility: "global" | "public";
145
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
147
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
146
148
  }) & {
147
149
  readonly __vla_module: ModuleName;
148
150
  readonly __vla_layer: "service";
@@ -158,7 +160,7 @@ declare function createModule<const ModuleName extends string>(moduleName: Modul
158
160
  readonly parentLayers: readonly Layer[];
159
161
  } ? TKey extends ModuleClass<ModuleName, Layer> ? "repo" extends infer T ? T extends "repo" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
160
162
  readonly __vla_visibility: "global" | "public";
161
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
163
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
162
164
  memo<Args extends unknown[], R>(fn: (...args: Args) => R): Memoized<Args, R>;
163
165
  }) & {
164
166
  readonly __vla_module: ModuleName;
@@ -175,7 +177,7 @@ declare function createModule<const ModuleName extends string>(moduleName: Modul
175
177
  readonly parentLayers: readonly Layer[];
176
178
  } ? TKey extends ModuleClass<ModuleName, Layer> ? "action" extends infer T ? T extends "action" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
177
179
  readonly __vla_visibility: "global" | "public";
178
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
180
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
179
181
  handle(...args: unknown[]): unknown | Promise<unknown>;
180
182
  }) & {
181
183
  readonly __vla_module: ModuleName;
@@ -193,7 +195,7 @@ declare function createModule<const ModuleName extends string>(moduleName: Modul
193
195
  readonly parentLayers: readonly Layer[];
194
196
  } ? TKey extends ModuleClass<ModuleName, Layer> ? "resource" extends infer T ? T extends "resource" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
195
197
  readonly __vla_visibility: "global" | "public";
196
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
198
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
197
199
  devStable<T>(key: string, init: () => T): T;
198
200
  }) & {
199
201
  readonly __vla_module: ModuleName;
@@ -221,7 +223,7 @@ declare const Vla: {
221
223
  readonly parentLayers: readonly Layer[];
222
224
  } ? TKey extends ModuleClass<"Vla", Layer> ? "service" extends infer T ? T extends "service" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
223
225
  readonly __vla_visibility: "global" | "public";
224
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
226
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
225
227
  }) & {
226
228
  readonly __vla_module: "Vla";
227
229
  readonly __vla_layer: "service";
@@ -237,7 +239,7 @@ declare const Vla: {
237
239
  readonly parentLayers: readonly Layer[];
238
240
  } ? TKey extends ModuleClass<"Vla", Layer> ? "service" extends infer T ? T extends "service" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
239
241
  readonly __vla_visibility: "global" | "public";
240
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
242
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
241
243
  }) & {
242
244
  readonly __vla_module: "Vla";
243
245
  readonly __vla_layer: "service";
@@ -253,7 +255,7 @@ declare const Vla: {
253
255
  readonly parentLayers: readonly Layer[];
254
256
  } ? TKey extends ModuleClass<"Vla", Layer> ? "repo" extends infer T ? T extends "repo" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
255
257
  readonly __vla_visibility: "global" | "public";
256
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
258
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
257
259
  memo<Args extends unknown[], R>(fn: (...args: Args) => R): Memoized<Args, R>;
258
260
  }) & {
259
261
  readonly __vla_module: "Vla";
@@ -270,7 +272,7 @@ declare const Vla: {
270
272
  readonly parentLayers: readonly Layer[];
271
273
  } ? TKey extends ModuleClass<"Vla", Layer> ? "action" extends infer T ? T extends "action" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
272
274
  readonly __vla_visibility: "global" | "public";
273
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
275
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
274
276
  handle(...args: unknown[]): unknown | Promise<unknown>;
275
277
  }) & {
276
278
  readonly __vla_module: "Vla";
@@ -288,7 +290,7 @@ declare const Vla: {
288
290
  readonly parentLayers: readonly Layer[];
289
291
  } ? TKey extends ModuleClass<"Vla", Layer> ? "resource" extends infer T ? T extends "resource" ? T extends TKey["parentLayers"][number] ? TKey : `A ${Capitalize<T>} is not allowed to inject a ${Capitalize<TargetLayer>}. Allowed parent layer: ${TKey["parentLayers"][number] extends Layer ? Capitalize<TKey["parentLayers"][number]> : never}` : never : never : TKey extends {
290
292
  readonly __vla_visibility: "global" | "public";
291
- } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey_1>>;
293
+ } ? TKey : `Cross-module ${Capitalize<TargetLayer>} dependency is not allowed. Use a Facade or Resource.` : never : TKey, scope?: Scope): UserSurface<Resolved<TKey>>;
292
294
  devStable<T>(key: string, init: () => T): T;
293
295
  }) & {
294
296
  readonly __vla_module: "Vla";
@@ -304,4 +306,4 @@ declare const Vla: {
304
306
  DevStable: typeof DevStable;
305
307
  };
306
308
  //#endregion
307
- export { InstantiableClass, Kernel, Layer, ModuleClass, Resolved, Scope, Token, UnwrapKey, Visibility, Vla, createContext, createModule, setGlobalInvokeKernel, setInvokeKernelProvider, withKernel };
309
+ export { InstantiableClass, Kernel, Layer, ModuleClass, Resolved, Scope, Token, UnwrapKey, UserSurface, Visibility, Vla, VlaInternalKeys, createContext, createModule, setGlobalInvokeKernel, setInvokeKernelProvider, withKernel };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vla",
3
3
  "type": "module",
4
- "version": "0.1.3",
4
+ "version": "0.1.4",
5
5
  "description": "Data layer kernel for backend- and fullstack apps",
6
6
  "author": "Timo Mämecke <hello@timo.wtf>",
7
7
  "license": "MIT",