@adeficior/pack-resolver 2.0.0-rc.10
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/config.d.ts +9 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/filter.d.ts +3 -0
- package/dist/filter.js +12 -0
- package/dist/filter.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +8 -0
- package/dist/options.js +1 -0
- package/dist/options.js.map +1 -0
- package/dist/resolver/ArchiveResolver.d.ts +8 -0
- package/dist/resolver/ArchiveResolver.js +24 -0
- package/dist/resolver/ArchiveResolver.js.map +1 -0
- package/dist/resolver/FolderResolver.d.ts +9 -0
- package/dist/resolver/FolderResolver.js +30 -0
- package/dist/resolver/FolderResolver.js.map +1 -0
- package/dist/resolver/IResolver.d.ts +13 -0
- package/dist/resolver/IResolver.js +13 -0
- package/dist/resolver/IResolver.js.map +1 -0
- package/dist/resolver/index.d.ts +21 -0
- package/dist/resolver/index.js +72 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/testing/TestAcceptor.d.ts +7 -0
- package/dist/testing/TestAcceptor.js +14 -0
- package/dist/testing/TestAcceptor.js.map +1 -0
- package/dist/testing/TestResolver.d.ts +2 -0
- package/dist/testing/TestResolver.js +9 -0
- package/dist/testing/TestResolver.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/util.d.ts +13 -0
- package/dist/util.js +29 -0
- package/dist/util.js.map +1 -0
- package/package.json +52 -0
package/dist/config.d.ts
ADDED
package/dist/config.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
export function getConfig(dir) {
|
|
4
|
+
const path = join(dir, "config.json");
|
|
5
|
+
if (!existsSync(path))
|
|
6
|
+
return { packs: {} };
|
|
7
|
+
const raw = readFileSync(path).toString();
|
|
8
|
+
return JSON.parse(raw);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAY5B,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
package/dist/filter.d.ts
ADDED
package/dist/filter.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { minimatch } from "minimatch";
|
|
2
|
+
import { arrayOrSelf } from "./util.js";
|
|
3
|
+
export function createFilter(options) {
|
|
4
|
+
const include = arrayOrSelf(options.include);
|
|
5
|
+
const exclude = arrayOrSelf(options.exclude);
|
|
6
|
+
return (value, options = {}) => {
|
|
7
|
+
if (include?.length)
|
|
8
|
+
return include.some((pattern) => minimatch(value, pattern, options));
|
|
9
|
+
return !exclude.some((pattern) => minimatch(value, pattern, { dot: true }));
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAa,EAAE,UAA4B,EAAE,EAAE,EAAE;QACvD,IAAI,OAAO,EAAE,MAAM;YACjB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type { PacksConfig } from "./config.js";
|
|
2
|
+
export { createFilter } from "./filter.js";
|
|
3
|
+
export type { FilterOptions, default as Options } from "./options.js";
|
|
4
|
+
export { default as ArchiveResolver } from "./resolver/ArchiveResolver.js";
|
|
5
|
+
export { default as FolderResolver } from "./resolver/FolderResolver.js";
|
|
6
|
+
export * from "./resolver/IResolver.js";
|
|
7
|
+
export type { ResolverInfo } from "./resolver/index.js";
|
|
8
|
+
export { createMergedResolver, createResolver, createResolvers, mergeResolvers, } from "./resolver/index.js";
|
|
9
|
+
export * from "./util.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createFilter } from "./filter.js";
|
|
2
|
+
export { default as ArchiveResolver } from "./resolver/ArchiveResolver.js";
|
|
3
|
+
export { default as FolderResolver } from "./resolver/FolderResolver.js";
|
|
4
|
+
export * from "./resolver/IResolver.js";
|
|
5
|
+
export { createMergedResolver, createResolver, createResolvers, mergeResolvers, } from "./resolver/index.js";
|
|
6
|
+
export * from "./util.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACzE,cAAc,yBAAyB,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FilterOptions } from "../options.js";
|
|
2
|
+
import type { Acceptor } from "./IResolver.js";
|
|
3
|
+
import { FilteringResolver } from "./IResolver.js";
|
|
4
|
+
export default class ArchiveResolver extends FilteringResolver {
|
|
5
|
+
private readonly archive;
|
|
6
|
+
constructor(archive: string, options?: FilterOptions);
|
|
7
|
+
accept(acceptor: Acceptor): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { openArchive } from "zip-bun";
|
|
2
|
+
import { FilteringResolver } from "./IResolver.js";
|
|
3
|
+
export default class ArchiveResolver extends FilteringResolver {
|
|
4
|
+
archive;
|
|
5
|
+
constructor(archive, options = {}) {
|
|
6
|
+
super(options);
|
|
7
|
+
this.archive = archive;
|
|
8
|
+
}
|
|
9
|
+
async accept(acceptor) {
|
|
10
|
+
const reader = openArchive(this.archive);
|
|
11
|
+
try {
|
|
12
|
+
for (const { directory, filename } of reader.filesIterator()) {
|
|
13
|
+
if (directory)
|
|
14
|
+
continue;
|
|
15
|
+
const content = reader.extractFileByName(filename);
|
|
16
|
+
await acceptor(filename, content);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
reader.close();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ArchiveResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchiveResolver.js","sourceRoot":"","sources":["../../src/resolver/ArchiveResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,iBAAiB;IAEzC;IADnB,YACmB,OAAe,EAChC,UAAyB,EAAE;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,YAAO,GAAP,OAAO,CAAQ;IAIlC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC7D,IAAI,SAAS;oBAAE,SAAS;gBACxB,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACnD,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FilterOptions } from "../options.js";
|
|
2
|
+
import type { Acceptor } from "./IResolver.js";
|
|
3
|
+
import { FilteringResolver } from "./IResolver.js";
|
|
4
|
+
export default class FolderResolver extends FilteringResolver {
|
|
5
|
+
private readonly folder;
|
|
6
|
+
constructor(folder: string, options?: FilterOptions);
|
|
7
|
+
private recursiveExtract;
|
|
8
|
+
accept(acceptor: Acceptor): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import { join } from "path/posix";
|
|
3
|
+
import { listChildren } from "../util.js";
|
|
4
|
+
import { FilteringResolver } from "./IResolver.js";
|
|
5
|
+
export default class FolderResolver extends FilteringResolver {
|
|
6
|
+
folder;
|
|
7
|
+
constructor(folder, options = {}) {
|
|
8
|
+
super(options);
|
|
9
|
+
this.folder = folder;
|
|
10
|
+
}
|
|
11
|
+
recursiveExtract(acceptor, path = ".") {
|
|
12
|
+
const children = listChildren(join(this.folder, path));
|
|
13
|
+
const files = children.filter((it) => it.info.isFile());
|
|
14
|
+
files.forEach((it) => {
|
|
15
|
+
const relative = join(path, it.name);
|
|
16
|
+
if (this.filter(relative))
|
|
17
|
+
acceptor(relative, readFileSync(it.path));
|
|
18
|
+
});
|
|
19
|
+
const folders = children.filter((it) => it.info.isDirectory());
|
|
20
|
+
folders.forEach((it) => {
|
|
21
|
+
const relative = join(path, it.name);
|
|
22
|
+
if (this.filter(relative, { partial: true }))
|
|
23
|
+
this.recursiveExtract(acceptor, relative);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async accept(acceptor) {
|
|
27
|
+
return this.recursiveExtract(acceptor);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=FolderResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FolderResolver.js","sourceRoot":"","sources":["../../src/resolver/FolderResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,iBAAiB;IAExC;IADnB,YACmB,MAAc,EAC/B,UAAyB,EAAE;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,WAAM,GAAN,MAAM,CAAQ;IAIjC,CAAC;IAEO,gBAAgB,CAAC,QAAkB,EAAE,IAAI,GAAG,GAAG;QACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FilterOptions } from "../options.js";
|
|
2
|
+
export interface IResolver {
|
|
3
|
+
extract(acceptor: Acceptor): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export interface Acceptor<T = NodeJS.ArrayBufferView | string> {
|
|
6
|
+
(path: string, content: T): void | false | Promise<void | false>;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class FilteringResolver implements IResolver {
|
|
9
|
+
protected readonly filter: (value: string, options?: import("minimatch").MinimatchOptions) => boolean;
|
|
10
|
+
constructor(options?: FilterOptions);
|
|
11
|
+
abstract accept(acceptor: Acceptor): Promise<void>;
|
|
12
|
+
extract(acceptor: Acceptor): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createFilter } from "../filter.js";
|
|
2
|
+
export class FilteringResolver {
|
|
3
|
+
filter;
|
|
4
|
+
constructor(options = {}) {
|
|
5
|
+
this.filter = createFilter(options);
|
|
6
|
+
}
|
|
7
|
+
async extract(acceptor) {
|
|
8
|
+
return this.accept((path, content) => {
|
|
9
|
+
return acceptor(path, content);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=IResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IResolver.js","sourceRoot":"","sources":["../../src/resolver/IResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAW5C,MAAM,OAAgB,iBAAiB;IAClB,MAAM,CAAC;IAE1B,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAID,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACnC,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PacksConfig } from "../config.js";
|
|
2
|
+
import type Options from "../options.js";
|
|
3
|
+
import ArchiveResolver from "./ArchiveResolver.js";
|
|
4
|
+
import FolderResolver from "./FolderResolver.js";
|
|
5
|
+
import type { IResolver } from "./IResolver.js";
|
|
6
|
+
export interface ResolverInfo {
|
|
7
|
+
resolver: IResolver;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
type SingleOptions = Omit<Options, "from"> & {
|
|
11
|
+
from: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function createResolver(options: SingleOptions): ArchiveResolver | FolderResolver;
|
|
14
|
+
export declare function mergeResolvers(resolvers: Array<IResolver | ResolverInfo>, options?: Options & {
|
|
15
|
+
async?: boolean;
|
|
16
|
+
}): IResolver;
|
|
17
|
+
export declare function createResolvers(options: Options, config?: PacksConfig): ResolverInfo[];
|
|
18
|
+
export declare function createMergedResolver(options: Options & {
|
|
19
|
+
async?: boolean;
|
|
20
|
+
}, config?: PacksConfig): IResolver;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { existsSync, statSync } from "fs";
|
|
2
|
+
import { extname, join, resolve } from "path";
|
|
3
|
+
import { getConfig } from "../config.js";
|
|
4
|
+
import { arrayOrSelf, exists, listChildren, orderBy } from "../util.js";
|
|
5
|
+
import ArchiveResolver from "./ArchiveResolver.js";
|
|
6
|
+
import FolderResolver from "./FolderResolver.js";
|
|
7
|
+
function tryCreateResolver({ path, info }, options) {
|
|
8
|
+
if (info.isFile() && [".zip", ".jar"].includes(extname(path)))
|
|
9
|
+
return new ArchiveResolver(path, options);
|
|
10
|
+
if (info.isDirectory())
|
|
11
|
+
return new FolderResolver(path, options);
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
export function createResolver(options) {
|
|
15
|
+
const path = options.from;
|
|
16
|
+
const info = statSync(path);
|
|
17
|
+
const resolver = tryCreateResolver({ path, info }, options);
|
|
18
|
+
if (!resolver) {
|
|
19
|
+
throw new Error(`unable to create resolver for ${path}`);
|
|
20
|
+
}
|
|
21
|
+
return resolver;
|
|
22
|
+
}
|
|
23
|
+
function createResolversFor(options, from, config = getConfig(from)) {
|
|
24
|
+
if (!existsSync(from)) {
|
|
25
|
+
throw new Error(`input directory not found: ${resolve(from)}`);
|
|
26
|
+
}
|
|
27
|
+
const packs = listChildren(from)
|
|
28
|
+
.map((it) => ({ ...it, config: config.packs[it.name] }))
|
|
29
|
+
.filter((it) => !it.config?.disabled);
|
|
30
|
+
const resolvers = orderBy(packs, (it) => it.config?.priority ?? 0)
|
|
31
|
+
.flatMap(({ config, name, path, info }) => {
|
|
32
|
+
const paths = arrayOrSelf(config?.paths ?? ".");
|
|
33
|
+
return paths.map((suffix) => {
|
|
34
|
+
const resolver = tryCreateResolver({ path: join(path, suffix), info }, options);
|
|
35
|
+
return resolver && { resolver, name };
|
|
36
|
+
});
|
|
37
|
+
})
|
|
38
|
+
.filter(exists);
|
|
39
|
+
return resolvers;
|
|
40
|
+
}
|
|
41
|
+
export function mergeResolvers(resolvers, options) {
|
|
42
|
+
const runners = resolvers.map((it) => (acceptor) => {
|
|
43
|
+
if ("extract" in it)
|
|
44
|
+
return it.extract(acceptor);
|
|
45
|
+
if (!options?.silent)
|
|
46
|
+
console.log(it.name);
|
|
47
|
+
return it.resolver.extract(acceptor);
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
extract: async (acceptor) => {
|
|
51
|
+
if (options?.async !== false) {
|
|
52
|
+
await Promise.all(runners.map((run) => run(acceptor)));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
for (const run of runners) {
|
|
56
|
+
await run(acceptor);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function createResolvers(options, config) {
|
|
63
|
+
const resolvers = arrayOrSelf(options.from).flatMap((from) => createResolversFor(options, from, config));
|
|
64
|
+
if (!options.silent)
|
|
65
|
+
console.log(`Found ${resolvers.length} resource/data packs`);
|
|
66
|
+
return resolvers;
|
|
67
|
+
}
|
|
68
|
+
export function createMergedResolver(options, config) {
|
|
69
|
+
const resolvers = createResolvers(options, config);
|
|
70
|
+
return mergeResolvers(resolvers, options);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function createTestAcceptor() {
|
|
2
|
+
const received = new Map();
|
|
3
|
+
const acceptor = (path, content) => {
|
|
4
|
+
received.set(path, content.toString());
|
|
5
|
+
};
|
|
6
|
+
acceptor.paths = () => [...received.keys()].sort();
|
|
7
|
+
acceptor.at = (path) => received.get(path) ?? null;
|
|
8
|
+
acceptor.jsonAt = (path) => {
|
|
9
|
+
const raw = acceptor.at(path);
|
|
10
|
+
return raw && JSON.parse(raw);
|
|
11
|
+
};
|
|
12
|
+
return acceptor;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=TestAcceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestAcceptor.js","sourceRoot":"","sources":["../../src/testing/TestAcceptor.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,MAAM,QAAQ,GAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnD,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACnD,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestResolver.js","sourceRoot":"","sources":["../../src/testing/TestResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,OAAyB;IAC1D,OAAO,oBAAoB,CAAC;QAC1B,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,gBAAgB;QACtB,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
package/dist/util.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Stats } from "fs";
|
|
2
|
+
export declare function exists<T>(value?: T | null): value is T;
|
|
3
|
+
export interface PathInfo {
|
|
4
|
+
path: string;
|
|
5
|
+
name: string;
|
|
6
|
+
info: Stats;
|
|
7
|
+
}
|
|
8
|
+
export declare function listChildren(dir: string): PathInfo[];
|
|
9
|
+
export declare function fileHash(content: Buffer, type?: string): string;
|
|
10
|
+
export declare function arrayOrSelf<T>(value?: T | T[]): T[];
|
|
11
|
+
type Comparable = string | number;
|
|
12
|
+
export declare function orderBy<T, C extends Comparable>(array: T[], selector: (value: T) => C): T[];
|
|
13
|
+
export {};
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import crypto from "crypto";
|
|
2
|
+
import { readdirSync, statSync } from "fs";
|
|
3
|
+
import { join } from "path/posix";
|
|
4
|
+
export function exists(value) {
|
|
5
|
+
return (value ?? null) !== null;
|
|
6
|
+
}
|
|
7
|
+
export function listChildren(dir) {
|
|
8
|
+
const unsorted = readdirSync(dir).map((name) => {
|
|
9
|
+
const path = join(dir, name);
|
|
10
|
+
const info = statSync(path);
|
|
11
|
+
return { name, path, info };
|
|
12
|
+
});
|
|
13
|
+
return orderBy(unsorted, (it) => it.name);
|
|
14
|
+
}
|
|
15
|
+
export function fileHash(content, type = "sha256") {
|
|
16
|
+
return crypto.createHash(type).update(content).digest("hex");
|
|
17
|
+
}
|
|
18
|
+
export function arrayOrSelf(value) {
|
|
19
|
+
if (!value)
|
|
20
|
+
return [];
|
|
21
|
+
return Array.isArray(value) ? value : [value];
|
|
22
|
+
}
|
|
23
|
+
export function orderBy(array, selector) {
|
|
24
|
+
return array.toSorted((a, b) => {
|
|
25
|
+
const [va, vb] = [a, b].map(selector);
|
|
26
|
+
return va > vb ? 1 : -1;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,MAAM,CAAI,KAAgB;IACxC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAClC,CAAC;AAQD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAI,GAAG,QAAQ;IACvD,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,KAAe;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAID,MAAM,UAAU,OAAO,CACrB,KAAU,EACV,QAAyB;IAEzB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;QAChD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adeficior/pack-resolver",
|
|
3
|
+
"version": "2.0.0-rc.10",
|
|
4
|
+
"description": "Pack Resolver",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"packageManager": "bun@1.3.14",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js",
|
|
10
|
+
"./testing": "./dist/testing/index.js"
|
|
11
|
+
},
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"typesVersions": {
|
|
14
|
+
"*": {
|
|
15
|
+
"testing": [
|
|
16
|
+
"./dist/testing/index.d.ts"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"lint": "eslint {src,test}",
|
|
26
|
+
"format": "prettier --write {src,test}",
|
|
27
|
+
"test": "bun test",
|
|
28
|
+
"test:ci": "bun run lint && bun run test --coverage"
|
|
29
|
+
},
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/Adeficior/PackResolver.git"
|
|
33
|
+
},
|
|
34
|
+
"license": "ISC",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/Adeficior/PackResolver/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/Adeficior/PackResolver#readme",
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@eslint/js": "^10.0.1",
|
|
41
|
+
"@types/bun": "latest",
|
|
42
|
+
"@types/minimatch": "^5.1.2",
|
|
43
|
+
"eslint": "^10.5.0",
|
|
44
|
+
"prettier": "^3.8.4",
|
|
45
|
+
"typescript": "^6.0.3",
|
|
46
|
+
"typescript-eslint": "^8.61.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"minimatch": "^10.2.5",
|
|
50
|
+
"zip-bun": "^1.3.8"
|
|
51
|
+
}
|
|
52
|
+
}
|