vla 0.1.2 → 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 +6 -0
- package/dist/index.d.mts +13 -11
- package/package.json +1 -1
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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): Resolved<TKey
|
|
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 };
|