@arkstack/contract 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @arkstack/contract
2
+
3
+ Framework-agnostic contracts used by Arkstack runtime kits.
4
+
5
+ This package defines the shared shape each framework driver must implement.
@@ -0,0 +1,45 @@
1
+ //#region src/index.d.ts
2
+ type PromiseOrValue<T> = T | Promise<T>;
3
+ interface ArkstackMiddlewareConfig<TMiddleware> {
4
+ global: TMiddleware[];
5
+ before: TMiddleware[];
6
+ after: TMiddleware[];
7
+ }
8
+ interface ArkstackRouteListOptions {
9
+ path?: string;
10
+ }
11
+ interface ArkstackRouterContract<TApp, TRoutes = unknown> {
12
+ bind(app: TApp): PromiseOrValue<unknown>;
13
+ list(options?: ArkstackRouteListOptions, app?: TApp): PromiseOrValue<TRoutes>;
14
+ }
15
+ interface ArkstackRouterAwareCore<TApp, TRoutes = unknown> {
16
+ getAppInstance(): TApp;
17
+ getRouter(): ArkstackRouterContract<TApp, TRoutes>;
18
+ }
19
+ /**
20
+ * The ArkstackKitDriver class defines the contract for a driver
21
+ * that can be used with the ArkstackKitContract.
22
+ */
23
+ declare abstract class ArkstackKitDriver<TApp, TMiddleware> {
24
+ abstract readonly name: string;
25
+ abstract createApp(): TApp;
26
+ abstract mountPublicAssets(app: TApp, publicPath: string): PromiseOrValue<void>;
27
+ abstract bindRouter(app: TApp): PromiseOrValue<void>;
28
+ abstract applyMiddleware(app: TApp, middleware: TMiddleware): PromiseOrValue<void>;
29
+ registerErrorHandler(_app: TApp): PromiseOrValue<void>;
30
+ abstract start(app: TApp, port: number): PromiseOrValue<void>;
31
+ }
32
+ /**
33
+ * The ArkstackKitContract class defines the contract for an
34
+ * application that uses the ArkstackKitDriver.
35
+ */
36
+ declare abstract class ArkstackKitContract<TApp, TMiddleware> {
37
+ abstract app: TApp;
38
+ abstract driver: ArkstackKitDriver<TApp, TMiddleware>;
39
+ abstract middleware: ArkstackMiddlewareConfig<TMiddleware>;
40
+ abstract boot(port: number): Promise<void>;
41
+ abstract shutdown(): Promise<void>;
42
+ }
43
+ //#endregion
44
+ export { ArkstackKitContract, ArkstackKitDriver, ArkstackMiddlewareConfig, ArkstackRouteListOptions, ArkstackRouterAwareCore, ArkstackRouterContract, PromiseOrValue };
45
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ //#region src/index.ts
2
+ /**
3
+ * The ArkstackKitDriver class defines the contract for a driver
4
+ * that can be used with the ArkstackKitContract.
5
+ */
6
+ var ArkstackKitDriver = class {
7
+ registerErrorHandler(_app) {}
8
+ };
9
+ /**
10
+ * The ArkstackKitContract class defines the contract for an
11
+ * application that uses the ArkstackKitDriver.
12
+ */
13
+ var ArkstackKitContract = class {};
14
+
15
+ //#endregion
16
+ export { ArkstackKitContract, ArkstackKitDriver };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export type PromiseOrValue<T> = T | Promise<T>;\n\nexport interface ArkstackMiddlewareConfig<TMiddleware> {\n global: TMiddleware[];\n before: TMiddleware[];\n after: TMiddleware[];\n}\n\nexport interface ArkstackRouteListOptions {\n path?: string;\n}\n\nexport interface ArkstackRouterContract<TApp, TRoutes = unknown> {\n bind (app: TApp): PromiseOrValue<unknown>;\n list (options?: ArkstackRouteListOptions, app?: TApp): PromiseOrValue<TRoutes>;\n}\n\nexport interface ArkstackRouterAwareCore<TApp, TRoutes = unknown> {\n getAppInstance (): TApp;\n getRouter (): ArkstackRouterContract<TApp, TRoutes>;\n}\n\n/**\n * The ArkstackKitDriver class defines the contract for a driver \n * that can be used with the ArkstackKitContract. \n */\nexport abstract class ArkstackKitDriver<TApp, TMiddleware> {\n abstract readonly name: string;\n abstract createApp (): TApp;\n abstract mountPublicAssets (app: TApp, publicPath: string): PromiseOrValue<void>;\n abstract bindRouter (app: TApp): PromiseOrValue<void>;\n abstract applyMiddleware (app: TApp, middleware: TMiddleware): PromiseOrValue<void>;\n registerErrorHandler (_app: TApp): PromiseOrValue<void> {\n return;\n }\n abstract start (app: TApp, port: number): PromiseOrValue<void>;\n}\n\n/**\n * The ArkstackKitContract class defines the contract for an \n * application that uses the ArkstackKitDriver.\n */\nexport abstract class ArkstackKitContract<TApp, TMiddleware> {\n abstract app: TApp;\n abstract driver: ArkstackKitDriver<TApp, TMiddleware>;\n abstract middleware: ArkstackMiddlewareConfig<TMiddleware>;\n abstract boot (port: number): Promise<void>;\n abstract shutdown (): Promise<void>;\n}\n"],"mappings":";;;;;AA0BA,IAAsB,oBAAtB,MAA2D;CAMzD,qBAAsB,MAAkC;;;;;;AAU1D,IAAsB,sBAAtB,MAA6D"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@arkstack/contract",
3
+ "version": "0.1.1",
4
+ "type": "module",
5
+ "description": "Contract package for Arkstack providing contract-specific implementations of core Arkstack features such as routing, middleware, and database integration.",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/arkstack-hq/arkstack.git",
9
+ "directory": "packages/contract"
10
+ },
11
+ "keywords": [
12
+ "contract",
13
+ "interface",
14
+ "types",
15
+ "validation",
16
+ "schema",
17
+ "arkstack"
18
+ ],
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js"
29
+ }
30
+ },
31
+ "scripts": {
32
+ "build": "tsdown",
33
+ "version:patch": "pnpm version patch --no-git-tag-version"
34
+ }
35
+ }