@owlmeans/context 0.1.18-rc.32 → 0.1.18-rc.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/README.md +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/owlmeans-context/SKILL.md +1 -1
- package/build/consts.local.d.ts +5 -0
- package/build/consts.local.d.ts.map +1 -0
- package/build/consts.local.js +6 -0
- package/build/consts.local.js.map +1 -0
- package/build/context.d.ts.map +1 -1
- package/build/context.js +7 -7
- package/build/context.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/memo/types.d.ts +14 -0
- package/build/memo/types.d.ts.map +1 -0
- package/build/memo/types.js +2 -0
- package/build/memo/types.js.map +1 -0
- package/build/memo.d.ts +4 -0
- package/build/memo.d.ts.map +1 -0
- package/build/memo.js +25 -0
- package/build/memo.js.map +1 -0
- package/build/service.d.ts +1 -4
- package/build/service.d.ts.map +1 -1
- package/build/service.js +1 -5
- package/build/service.js.map +1 -1
- package/build/types.d.ts +3 -0
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +6 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/build/utils/index.d.ts +2 -1
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +1 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/middleware/types.d.ts +12 -0
- package/build/utils/middleware/types.d.ts.map +1 -0
- package/build/utils/middleware/types.js +2 -0
- package/build/utils/middleware/types.js.map +1 -0
- package/build/utils/middleware.d.ts +4 -0
- package/build/utils/middleware.d.ts.map +1 -0
- package/build/utils/middleware.js +8 -0
- package/build/utils/middleware.js.map +1 -0
- package/package.json +1 -1
- package/src/consts.local.ts +4 -0
- package/src/context.ts +9 -12
- package/src/index.ts +2 -0
- package/src/memo/types.ts +13 -0
- package/src/memo.ts +33 -0
- package/src/service.ts +3 -14
- package/src/types.local.ts +7 -0
- package/src/types.ts +4 -0
- package/src/utils/index.ts +2 -1
- package/src/utils/middleware/types.ts +18 -0
- package/src/utils/middleware.ts +23 -0
- package/tests/memo.spec.ts +27 -0
- package/build/utils/context.d.ts +0 -6
- package/build/utils/context.d.ts.map +0 -1
- package/build/utils/context.js +0 -4
- package/build/utils/context.js.map +0 -1
- package/src/utils/context.ts +0 -16
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ config package. Protocol declarations live in `@owlmeans/entrypoint`; data acces
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/context@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/context@^0.1.18-rc.34
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Concepts
|
|
@@ -304,7 +304,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
304
304
|
your project's skill store (`.agents/skills/`):
|
|
305
305
|
|
|
306
306
|
```sh
|
|
307
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
307
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.49
|
|
308
308
|
```
|
|
309
309
|
|
|
310
310
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/context",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-
|
|
4
|
+
"version": "0.1.18-rc.34",
|
|
5
|
+
"generatedAt": "2026-10-05T21:03:06.419Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -6,7 +6,7 @@ description: How to use @owlmeans/context — the context every OwlMeans app loo
|
|
|
6
6
|
|
|
7
7
|
# Context lookups
|
|
8
8
|
|
|
9
|
-
**Install:** `bun add @owlmeans/context@^0.1.18-rc.
|
|
9
|
+
**Install:** `bun add @owlmeans/context@^0.1.18-rc.34`
|
|
10
10
|
|
|
11
11
|
Use a protocol declaration directly when obtaining an entrypoint. The declaration supplies the
|
|
12
12
|
registered entrypoint’s request and response types.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,IAAI,aAAa;IACjB,WAAW,SAAS;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,oCAAoB,CAAA;AACtB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB"}
|
package/build/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAA2D,MAAM,YAAY,CAAA;AAIpH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,YAAY,CAAC,CAAC,CAuK9E,CAAA"}
|
package/build/context.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextStage, MiddlewareStage, MiddlewareType } from './consts.js';
|
|
2
|
-
import {
|
|
2
|
+
import { middlewareUtils } from './utils/middleware.js';
|
|
3
3
|
export const makeBasicContext = (cfg) => {
|
|
4
4
|
/**
|
|
5
5
|
* One flat registry per kind, keyed by alias. Registering an alias twice replaces the
|
|
@@ -26,7 +26,7 @@ export const makeBasicContext = (cfg) => {
|
|
|
26
26
|
return context;
|
|
27
27
|
}
|
|
28
28
|
void (async () => {
|
|
29
|
-
await applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Configuration);
|
|
29
|
+
await middlewareUtils.applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Configuration);
|
|
30
30
|
context.stage = ContextStage.Loading;
|
|
31
31
|
configure(true);
|
|
32
32
|
})();
|
|
@@ -37,7 +37,7 @@ export const makeBasicContext = (cfg) => {
|
|
|
37
37
|
if (context.stage !== ContextStage.Loading) {
|
|
38
38
|
return context;
|
|
39
39
|
}
|
|
40
|
-
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration);
|
|
40
|
+
await middlewareUtils.applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration);
|
|
41
41
|
await Object.values(services).reduce(async (previous, service) => {
|
|
42
42
|
await previous;
|
|
43
43
|
if (!service.initialized) {
|
|
@@ -49,16 +49,16 @@ export const makeBasicContext = (cfg) => {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}, Promise.resolve());
|
|
52
|
-
await applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading);
|
|
52
|
+
await middlewareUtils.applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading);
|
|
53
53
|
await Object.values(resources).reduce(async (previous, resource) => {
|
|
54
54
|
await previous;
|
|
55
55
|
await resource.init?.();
|
|
56
56
|
}, Promise.resolve());
|
|
57
|
-
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading);
|
|
57
|
+
await middlewareUtils.applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading);
|
|
58
58
|
context.stage = ContextStage.Ready;
|
|
59
59
|
context.cfg.ready = true;
|
|
60
60
|
initialize(true);
|
|
61
|
-
void applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Ready);
|
|
61
|
+
void middlewareUtils.applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Ready);
|
|
62
62
|
return context;
|
|
63
63
|
},
|
|
64
64
|
registerService: (service) => {
|
|
@@ -78,7 +78,7 @@ export const makeBasicContext = (cfg) => {
|
|
|
78
78
|
return context;
|
|
79
79
|
},
|
|
80
80
|
registerMiddleware: (middleware) => {
|
|
81
|
-
const key = getMiddlerwareKey(middleware);
|
|
81
|
+
const key = middlewareUtils.getMiddlerwareKey(middleware);
|
|
82
82
|
if (!(key in middlewares)) {
|
|
83
83
|
middlewares[key] = [];
|
|
84
84
|
}
|
package/build/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export type * from './types.js';
|
|
2
|
+
export type * from './memo/types.js';
|
|
2
3
|
export * from './consts.js';
|
|
3
4
|
export * from './context.js';
|
|
4
5
|
export * from './service.js';
|
|
5
6
|
export * from './helper.js';
|
|
6
7
|
export * from './config.js';
|
|
8
|
+
export * from './memo.js';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
|
package/build/index.js
CHANGED
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Lazy, memoized construction — the seam bound objects are reached through. */
|
|
2
|
+
export interface MemoHelper {
|
|
3
|
+
/**
|
|
4
|
+
* A thunk that builds its value on the first call and answers the same value after. A flag, not
|
|
5
|
+
* `undefined`, marks it built, so a builder that returns `undefined` still runs once.
|
|
6
|
+
*/
|
|
7
|
+
once: <T>(build: () => T) => () => T;
|
|
8
|
+
/**
|
|
9
|
+
* One `make(target)` per target object: built on first use for that target and released with it
|
|
10
|
+
* (a WeakMap), so a context, a request or a collaborator gets exactly one bound object.
|
|
11
|
+
*/
|
|
12
|
+
oncePer: <K extends object, T>(make: (target: K) => T) => (target: K) => T;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memo/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,CAAA;IACpC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;CAC3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memo/types.ts"],"names":[],"mappings":""}
|
package/build/memo.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../src/memo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,eAAO,MAAM,gBAAgB,QAAO,UA4BnC,CAAA;AAED,eAAO,MAAM,UAAU,YAAqB,CAAA"}
|
package/build/memo.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const createMemoHelper = () => {
|
|
2
|
+
const once = (build) => {
|
|
3
|
+
let built = false;
|
|
4
|
+
let value;
|
|
5
|
+
return () => {
|
|
6
|
+
if (!built) {
|
|
7
|
+
value = build();
|
|
8
|
+
built = true;
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
const oncePer = (make) => {
|
|
14
|
+
const made = new WeakMap();
|
|
15
|
+
return target => {
|
|
16
|
+
if (!made.has(target)) {
|
|
17
|
+
made.set(target, make(target));
|
|
18
|
+
}
|
|
19
|
+
return made.get(target);
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
return { once, oncePer };
|
|
23
|
+
};
|
|
24
|
+
export const memoHelper = createMemoHelper();
|
|
25
|
+
//# sourceMappingURL=memo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../src/memo.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAe,EAAE;IAC/C,MAAM,IAAI,GAAG,CAAI,KAAc,EAAa,EAAE;QAC5C,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,IAAI,KAAoB,CAAA;QAExB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,KAAK,EAAE,CAAA;gBACf,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;YAED,OAAO,KAAU,CAAA;QACnB,CAAC,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAsB,IAAsB,EAAsB,EAAE;QAClF,MAAM,IAAI,GAAG,IAAI,OAAO,EAAQ,CAAA;QAEhC,OAAO,MAAM,CAAC,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAM,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC,CAAA;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA"}
|
package/build/service.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type { InitializedService, LazyService,
|
|
2
|
-
export interface InitMethod<S extends Service> {
|
|
3
|
-
(service: S): () => Promise<void>;
|
|
4
|
-
}
|
|
1
|
+
import type { InitializedService, LazyService, InitMethod } from './types.js';
|
|
5
2
|
export declare const createService: <S extends InitializedService>(alias: string, service: Partial<S>, init?: InitMethod<S>) => S;
|
|
6
3
|
export declare const createLazyService: <S extends LazyService>(alias: string, service: Partial<S>, init?: InitMethod<S>) => S;
|
|
7
4
|
//# sourceMappingURL=service.d.ts.map
|
package/build/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,kBAAkB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,kBAAkB,EAAE,WAAW,EAAW,UAAU,EAAE,MAAM,YAAY,CAAA;AA8BlG,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,kBAAkB,SACjD,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,KACvD,CAAsE,CAAA;AAEzE,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,SAC9C,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,KACvD,CAA+D,CAAA"}
|
package/build/service.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { appendContextual } from './helper.js';
|
|
2
|
-
|
|
3
|
-
(function (TypeToMethod) {
|
|
4
|
-
TypeToMethod["Lazy"] = "lazyInit";
|
|
5
|
-
TypeToMethod["Initialized"] = "init";
|
|
6
|
-
})(TypeToMethod || (TypeToMethod = {}));
|
|
2
|
+
import { TypeToMethod } from './consts.local.js';
|
|
7
3
|
const _createService = (type) => (alias, service, init) => {
|
|
8
4
|
if (service.registerContext == null) {
|
|
9
5
|
appendContextual(alias, service);
|
package/build/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,MAAM,cAAc,GAAG,CAAoB,IAAkB,EAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC3G,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;QACpC,gBAAgB,CAAC,KAAK,EAAE,OAAqB,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,UAAkC,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE,GAAG,UAAU,GAAG,OAAO,CAAA,CAAC,CAAC,CAAC,CAAA;IAEvE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;IAErB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;IAE3B,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;QAC/B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,CAAC,OAAY,CAAC,EAAE,CAAA;QAC1B,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,CAAA;IAE3B,OAAO,OAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAa,EAAE,OAAmB,EAAE,IAAoB,EACrD,EAAE,CAAC,cAAc,CAAI,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EAAE,OAAmB,EAAE,IAAoB,EACrD,EAAE,CAAC,cAAc,CAAI,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA"}
|
package/build/types.d.ts
CHANGED
|
@@ -90,5 +90,8 @@ export interface BasicContext<C extends BasicConfig> {
|
|
|
90
90
|
hasEntrypoint: (alias: string) => boolean;
|
|
91
91
|
entrypoints: <T extends BasicEntrypoint>() => T[];
|
|
92
92
|
}
|
|
93
|
+
export interface InitMethod<S extends Service> {
|
|
94
|
+
(service: S): () => Promise<void>;
|
|
95
|
+
}
|
|
93
96
|
export {};
|
|
94
97
|
//# sourceMappingURL=types.d.ts.map
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BasicEntrypoint, Service, InitMethod } from './types.js';
|
|
2
|
+
export type Entrypoint = BasicEntrypoint;
|
|
3
|
+
export interface CreateService<S extends Service> {
|
|
4
|
+
(alias: string, service: Partial<S>, init?: InitMethod<S>): S;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=types.local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtE,MAAM,MAAM,UAAU,GAAG,eAAe,CAAA;AAExC,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,OAAO;IAC9C,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,mBAAmB,uBAAuB,CAAA;AAC1C,cAAc,iBAAiB,CAAA"}
|
package/build/utils/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './middleware.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/build/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MiddlewareStage, MiddlewareType } from '../../consts.js';
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware } from '../../types.js';
|
|
3
|
+
/** The middleware registry keys and the staged application of the middlewares a context holds. */
|
|
4
|
+
export interface MiddlewareUtils {
|
|
5
|
+
/** The registry key a middleware is filed under: its type and stage. */
|
|
6
|
+
getMiddlerwareKey: (middleware: Middleware) => string;
|
|
7
|
+
/** The registry key of one middleware type at one stage. */
|
|
8
|
+
createMiddlewareKey: (type: MiddlewareType, stage: MiddlewareStage) => string;
|
|
9
|
+
/** Applies, in parallel, every middleware registered for the type at the stage. */
|
|
10
|
+
applyMiddlewares: <C extends BasicConfig, T extends BasicContext<C>>(context: T, middlewares: Record<string, Middleware[]>, type: MiddlewareType, stage: MiddlewareStage, args?: Record<string, string | undefined>) => Promise<void[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/middleware/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3E,kGAAkG;AAClG,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,iBAAiB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,MAAM,CAAA;IACrD,4DAA4D;IAC5D,mBAAmB,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAA;IAC7E,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACjE,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EACzC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/middleware/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/utils/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,eAAO,MAAM,qBAAqB,QAAO,eAgBxC,CAAA;AAED,eAAO,MAAM,eAAe,iBAA0B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const createMiddlewareUtils = () => {
|
|
2
|
+
const createMiddlewareKey = (type, stage) => `${type}:${stage}`;
|
|
3
|
+
const getMiddlerwareKey = (middleware) => createMiddlewareKey(middleware.type, middleware.stage);
|
|
4
|
+
const applyMiddlewares = (context, middlewares, type, stage, args) => Promise.all(middlewares[createMiddlewareKey(type, stage)]?.map(async (middleware) => middleware.apply(context, args)) ?? []);
|
|
5
|
+
return { getMiddlerwareKey, createMiddlewareKey, applyMiddlewares };
|
|
6
|
+
};
|
|
7
|
+
export const middlewareUtils = createMiddlewareUtils();
|
|
8
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/utils/middleware.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IACzD,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAsB,EAAU,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;IAExG,MAAM,iBAAiB,GAAG,CAAC,UAAsB,EAAU,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAEpH,MAAM,gBAAgB,GAAG,CACvB,OAAU,EACV,WAAyC,EACzC,IAAoB,EACpB,KAAsB,EACtB,IAAyC,EACxB,EAAE,CAAC,OAAO,CAAC,GAAG,CAC/B,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAO,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CACpH,CAAA;IAED,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAA"}
|
package/package.json
CHANGED
package/src/context.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { ContextStage, MiddlewareStage, MiddlewareType } from './consts.js'
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
} from './types.js'
|
|
5
|
-
import { applyMiddlewares, getMiddlerwareKey } from './utils/context.js'
|
|
6
|
-
|
|
7
|
-
type Entrypoint = BasicEntrypoint
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware, BasicResource, EntrypointReference, Service } from './types.js'
|
|
3
|
+
import { middlewareUtils } from './utils/middleware.js'
|
|
4
|
+
import type { Entrypoint } from './types.local.js'
|
|
8
5
|
|
|
9
6
|
export const makeBasicContext = <C extends BasicConfig>(cfg: C): BasicContext<C> => {
|
|
10
7
|
/**
|
|
@@ -41,7 +38,7 @@ export const makeBasicContext = <C extends BasicConfig>(cfg: C): BasicContext<C>
|
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
void (async () => {
|
|
44
|
-
await applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Config, MiddlewareStage.Configuration)
|
|
41
|
+
await middlewareUtils.applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Config, MiddlewareStage.Configuration)
|
|
45
42
|
|
|
46
43
|
context.stage = ContextStage.Loading
|
|
47
44
|
configure(true)
|
|
@@ -57,7 +54,7 @@ export const makeBasicContext = <C extends BasicConfig>(cfg: C): BasicContext<C>
|
|
|
57
54
|
return context as T
|
|
58
55
|
}
|
|
59
56
|
|
|
60
|
-
await applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration)
|
|
57
|
+
await middlewareUtils.applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration)
|
|
61
58
|
|
|
62
59
|
await Object.values(services).reduce(
|
|
63
60
|
async (previous, service) => {
|
|
@@ -73,20 +70,20 @@ export const makeBasicContext = <C extends BasicConfig>(cfg: C): BasicContext<C>
|
|
|
73
70
|
}
|
|
74
71
|
, Promise.resolve())
|
|
75
72
|
|
|
76
|
-
await applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading)
|
|
73
|
+
await middlewareUtils.applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading)
|
|
77
74
|
|
|
78
75
|
await Object.values(resources).reduce(async (previous, resource) => {
|
|
79
76
|
await previous
|
|
80
77
|
await resource.init?.()
|
|
81
78
|
}, Promise.resolve())
|
|
82
79
|
|
|
83
|
-
await applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading)
|
|
80
|
+
await middlewareUtils.applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading)
|
|
84
81
|
|
|
85
82
|
context.stage = ContextStage.Ready
|
|
86
83
|
context.cfg.ready = true
|
|
87
84
|
initialize(true)
|
|
88
85
|
|
|
89
|
-
void applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Ready)
|
|
86
|
+
void middlewareUtils.applyMiddlewares<C, BasicContext<C>>(context, middlewares, MiddlewareType.Context, MiddlewareStage.Ready)
|
|
90
87
|
|
|
91
88
|
return context as T
|
|
92
89
|
},
|
|
@@ -115,7 +112,7 @@ export const makeBasicContext = <C extends BasicConfig>(cfg: C): BasicContext<C>
|
|
|
115
112
|
},
|
|
116
113
|
|
|
117
114
|
registerMiddleware: <T>(middleware: Middleware) => {
|
|
118
|
-
const key = getMiddlerwareKey(middleware)
|
|
115
|
+
const key = middlewareUtils.getMiddlerwareKey(middleware)
|
|
119
116
|
if (!(key in middlewares)) {
|
|
120
117
|
middlewares[key] = []
|
|
121
118
|
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Lazy, memoized construction — the seam bound objects are reached through. */
|
|
2
|
+
export interface MemoHelper {
|
|
3
|
+
/**
|
|
4
|
+
* A thunk that builds its value on the first call and answers the same value after. A flag, not
|
|
5
|
+
* `undefined`, marks it built, so a builder that returns `undefined` still runs once.
|
|
6
|
+
*/
|
|
7
|
+
once: <T>(build: () => T) => () => T
|
|
8
|
+
/**
|
|
9
|
+
* One `make(target)` per target object: built on first use for that target and released with it
|
|
10
|
+
* (a WeakMap), so a context, a request or a collaborator gets exactly one bound object.
|
|
11
|
+
*/
|
|
12
|
+
oncePer: <K extends object, T>(make: (target: K) => T) => (target: K) => T
|
|
13
|
+
}
|
package/src/memo.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MemoHelper } from './memo/types.js'
|
|
2
|
+
|
|
3
|
+
export const createMemoHelper = (): MemoHelper => {
|
|
4
|
+
const once = <T>(build: () => T): (() => T) => {
|
|
5
|
+
let built = false
|
|
6
|
+
let value: T | undefined
|
|
7
|
+
|
|
8
|
+
return () => {
|
|
9
|
+
if (!built) {
|
|
10
|
+
value = build()
|
|
11
|
+
built = true
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return value as T
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const oncePer = <K extends object, T>(make: (target: K) => T): ((target: K) => T) => {
|
|
19
|
+
const made = new WeakMap<K, T>()
|
|
20
|
+
|
|
21
|
+
return target => {
|
|
22
|
+
if (!made.has(target)) {
|
|
23
|
+
made.set(target, make(target))
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return made.get(target) as T
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return { once, oncePer }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const memoHelper = createMemoHelper()
|
package/src/service.ts
CHANGED
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
import { appendContextual } from './helper.js'
|
|
2
|
-
import type { Contextual, InitializedService, LazyService, Service } from './types.js'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Lazy = 'lazyInit',
|
|
6
|
-
Initialized = 'init'
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface InitMethod<S extends Service> {
|
|
10
|
-
(service: S): () => Promise<void>
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface CreateService<S extends Service> {
|
|
14
|
-
(alias: string, service: Partial<S>, init?: InitMethod<S>): S
|
|
15
|
-
}
|
|
2
|
+
import type { Contextual, InitializedService, LazyService, Service, InitMethod } from './types.js'
|
|
3
|
+
import { TypeToMethod } from './consts.local.js'
|
|
4
|
+
import type { CreateService } from './types.local.js'
|
|
16
5
|
|
|
17
6
|
const _createService = <S extends Service>(type: TypeToMethod): CreateService<S> => (alias, service, init) => {
|
|
18
7
|
if (service.registerContext == null) {
|
package/src/types.ts
CHANGED
package/src/utils/index.ts
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MiddlewareStage, MiddlewareType } from '../../consts.js'
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware } from '../../types.js'
|
|
3
|
+
|
|
4
|
+
/** The middleware registry keys and the staged application of the middlewares a context holds. */
|
|
5
|
+
export interface MiddlewareUtils {
|
|
6
|
+
/** The registry key a middleware is filed under: its type and stage. */
|
|
7
|
+
getMiddlerwareKey: (middleware: Middleware) => string
|
|
8
|
+
/** The registry key of one middleware type at one stage. */
|
|
9
|
+
createMiddlewareKey: (type: MiddlewareType, stage: MiddlewareStage) => string
|
|
10
|
+
/** Applies, in parallel, every middleware registered for the type at the stage. */
|
|
11
|
+
applyMiddlewares: <C extends BasicConfig, T extends BasicContext<C>>(
|
|
12
|
+
context: T,
|
|
13
|
+
middlewares: Record<string, Middleware[]>,
|
|
14
|
+
type: MiddlewareType,
|
|
15
|
+
stage: MiddlewareStage,
|
|
16
|
+
args?: Record<string, string | undefined>
|
|
17
|
+
) => Promise<void[]>
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { MiddlewareStage, MiddlewareType } from '../consts.js'
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware } from '../types.js'
|
|
3
|
+
import type { MiddlewareUtils } from './middleware/types.js'
|
|
4
|
+
|
|
5
|
+
export const createMiddlewareUtils = (): MiddlewareUtils => {
|
|
6
|
+
const createMiddlewareKey = (type: MiddlewareType, stage: MiddlewareStage): string => `${type}:${stage}`
|
|
7
|
+
|
|
8
|
+
const getMiddlerwareKey = (middleware: Middleware): string => createMiddlewareKey(middleware.type, middleware.stage)
|
|
9
|
+
|
|
10
|
+
const applyMiddlewares = <C extends BasicConfig, T extends BasicContext<C>>(
|
|
11
|
+
context: T,
|
|
12
|
+
middlewares: Record<string, Middleware[]>,
|
|
13
|
+
type: MiddlewareType,
|
|
14
|
+
stage: MiddlewareStage,
|
|
15
|
+
args?: Record<string, string | undefined>
|
|
16
|
+
): Promise<void[]> => Promise.all(
|
|
17
|
+
middlewares[createMiddlewareKey(type, stage)]?.map(async middleware => middleware.apply<C, T>(context, args)) ?? []
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
return { getMiddlerwareKey, createMiddlewareKey, applyMiddlewares }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const middlewareUtils = createMiddlewareUtils()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import { createMemoHelper, memoHelper } from '../src/memo.js'
|
|
3
|
+
|
|
4
|
+
describe('@owlmeans/context — memoHelper', () => {
|
|
5
|
+
test('once builds on the first call only, even when the value is undefined', () => {
|
|
6
|
+
let builds = 0
|
|
7
|
+
const lazy = memoHelper.once(() => { builds++; return undefined })
|
|
8
|
+
expect(builds).toBe(0)
|
|
9
|
+
lazy(); lazy(); lazy()
|
|
10
|
+
expect(builds).toBe(1)
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
test('once answers the same object every time', () => {
|
|
14
|
+
const lazy = memoHelper.once(() => ({ id: Math.random() }))
|
|
15
|
+
expect(lazy()).toBe(lazy())
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('oncePer builds one value per target and keeps targets apart', () => {
|
|
19
|
+
let builds = 0
|
|
20
|
+
const helperOf = createMemoHelper().oncePer((ctx: { name: string }) => { builds++; return { owner: ctx.name } })
|
|
21
|
+
const a = { name: 'a' }
|
|
22
|
+
const b = { name: 'b' }
|
|
23
|
+
expect(helperOf(a)).toBe(helperOf(a))
|
|
24
|
+
expect(helperOf(b).owner).toBe('b')
|
|
25
|
+
expect(builds).toBe(2)
|
|
26
|
+
})
|
|
27
|
+
})
|
package/build/utils/context.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { MiddlewareStage, MiddlewareType } from '../consts.js';
|
|
2
|
-
import type { BasicConfig, BasicContext, Middleware } from '../types.js';
|
|
3
|
-
export declare const getMiddlerwareKey: (middleware: Middleware) => string;
|
|
4
|
-
export declare const createMiddlewareKey: (type: MiddlewareType, stage: MiddlewareStage) => string;
|
|
5
|
-
export declare const applyMiddlewares: <C extends BasicConfig, T extends BasicContext<C>>(context: T, middlewares: Record<string, Middleware[]>, type: MiddlewareType, stage: MiddlewareStage, args?: Record<string, string | undefined>) => Promise<void[]>;
|
|
6
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExE,eAAO,MAAM,iBAAiB,eAAgB,UAAU,WAA2D,CAAA;AAEnH,eAAO,MAAM,mBAAmB,SAAU,cAAc,SAAS,eAAe,WAAuB,CAAA;AAEvG,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WACtE,CAAC,eACG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,QACnC,cAAc,SACb,eAAe,SACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,oBAG1C,CAAA"}
|
package/build/utils/context.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export const getMiddlerwareKey = (middleware) => createMiddlewareKey(middleware.type, middleware.stage);
|
|
2
|
-
export const createMiddlewareKey = (type, stage) => `${type}:${stage}`;
|
|
3
|
-
export const applyMiddlewares = (context, middlewares, type, stage, args) => Promise.all(middlewares[createMiddlewareKey(type, stage)]?.map(async (middleware) => middleware.apply(context, args)) ?? []);
|
|
4
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;AAEnH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAsB,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;AAEvG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAU,EACV,WAAyC,EACzC,IAAoB,EACpB,KAAsB,EACtB,IAAyC,EACzC,EAAE,CAAC,OAAO,CAAC,GAAG,CACd,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAO,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CACpH,CAAA"}
|
package/src/utils/context.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { MiddlewareStage, MiddlewareType } from '../consts.js'
|
|
2
|
-
import type { BasicConfig, BasicContext, Middleware } from '../types.js'
|
|
3
|
-
|
|
4
|
-
export const getMiddlerwareKey = (middleware: Middleware) => createMiddlewareKey(middleware.type, middleware.stage)
|
|
5
|
-
|
|
6
|
-
export const createMiddlewareKey = (type: MiddlewareType, stage: MiddlewareStage) => `${type}:${stage}`
|
|
7
|
-
|
|
8
|
-
export const applyMiddlewares = <C extends BasicConfig, T extends BasicContext<C>>(
|
|
9
|
-
context: T,
|
|
10
|
-
middlewares: Record<string, Middleware[]>,
|
|
11
|
-
type: MiddlewareType,
|
|
12
|
-
stage: MiddlewareStage,
|
|
13
|
-
args?: Record<string, string | undefined>
|
|
14
|
-
) => Promise.all(
|
|
15
|
-
middlewares[createMiddlewareKey(type, stage)]?.map(async middleware => middleware.apply<C, T>(context, args)) ?? []
|
|
16
|
-
)
|