@initx-plugin/core 0.0.29 → 0.0.31
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/dist/index.d.mts +20 -6
- package/dist/index.d.ts +20 -6
- package/dist/index.mjs +1 -1
- package/package.json +6 -5
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MatcherRules } from 'matchinitx';
|
|
2
2
|
|
|
3
3
|
type MaybePromise<T> = T | Promise<T>;
|
|
4
|
+
type OptionalValue = string | RegExp | undefined;
|
|
4
5
|
|
|
5
6
|
interface PackageInfo {
|
|
6
7
|
root: string;
|
|
@@ -29,7 +30,7 @@ type MatchedPlugin = HandlerInfo & {
|
|
|
29
30
|
};
|
|
30
31
|
declare function fetchPlugins(): Promise<InitxPluginInfo[]>;
|
|
31
32
|
declare function loadPlugins(): Promise<LoadPluginResult[]>;
|
|
32
|
-
declare function matchPlugins(plugins: LoadPluginResult[], { key, cliOptions }: InitxBaseContext, ...others: string[]): MatchedPlugin[]
|
|
33
|
+
declare function matchPlugins(plugins: LoadPluginResult[], { key, cliOptions }: InitxBaseContext, ...others: string[]): Promise<MatchedPlugin[]>;
|
|
33
34
|
|
|
34
35
|
type InitxRuleFields<TRule extends object = object> = TRule & {
|
|
35
36
|
/**
|
|
@@ -38,12 +39,25 @@ type InitxRuleFields<TRule extends object = object> = TRule & {
|
|
|
38
39
|
* If multiple handlers are matched, this description will be displayed
|
|
39
40
|
*/
|
|
40
41
|
description: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional values
|
|
44
|
+
*
|
|
45
|
+
* Check if the first value is in the optional values.
|
|
46
|
+
*
|
|
47
|
+
* If no matching value is found in the optional value, the handler will not be executed.
|
|
48
|
+
*/
|
|
49
|
+
optional?: OptionalValue[];
|
|
50
|
+
/**
|
|
51
|
+
* Verify function
|
|
52
|
+
*
|
|
53
|
+
* If the function returns false, the handler will not be executed.
|
|
54
|
+
*/
|
|
55
|
+
verify?: (context: InitxRunContext, ...others: string[]) => MaybePromise<boolean>;
|
|
41
56
|
};
|
|
42
57
|
type InitxMatcherRules<TRule extends object = object> = MatcherRules<InitxRuleFields<TRule>>;
|
|
43
|
-
|
|
58
|
+
type HandlerInfo = InitxRuleFields & {
|
|
44
59
|
handler: () => MaybePromise<void>;
|
|
45
|
-
|
|
46
|
-
}
|
|
60
|
+
};
|
|
47
61
|
interface InitxBaseContext {
|
|
48
62
|
/**
|
|
49
63
|
* Matching string
|
|
@@ -89,11 +103,11 @@ declare abstract class InitxPlugin<TStore extends object = object> {
|
|
|
89
103
|
abstract rules: InitxMatcherRules;
|
|
90
104
|
abstract handle(context: InitxContext, ...others: string[]): MaybePromise<void>;
|
|
91
105
|
defaultStore?: TStore;
|
|
92
|
-
run(context: InitxRunContext, ...others: string[]): HandlerInfo[]
|
|
106
|
+
run(context: InitxRunContext, ...others: string[]): Promise<HandlerInfo[]>;
|
|
93
107
|
private executeHandle;
|
|
94
108
|
}
|
|
95
109
|
|
|
96
|
-
declare function createStore(name: string, defaultStore?: Record<string, any>): any
|
|
110
|
+
declare function createStore(name: string, defaultStore?: Record<string, any>): Record<string, any>;
|
|
97
111
|
declare function writeStore(name: string): void;
|
|
98
112
|
|
|
99
113
|
export { type HandlerInfo, type InitxBaseContext, type InitxContext, type InitxMatcherRules, InitxPlugin, type InitxPluginInfo, type LoadPluginResult, type MatchedPlugin, type PackageInfo, createStore, fetchPlugins, loadPlugins, matchPlugins, writeStore };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MatcherRules } from 'matchinitx';
|
|
2
2
|
|
|
3
3
|
type MaybePromise<T> = T | Promise<T>;
|
|
4
|
+
type OptionalValue = string | RegExp | undefined;
|
|
4
5
|
|
|
5
6
|
interface PackageInfo {
|
|
6
7
|
root: string;
|
|
@@ -29,7 +30,7 @@ type MatchedPlugin = HandlerInfo & {
|
|
|
29
30
|
};
|
|
30
31
|
declare function fetchPlugins(): Promise<InitxPluginInfo[]>;
|
|
31
32
|
declare function loadPlugins(): Promise<LoadPluginResult[]>;
|
|
32
|
-
declare function matchPlugins(plugins: LoadPluginResult[], { key, cliOptions }: InitxBaseContext, ...others: string[]): MatchedPlugin[]
|
|
33
|
+
declare function matchPlugins(plugins: LoadPluginResult[], { key, cliOptions }: InitxBaseContext, ...others: string[]): Promise<MatchedPlugin[]>;
|
|
33
34
|
|
|
34
35
|
type InitxRuleFields<TRule extends object = object> = TRule & {
|
|
35
36
|
/**
|
|
@@ -38,12 +39,25 @@ type InitxRuleFields<TRule extends object = object> = TRule & {
|
|
|
38
39
|
* If multiple handlers are matched, this description will be displayed
|
|
39
40
|
*/
|
|
40
41
|
description: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional values
|
|
44
|
+
*
|
|
45
|
+
* Check if the first value is in the optional values.
|
|
46
|
+
*
|
|
47
|
+
* If no matching value is found in the optional value, the handler will not be executed.
|
|
48
|
+
*/
|
|
49
|
+
optional?: OptionalValue[];
|
|
50
|
+
/**
|
|
51
|
+
* Verify function
|
|
52
|
+
*
|
|
53
|
+
* If the function returns false, the handler will not be executed.
|
|
54
|
+
*/
|
|
55
|
+
verify?: (context: InitxRunContext, ...others: string[]) => MaybePromise<boolean>;
|
|
41
56
|
};
|
|
42
57
|
type InitxMatcherRules<TRule extends object = object> = MatcherRules<InitxRuleFields<TRule>>;
|
|
43
|
-
|
|
58
|
+
type HandlerInfo = InitxRuleFields & {
|
|
44
59
|
handler: () => MaybePromise<void>;
|
|
45
|
-
|
|
46
|
-
}
|
|
60
|
+
};
|
|
47
61
|
interface InitxBaseContext {
|
|
48
62
|
/**
|
|
49
63
|
* Matching string
|
|
@@ -89,11 +103,11 @@ declare abstract class InitxPlugin<TStore extends object = object> {
|
|
|
89
103
|
abstract rules: InitxMatcherRules;
|
|
90
104
|
abstract handle(context: InitxContext, ...others: string[]): MaybePromise<void>;
|
|
91
105
|
defaultStore?: TStore;
|
|
92
|
-
run(context: InitxRunContext, ...others: string[]): HandlerInfo[]
|
|
106
|
+
run(context: InitxRunContext, ...others: string[]): Promise<HandlerInfo[]>;
|
|
93
107
|
private executeHandle;
|
|
94
108
|
}
|
|
95
109
|
|
|
96
|
-
declare function createStore(name: string, defaultStore?: Record<string, any>): any
|
|
110
|
+
declare function createStore(name: string, defaultStore?: Record<string, any>): Record<string, any>;
|
|
97
111
|
declare function writeStore(name: string): void;
|
|
98
112
|
|
|
99
113
|
export { type HandlerInfo, type InitxBaseContext, type InitxContext, type InitxMatcherRules, InitxPlugin, type InitxPluginInfo, type LoadPluginResult, type MatchedPlugin, type PackageInfo, createStore, fetchPlugins, loadPlugins, matchPlugins, writeStore };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useInitxMatcher as k}from"matchinitx";import{homedir as
|
|
1
|
+
import{useInitxMatcher as k}from"matchinitx";import{homedir as P}from"node:os";import{defu as v}from"defu";import c from"fs-extra";import s from"pathe";import d from"node:process";import{c as I}from"@initx-plugin/utils";let f=!1,m={};const y=s.resolve(P(),".initx"),$="store.json",g=r=>s.resolve(y,r,$);function h(r,n={}){c.ensureDirSync(s.resolve(y,r));const t=g(r),o=i=>(j(t,i),b(i));if(!c.existsSync(t))return o(n);let e;try{const i=c.readJsonSync(t);e=v(i,n)}catch{e=n}return o(e)}function x(r){f&&j(g(r),m)}function j(r,n){c.writeJsonSync(r,n,{spaces:2})}function b(r={}){const n=o=>typeof o=="object"&&o!==null&&new Set(["[object Object]","[object Array]"]).has(Object.prototype.toString.call(o)),t=o=>new Proxy(o,{get(e,i){const a=Reflect.get(e,i);return n(a)?t(a):a},set(e,i,a){const l=Reflect.set(e,i,a);return f=!0,l},deleteProperty(e,i){const a=Reflect.deleteProperty(e,i);return f=!0,a}});return m=t(r),m}const p={plugin:/^(?:@initx-plugin\/|initx-plugin-)/,exclude:/@initx-plugin\/(?:core|utils)$/};async function O(){const r=s.join(d.cwd(),"package.json");if(!c.existsSync(r))return[];const n=c.readJsonSync(r),{dependencies:t={},devDependencies:o={}}=n;return Object.keys({...t,...o}).filter(e=>p.plugin.test(e)&&!p.exclude.test(e)).map(e=>({name:e,root:s.join(d.cwd(),"node_modules",e)}))}async function S(){const{content:r}=await I("npm",["root","-g"]),n=c.readdirSync(r),t=s.join(r,"@initx-plugin");return[...c.existsSync(t)?c.readdirSync(t).map(o=>`@initx-plugin/${o}`):[],...n].filter(o=>p.plugin.test(o)&&!p.exclude.test(o)).map(o=>({name:o,root:s.join(r,o)}))}async function J(){const r=await O(),n=r.map(({name:e})=>e),t=[...(await S()).filter(({name:e})=>!n.includes(e)),...r],o=await import("importx");return Promise.all(t.map(async({root:e})=>{const i=await o.import(e,import.meta.url).then(l=>l.default),a=c.readJsonSync(s.join(e,"package.json"));return{packageInfo:{root:e,name:a.name,version:a.version,description:a.description,author:a.author,homepage:a.homepage},instance:new i}}))}async function R(r,{key:n,cliOptions:t},...o){const e=[];for(const i of r){const{instance:a,packageInfo:l}=i,w=await a.run({key:n,cliOptions:t,packageInfo:l,optionsList:Object.keys(t).filter(u=>t[u]===!0).map(u=>`--${u}`)},...o);e.push(...w.map(u=>({handler:u.handler,description:u.description,packageInfo:l})))}return e}function D(r,n){return r.some(t=>typeof t=="string"||typeof t>"u"?t===n:t.test(n))}class H{defaultStore;async run(n,...t){const o=k((e,...i)=>({handler:()=>this.executeHandle(n,e,...i),...e}));return(await Promise.all(o.match(this.rules,n.key,...t).map(async e=>e.verify&&!e.verify(n,...t)||e.optional&&!D(e.optional,t[0])?!1:e))).filter(Boolean)}async executeHandle(n,t,...o){const e=h(n.packageInfo.name,this.defaultStore);await this.handle({...n,rule:t,store:e},...o),x(n.packageInfo.name)}}export{H as InitxPlugin,h as createStore,S as fetchPlugins,J as loadPlugins,R as matchPlugins,x as writeStore};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@initx-plugin/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.31",
|
|
5
5
|
"description": "core module for initx plugins",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/initx-collective/initx#readme",
|
|
@@ -23,10 +23,11 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"defu": "^6.1.4",
|
|
26
|
-
"fs-extra": "^11.
|
|
27
|
-
"importx": "^0.5.
|
|
28
|
-
"matchinitx": "^0.0.
|
|
29
|
-
"
|
|
26
|
+
"fs-extra": "^11.3.0",
|
|
27
|
+
"importx": "^0.5.2",
|
|
28
|
+
"matchinitx": "^0.0.4",
|
|
29
|
+
"pathe": "^2.0.3",
|
|
30
|
+
"@initx-plugin/utils": "0.0.31"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"@types/fs-extra": "^11.0.4"
|