cnpmcore 3.42.2 → 3.43.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/dist/app/common/PackageUtil.d.ts +3 -1
- package/dist/app/common/PackageUtil.js +13 -2
- package/dist/app/common/typing.d.ts +6 -0
- package/dist/app/core/event/SyncESPackage.d.ts +35 -0
- package/dist/app/core/event/SyncESPackage.js +114 -0
- package/dist/app/core/service/PackageSearchService.d.ts +17 -0
- package/dist/app/core/service/PackageSearchService.js +222 -0
- package/dist/app/core/service/PackageSyncerService.js +1 -1
- package/dist/app/infra/SearchAdapter.d.ts +12 -0
- package/dist/app/infra/SearchAdapter.js +60 -0
- package/dist/app/port/config.d.ts +8 -0
- package/dist/app/port/controller/package/SearchPackageController.d.ts +16 -0
- package/dist/app/port/controller/package/SearchPackageController.js +87 -0
- package/dist/app/port/typebox.d.ts +5 -0
- package/dist/app/port/typebox.js +19 -2
- package/dist/app/repository/PackageRepository.d.ts +2 -2
- package/dist/app/repository/SearchRepository.d.ts +27 -0
- package/dist/app/repository/SearchRepository.js +35 -0
- package/dist/config/config.default.js +15 -1
- package/dist/config/config.unittest.d.ts +2 -0
- package/dist/config/config.unittest.js +13 -1
- package/dist/config/plugin.js +5 -1
- package/package.json +4 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { PackageJSONType } from '../repository/PackageRepository';
|
|
2
|
+
import { AuthorType, PackageJSONType } from '../repository/PackageRepository';
|
|
3
3
|
export declare const FULLNAME_REG_STRING = "@[^/]{1,220}/[^/]{1,220}|@[^%]+%2[fF][^/]{1,220}|[^@/]{1,220}";
|
|
4
4
|
export declare function getScopeAndName(fullname: string): string[];
|
|
5
5
|
export declare function getFullname(scope: string, name: string): string;
|
|
@@ -13,4 +13,6 @@ export declare function formatTarball(registry: string, scope: string, name: str
|
|
|
13
13
|
export declare function detectInstallScript(manifest: any): boolean;
|
|
14
14
|
/** 判断一个版本压缩包中是否包含 npm-shrinkwrap.json */
|
|
15
15
|
export declare function hasShrinkWrapInTgz(contentOrFile: Uint8Array | string): Promise<boolean>;
|
|
16
|
+
/** 写入 ES 时,格式化 author */
|
|
17
|
+
export declare function formatAuthor(author: string | AuthorType | undefined): AuthorType | undefined;
|
|
16
18
|
export declare function extractPackageJSON(tarballBytes: Buffer): Promise<PackageJSONType>;
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.extractPackageJSON = exports.hasShrinkWrapInTgz = exports.detectInstallScript = exports.formatTarball = exports.calculateIntegrity = exports.getPrefixedName = exports.cleanUserPrefix = exports.getFullname = exports.getScopeAndName = exports.FULLNAME_REG_STRING = void 0;
|
|
29
|
+
exports.extractPackageJSON = exports.formatAuthor = exports.hasShrinkWrapInTgz = exports.detectInstallScript = exports.formatTarball = exports.calculateIntegrity = exports.getPrefixedName = exports.cleanUserPrefix = exports.getFullname = exports.getScopeAndName = exports.FULLNAME_REG_STRING = void 0;
|
|
30
30
|
const node_fs_1 = require("node:fs");
|
|
31
31
|
const node_stream_1 = require("node:stream");
|
|
32
32
|
const promises_1 = require("node:stream/promises");
|
|
@@ -131,6 +131,17 @@ async function hasShrinkWrapInTgz(contentOrFile) {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
exports.hasShrinkWrapInTgz = hasShrinkWrapInTgz;
|
|
134
|
+
/** 写入 ES 时,格式化 author */
|
|
135
|
+
function formatAuthor(author) {
|
|
136
|
+
if (author === undefined) {
|
|
137
|
+
return author;
|
|
138
|
+
}
|
|
139
|
+
if (typeof author === 'string') {
|
|
140
|
+
return { name: author };
|
|
141
|
+
}
|
|
142
|
+
return author;
|
|
143
|
+
}
|
|
144
|
+
exports.formatAuthor = formatAuthor;
|
|
134
145
|
async function extractPackageJSON(tarballBytes) {
|
|
135
146
|
return new Promise((resolve, reject) => {
|
|
136
147
|
node_stream_1.Readable.from(tarballBytes)
|
|
@@ -153,4 +164,4 @@ async function extractPackageJSON(tarballBytes) {
|
|
|
153
164
|
});
|
|
154
165
|
}
|
|
155
166
|
exports.extractPackageJSON = extractPackageJSON;
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvY29tbW9uL1BhY2thZ2VVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBQTJDO0FBQzNDLDZDQUF1QztBQUN2QyxtREFBZ0Q7QUFDaEQsMkNBQTZCO0FBQzdCLDhDQUFzQjtBQUl0QixlQUFlO0FBQ2YsZUFBZTtBQUNmLGFBQWE7QUFDYixPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBFQUEwRTtBQUM3RCxRQUFBLG1CQUFtQixHQUFHLGlFQUFpRSxDQUFDO0FBRXJHLFNBQWdCLGVBQWUsQ0FBQyxRQUFnQjtJQUM5QyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMvQjtJQUNELE9BQU8sQ0FBRSxFQUFFLEVBQUUsUUFBUSxDQUFFLENBQUM7QUFDMUIsQ0FBQztBQUxELDBDQUtDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQWEsRUFBRSxJQUFZO0lBQ3JELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNDLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxRQUFnQjtJQUM5QyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7SUFDOUQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDcEQsQ0FBQztBQUZELDBDQUVD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
|
|
@@ -4,6 +4,7 @@ import { CnpmcoreConfig } from '../port/config';
|
|
|
4
4
|
import { Readable } from 'stream';
|
|
5
5
|
import { IncomingHttpHeaders } from 'http';
|
|
6
6
|
import { EggContext } from '@eggjs/tegg';
|
|
7
|
+
import { estypes } from '@elastic/elasticsearch';
|
|
7
8
|
export interface UploadResult {
|
|
8
9
|
key: string;
|
|
9
10
|
}
|
|
@@ -37,6 +38,11 @@ export interface QueueAdapter {
|
|
|
37
38
|
pop<T>(key: string): Promise<T | null>;
|
|
38
39
|
length(key: string): Promise<number>;
|
|
39
40
|
}
|
|
41
|
+
export interface SearchAdapter {
|
|
42
|
+
search<T>(query: any): Promise<estypes.SearchHitsMetadata<T>>;
|
|
43
|
+
upsert<T>(id: string, document: T): Promise<string>;
|
|
44
|
+
delete(id: string): Promise<string>;
|
|
45
|
+
}
|
|
40
46
|
export interface AuthUrlResult {
|
|
41
47
|
loginUrl: string;
|
|
42
48
|
doneUrl: string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { EggAppConfig } from 'egg';
|
|
2
|
+
import { PackageSearchService } from '../service/PackageSearchService';
|
|
3
|
+
declare class SyncESPackage {
|
|
4
|
+
protected readonly packageSearchService: PackageSearchService;
|
|
5
|
+
protected readonly config: EggAppConfig;
|
|
6
|
+
protected syncPackage(fullname: string): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class PackageUnpublished extends SyncESPackage {
|
|
9
|
+
handle(fullname: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare class PackageVersionAdded extends SyncESPackage {
|
|
12
|
+
handle(fullname: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare class PackageVersionRemoved extends SyncESPackage {
|
|
15
|
+
handle(fullname: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare class PackageTagAdded extends SyncESPackage {
|
|
18
|
+
handle(fullname: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare class PackageTagChanged extends SyncESPackage {
|
|
21
|
+
handle(fullname: string): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export declare class PackageTagRemoved extends SyncESPackage {
|
|
24
|
+
handle(fullname: string): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare class PackageMaintainerChanged extends SyncESPackage {
|
|
27
|
+
handle(fullname: string): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export declare class PackageMaintainerRemoved extends SyncESPackage {
|
|
30
|
+
handle(fullname: string): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare class PackageMetaChanged extends SyncESPackage {
|
|
33
|
+
handle(fullname: string): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PackageMetaChanged = exports.PackageMaintainerRemoved = exports.PackageMaintainerChanged = exports.PackageTagRemoved = exports.PackageTagChanged = exports.PackageTagAdded = exports.PackageVersionRemoved = exports.PackageVersionAdded = exports.PackageUnpublished = void 0;
|
|
13
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
14
|
+
const index_1 = require("./index");
|
|
15
|
+
const PackageSearchService_1 = require("../service/PackageSearchService");
|
|
16
|
+
class SyncESPackage {
|
|
17
|
+
async syncPackage(fullname) {
|
|
18
|
+
if (!this.config.cnpmcore.enableElasticsearch)
|
|
19
|
+
return;
|
|
20
|
+
await this.packageSearchService.syncPackage(fullname, true);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, tegg_1.Inject)(),
|
|
25
|
+
__metadata("design:type", PackageSearchService_1.PackageSearchService)
|
|
26
|
+
], SyncESPackage.prototype, "packageSearchService", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, tegg_1.Inject)(),
|
|
29
|
+
__metadata("design:type", Object)
|
|
30
|
+
], SyncESPackage.prototype, "config", void 0);
|
|
31
|
+
let PackageUnpublished = class PackageUnpublished extends SyncESPackage {
|
|
32
|
+
async handle(fullname) {
|
|
33
|
+
if (!this.config.cnpmcore.enableElasticsearch)
|
|
34
|
+
return;
|
|
35
|
+
await this.packageSearchService.removePackage(fullname);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.PackageUnpublished = PackageUnpublished;
|
|
39
|
+
exports.PackageUnpublished = PackageUnpublished = __decorate([
|
|
40
|
+
(0, tegg_1.Event)(index_1.PACKAGE_UNPUBLISHED)
|
|
41
|
+
], PackageUnpublished);
|
|
42
|
+
let PackageVersionAdded = class PackageVersionAdded extends SyncESPackage {
|
|
43
|
+
async handle(fullname) {
|
|
44
|
+
await this.syncPackage(fullname);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.PackageVersionAdded = PackageVersionAdded;
|
|
48
|
+
exports.PackageVersionAdded = PackageVersionAdded = __decorate([
|
|
49
|
+
(0, tegg_1.Event)(index_1.PACKAGE_VERSION_ADDED)
|
|
50
|
+
], PackageVersionAdded);
|
|
51
|
+
let PackageVersionRemoved = class PackageVersionRemoved extends SyncESPackage {
|
|
52
|
+
async handle(fullname) {
|
|
53
|
+
await this.syncPackage(fullname);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.PackageVersionRemoved = PackageVersionRemoved;
|
|
57
|
+
exports.PackageVersionRemoved = PackageVersionRemoved = __decorate([
|
|
58
|
+
(0, tegg_1.Event)(index_1.PACKAGE_VERSION_REMOVED)
|
|
59
|
+
], PackageVersionRemoved);
|
|
60
|
+
let PackageTagAdded = class PackageTagAdded extends SyncESPackage {
|
|
61
|
+
async handle(fullname) {
|
|
62
|
+
await this.syncPackage(fullname);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.PackageTagAdded = PackageTagAdded;
|
|
66
|
+
exports.PackageTagAdded = PackageTagAdded = __decorate([
|
|
67
|
+
(0, tegg_1.Event)(index_1.PACKAGE_TAG_ADDED)
|
|
68
|
+
], PackageTagAdded);
|
|
69
|
+
let PackageTagChanged = class PackageTagChanged extends SyncESPackage {
|
|
70
|
+
async handle(fullname) {
|
|
71
|
+
await this.syncPackage(fullname);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.PackageTagChanged = PackageTagChanged;
|
|
75
|
+
exports.PackageTagChanged = PackageTagChanged = __decorate([
|
|
76
|
+
(0, tegg_1.Event)(index_1.PACKAGE_TAG_CHANGED)
|
|
77
|
+
], PackageTagChanged);
|
|
78
|
+
let PackageTagRemoved = class PackageTagRemoved extends SyncESPackage {
|
|
79
|
+
async handle(fullname) {
|
|
80
|
+
await this.syncPackage(fullname);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.PackageTagRemoved = PackageTagRemoved;
|
|
84
|
+
exports.PackageTagRemoved = PackageTagRemoved = __decorate([
|
|
85
|
+
(0, tegg_1.Event)(index_1.PACKAGE_TAG_REMOVED)
|
|
86
|
+
], PackageTagRemoved);
|
|
87
|
+
let PackageMaintainerChanged = class PackageMaintainerChanged extends SyncESPackage {
|
|
88
|
+
async handle(fullname) {
|
|
89
|
+
await this.syncPackage(fullname);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.PackageMaintainerChanged = PackageMaintainerChanged;
|
|
93
|
+
exports.PackageMaintainerChanged = PackageMaintainerChanged = __decorate([
|
|
94
|
+
(0, tegg_1.Event)(index_1.PACKAGE_MAINTAINER_CHANGED)
|
|
95
|
+
], PackageMaintainerChanged);
|
|
96
|
+
let PackageMaintainerRemoved = class PackageMaintainerRemoved extends SyncESPackage {
|
|
97
|
+
async handle(fullname) {
|
|
98
|
+
await this.syncPackage(fullname);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
exports.PackageMaintainerRemoved = PackageMaintainerRemoved;
|
|
102
|
+
exports.PackageMaintainerRemoved = PackageMaintainerRemoved = __decorate([
|
|
103
|
+
(0, tegg_1.Event)(index_1.PACKAGE_MAINTAINER_REMOVED)
|
|
104
|
+
], PackageMaintainerRemoved);
|
|
105
|
+
let PackageMetaChanged = class PackageMetaChanged extends SyncESPackage {
|
|
106
|
+
async handle(fullname) {
|
|
107
|
+
await this.syncPackage(fullname);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
exports.PackageMetaChanged = PackageMetaChanged;
|
|
111
|
+
exports.PackageMetaChanged = PackageMetaChanged = __decorate([
|
|
112
|
+
(0, tegg_1.Event)(index_1.PACKAGE_META_CHANGED)
|
|
113
|
+
], PackageMetaChanged);
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3luY0VTUGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL2V2ZW50L1N5bmNFU1BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0Esc0NBQTRDO0FBQzVDLG1DQVVpQjtBQUVqQiwwRUFBdUU7QUFFdkUsTUFBTSxhQUFhO0lBT1AsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CO1lBQUUsT0FBTztRQUN0RCxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQVRvQjtJQURsQixJQUFBLGFBQU0sR0FBRTs4QkFDZ0MsMkNBQW9COzJEQUFDO0FBRzNDO0lBRGxCLElBQUEsYUFBTSxHQUFFOzs2Q0FDK0I7QUFTbkMsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBbUIsU0FBUSxhQUFhO0lBQ25ELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtZQUFFLE9BQU87UUFDdEQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDRixDQUFBO0FBTFksZ0RBQWtCOzZCQUFsQixrQkFBa0I7SUFEOUIsSUFBQSxZQUFLLEVBQUMsMkJBQW1CLENBQUM7R0FDZCxrQkFBa0IsQ0FLOUI7QUFHTSxJQUFNLG1CQUFtQixHQUF6QixNQUFNLG1CQUFvQixTQUFRLGFBQWE7SUFDcEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFnQjtRQUMzQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGLENB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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AbstractService } from '../../common/AbstractService';
|
|
2
|
+
import { SearchManifestType } from '../../repository/SearchRepository';
|
|
3
|
+
import { PackageRepository } from '../../repository/PackageRepository';
|
|
4
|
+
export declare class PackageSearchService extends AbstractService {
|
|
5
|
+
private readonly packageManagerService;
|
|
6
|
+
private readonly searchRepository;
|
|
7
|
+
private packageVersionDownloadRepository;
|
|
8
|
+
protected packageRepository: PackageRepository;
|
|
9
|
+
syncPackage(fullname: string, isSync?: boolean): Promise<string | undefined>;
|
|
10
|
+
searchPackage(text: string, from: number, size: number): Promise<{
|
|
11
|
+
objects: (SearchManifestType | undefined)[];
|
|
12
|
+
total: number;
|
|
13
|
+
}>;
|
|
14
|
+
removePackage(fullname: string): Promise<string>;
|
|
15
|
+
private _buildMatchQueries;
|
|
16
|
+
private _buildScriptScore;
|
|
17
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PackageSearchService = void 0;
|
|
16
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
17
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
18
|
+
const AbstractService_1 = require("../../common/AbstractService");
|
|
19
|
+
const PackageUtil_1 = require("../../common/PackageUtil");
|
|
20
|
+
const PackageManagerService_1 = require("./PackageManagerService");
|
|
21
|
+
const SearchRepository_1 = require("../../repository/SearchRepository");
|
|
22
|
+
const PackageVersionDownloadRepository_1 = require("../../repository/PackageVersionDownloadRepository");
|
|
23
|
+
const PackageRepository_1 = require("../../repository/PackageRepository");
|
|
24
|
+
let PackageSearchService = class PackageSearchService extends AbstractService_1.AbstractService {
|
|
25
|
+
async syncPackage(fullname, isSync = true) {
|
|
26
|
+
const [scope, name] = (0, PackageUtil_1.getScopeAndName)(fullname);
|
|
27
|
+
const fullManifests = await this.packageManagerService.listPackageFullManifests(scope, name, isSync);
|
|
28
|
+
if (!fullManifests.data) {
|
|
29
|
+
this.logger.warn('[PackageSearchService.syncPackage] save package:%s not found', fullname);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const pkg = await this.packageRepository.findPackage(scope, name);
|
|
33
|
+
if (!pkg) {
|
|
34
|
+
this.logger.warn('[PackageSearchService.syncPackage] findPackage:%s not found', fullname);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// get last year download data
|
|
38
|
+
const startDate = (0, dayjs_1.default)().subtract(1, 'year');
|
|
39
|
+
const endDate = (0, dayjs_1.default)();
|
|
40
|
+
const entities = await this.packageVersionDownloadRepository.query(pkg.packageId, startDate.toDate(), endDate.toDate());
|
|
41
|
+
let downloadsAll = 0;
|
|
42
|
+
for (const entity of entities) {
|
|
43
|
+
for (let i = 1; i <= 31; i++) {
|
|
44
|
+
const day = String(i).padStart(2, '0');
|
|
45
|
+
const field = `d${day}`;
|
|
46
|
+
const counter = entity[field];
|
|
47
|
+
if (!counter)
|
|
48
|
+
continue;
|
|
49
|
+
downloadsAll += counter;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const { data: manifest } = fullManifests;
|
|
53
|
+
const latestVersion = manifest['dist-tags'].latest;
|
|
54
|
+
const latestManifest = manifest.versions[latestVersion];
|
|
55
|
+
const packageDoc = {
|
|
56
|
+
name: manifest.name,
|
|
57
|
+
version: latestVersion,
|
|
58
|
+
_rev: manifest._rev,
|
|
59
|
+
scope: scope ? scope.replace('@', '') : 'unscoped',
|
|
60
|
+
keywords: manifest.keywords || [],
|
|
61
|
+
versions: Object.keys(manifest.versions),
|
|
62
|
+
description: manifest.description,
|
|
63
|
+
license: manifest.license,
|
|
64
|
+
maintainers: manifest.maintainers,
|
|
65
|
+
author: (0, PackageUtil_1.formatAuthor)(manifest.author),
|
|
66
|
+
'dist-tags': manifest['dist-tags'],
|
|
67
|
+
date: manifest.time[latestVersion],
|
|
68
|
+
created: manifest.time.created,
|
|
69
|
+
modified: manifest.time.modified,
|
|
70
|
+
// 归属 registry,keywords 枚举值
|
|
71
|
+
_source_registry_name: manifest._source_registry_name,
|
|
72
|
+
// 最新版本发布人 _npmUser:
|
|
73
|
+
_npmUser: latestManifest?._npmUser,
|
|
74
|
+
// 最新版本发布信息
|
|
75
|
+
publish_time: latestManifest?.publish_time,
|
|
76
|
+
};
|
|
77
|
+
const document = {
|
|
78
|
+
package: packageDoc,
|
|
79
|
+
downloads: {
|
|
80
|
+
all: downloadsAll,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
return await this.searchRepository.upsertPackage(document);
|
|
84
|
+
}
|
|
85
|
+
async searchPackage(text, from, size) {
|
|
86
|
+
const matchQueries = this._buildMatchQueries(text);
|
|
87
|
+
const scriptScore = this._buildScriptScore({
|
|
88
|
+
text,
|
|
89
|
+
scoreEffect: 0.25,
|
|
90
|
+
});
|
|
91
|
+
const res = await this.searchRepository.searchPackage({
|
|
92
|
+
body: {
|
|
93
|
+
size,
|
|
94
|
+
from,
|
|
95
|
+
query: {
|
|
96
|
+
function_score: {
|
|
97
|
+
boost_mode: 'replace',
|
|
98
|
+
query: {
|
|
99
|
+
bool: {
|
|
100
|
+
should: matchQueries,
|
|
101
|
+
minimum_should_match: matchQueries.length ? 1 : 0,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
script_score: scriptScore,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
const { hits, total } = res;
|
|
110
|
+
return {
|
|
111
|
+
objects: hits?.map(item => {
|
|
112
|
+
return item._source;
|
|
113
|
+
}),
|
|
114
|
+
total: total.value,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
async removePackage(fullname) {
|
|
118
|
+
return await this.searchRepository.removePackage(fullname);
|
|
119
|
+
}
|
|
120
|
+
// https://github.com/npms-io/queries/blob/master/lib/search.js#L8C1-L78C2
|
|
121
|
+
_buildMatchQueries(text) {
|
|
122
|
+
return [
|
|
123
|
+
// Standard match using cross_fields
|
|
124
|
+
{
|
|
125
|
+
multi_match: {
|
|
126
|
+
query: text,
|
|
127
|
+
operator: 'and',
|
|
128
|
+
fields: [
|
|
129
|
+
'package.name.standard^4',
|
|
130
|
+
'package.description.standard',
|
|
131
|
+
'package.keywords.standard^2',
|
|
132
|
+
],
|
|
133
|
+
type: 'cross_fields',
|
|
134
|
+
boost: 6,
|
|
135
|
+
tie_breaker: 0.5,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
// Partial match using edge-ngram
|
|
139
|
+
{
|
|
140
|
+
multi_match: {
|
|
141
|
+
query: text,
|
|
142
|
+
operator: 'and',
|
|
143
|
+
fields: [
|
|
144
|
+
'package.name.edge_ngram^4',
|
|
145
|
+
'package.description.edge_ngram',
|
|
146
|
+
'package.keywords.edge_ngram^2',
|
|
147
|
+
],
|
|
148
|
+
type: 'phrase',
|
|
149
|
+
slop: 3,
|
|
150
|
+
boost: 3,
|
|
151
|
+
tie_breaker: 0.5,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
// Normal term match with an english stemmer
|
|
155
|
+
{
|
|
156
|
+
multi_match: {
|
|
157
|
+
query: text,
|
|
158
|
+
operator: 'and',
|
|
159
|
+
fields: [
|
|
160
|
+
'package.name.english_docs^4',
|
|
161
|
+
'package.description.english_docs',
|
|
162
|
+
'package.keywords.english_docs^2',
|
|
163
|
+
],
|
|
164
|
+
type: 'cross_fields',
|
|
165
|
+
boost: 3,
|
|
166
|
+
tie_breaker: 0.5,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
// Normal term match with a more aggressive english stemmer (not so important)
|
|
170
|
+
{
|
|
171
|
+
multi_match: {
|
|
172
|
+
query: text,
|
|
173
|
+
operator: 'and',
|
|
174
|
+
fields: [
|
|
175
|
+
'package.name.english_aggressive_docs^4',
|
|
176
|
+
'package.description.english_aggressive_docs',
|
|
177
|
+
'package.keywords.english_aggressive_docs^2',
|
|
178
|
+
],
|
|
179
|
+
type: 'cross_fields',
|
|
180
|
+
tie_breaker: 0.5,
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
_buildScriptScore(params) {
|
|
186
|
+
// keep search simple, only download(popularity)
|
|
187
|
+
const downloads = 'doc["downloads.all"].value';
|
|
188
|
+
const source = `doc["package.name.raw"].value.equals("${params.text}") ? 100000 + ${downloads} : _score * Math.pow(${downloads}, ${params.scoreEffect})`;
|
|
189
|
+
return {
|
|
190
|
+
script: {
|
|
191
|
+
source,
|
|
192
|
+
params: {
|
|
193
|
+
text: params.text || '',
|
|
194
|
+
scoreEffect: params.scoreEffect,
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
exports.PackageSearchService = PackageSearchService;
|
|
201
|
+
__decorate([
|
|
202
|
+
(0, tegg_1.Inject)(),
|
|
203
|
+
__metadata("design:type", PackageManagerService_1.PackageManagerService)
|
|
204
|
+
], PackageSearchService.prototype, "packageManagerService", void 0);
|
|
205
|
+
__decorate([
|
|
206
|
+
(0, tegg_1.Inject)(),
|
|
207
|
+
__metadata("design:type", SearchRepository_1.SearchRepository)
|
|
208
|
+
], PackageSearchService.prototype, "searchRepository", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
(0, tegg_1.Inject)(),
|
|
211
|
+
__metadata("design:type", PackageVersionDownloadRepository_1.PackageVersionDownloadRepository)
|
|
212
|
+
], PackageSearchService.prototype, "packageVersionDownloadRepository", void 0);
|
|
213
|
+
__decorate([
|
|
214
|
+
(0, tegg_1.Inject)(),
|
|
215
|
+
__metadata("design:type", PackageRepository_1.PackageRepository)
|
|
216
|
+
], PackageSearchService.prototype, "packageRepository", void 0);
|
|
217
|
+
exports.PackageSearchService = PackageSearchService = __decorate([
|
|
218
|
+
(0, tegg_1.SingletonProto)({
|
|
219
|
+
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
220
|
+
})
|
|
221
|
+
], PackageSearchService);
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVNlYXJjaFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL1BhY2thZ2VTZWFyY2hTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUFrRTtBQUVsRSxrREFBMEI7QUFFMUIsa0VBQStEO0FBQy9ELDBEQUF5RTtBQUN6RSxtRUFBZ0U7QUFDaEUsd0VBQTRHO0FBQzVHLHdHQUFxRztBQUNyRywwRUFBdUU7QUFNaEUsSUFBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBcUIsU0FBUSxpQ0FBZTtJQVV2RCxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQWdCLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDL0MsTUFBTSxDQUFFLEtBQUssRUFBRSxJQUFJLENBQUUsR0FBRyxJQUFBLDZCQUFlLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4REFBOEQsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMzRixPQUFPO1NBQ1I7UUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw2REFBNkQsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxRixPQUFPO1NBQ1I7UUFFRCw4QkFBOEI7UUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBQSxlQUFLLEdBQUUsQ0FBQyxRQUFRLENBQUMs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
|
|
@@ -870,4 +870,4 @@ exports.PackageSyncerService = PackageSyncerService = __decorate([
|
|
|
870
870
|
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
871
871
|
})
|
|
872
872
|
], PackageSyncerService);
|
|
873
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVN5bmNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL1BhY2thZ2VTeW5jZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixzQ0FJcUI7QUFDckIseUNBQTJDO0FBRTNDLDhDQUE2QztBQUM3QywwQ0FBaUM7QUFDakMsbUNBQTBDO0FBQzFDLG9EQUE0QjtBQUM1Qix5RUFBdUQ7QUFDdkQsNkVBQTJEO0FBQzNELGtFQUFpRjtBQUNqRiwwREFBZ0Y7QUFDaEYsb0RBQTJEO0FBQzNELGlEQUE2RDtBQUM3RCxrRUFBK0Q7QUFDL0Qsb0VBQWlFO0FBQ2pFLDBFQUE2RztBQUM3Ryx3R0FBcUc7QUFDckcsb0VBQWlFO0FBQ2pFLHlDQUFxRjtBQUVyRiwrQ0FBNEM7QUFDNUMsK0NBQTRDO0FBQzVDLG1FQUFnRTtBQUNoRSxpREFBOEM7QUFFOUMscUVBQWtFO0FBRWxFLDJDQUE2QztBQUM3QywrREFBNEQ7QUFDNUQsMkRBQXNEO0FBQ3RELHNEQUE0RTtBQVc1RSxTQUFTLE1BQU07SUFDYixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQWEscUJBQXNCLFNBQVEsNEJBQWU7Q0FDekQ7QUFERCxzREFDQztBQUtNLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQXFCLFNBQVEsaUNBQWU7SUEwQmhELEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBZ0IsRUFBRSxPQUFnQztRQUN4RSxNQUFNLENBQUUsS0FBSyxFQUFFLElBQUksQ0FBRSxHQUFHLElBQUEsNkJBQWUsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLDZE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
|
|
873
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVN5bmNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL1BhY2thZ2VTeW5jZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixzQ0FJcUI7QUFDckIseUNBQTJDO0FBRTNDLDhDQUE2QztBQUM3QywwQ0FBaUM7QUFDakMsbUNBQTBDO0FBQzFDLG9EQUE0QjtBQUM1Qix5RUFBdUQ7QUFDdkQsNkVBQTJEO0FBQzNELGtFQUFpRjtBQUNqRiwwREFBZ0Y7QUFDaEYsb0RBQTJEO0FBQzNELGlEQUE2RDtBQUM3RCxrRUFBK0Q7QUFDL0Qsb0VBQWlFO0FBQ2pFLDBFQUE2RztBQUM3Ryx3R0FBcUc7QUFDckcsb0VBQWlFO0FBQ2pFLHlDQUFxRjtBQUVyRiwrQ0FBNEM7QUFDNUMsK0NBQTRDO0FBQzVDLG1FQUFnRTtBQUNoRSxpREFBOEM7QUFFOUMscUVBQWtFO0FBRWxFLDJDQUE2QztBQUM3QywrREFBNEQ7QUFDNUQsMkRBQXNEO0FBQ3RELHNEQUE0RTtBQVc1RSxTQUFTLE1BQU07SUFDYixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQWEscUJBQXNCLFNBQVEsNEJBQWU7Q0FDekQ7QUFERCxzREFDQztBQUtNLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQXFCLFNBQVEsaUNBQWU7SUEwQmhELEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBZ0IsRUFBRSxPQUFnQztRQUN4RSxNQUFNLENBQUUsS0FBSyxFQUFFLElBQUksQ0FBRSxHQUFHLElBQUEsNkJBQWUsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLDZE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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { estypes } from '@elastic/elasticsearch';
|
|
2
|
+
import { SearchAdapter } from '../common/typing';
|
|
3
|
+
/**
|
|
4
|
+
* Use elasticsearch to search the huge npm packages.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ESSearchAdapter implements SearchAdapter {
|
|
7
|
+
private config;
|
|
8
|
+
private readonly elasticsearch;
|
|
9
|
+
search<T>(query: any): Promise<estypes.SearchHitsMetadata<T>>;
|
|
10
|
+
upsert<T>(id: string, document: T): Promise<string>;
|
|
11
|
+
delete(id: string): Promise<string>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ESSearchAdapter = void 0;
|
|
13
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
14
|
+
const elasticsearch_1 = require("@elastic/elasticsearch");
|
|
15
|
+
/**
|
|
16
|
+
* Use elasticsearch to search the huge npm packages.
|
|
17
|
+
*/
|
|
18
|
+
let ESSearchAdapter = class ESSearchAdapter {
|
|
19
|
+
async search(query) {
|
|
20
|
+
const { cnpmcore: { elasticsearchIndex: index } } = this.config;
|
|
21
|
+
const result = await this.elasticsearch.search({
|
|
22
|
+
index,
|
|
23
|
+
...query,
|
|
24
|
+
});
|
|
25
|
+
return result.hits;
|
|
26
|
+
}
|
|
27
|
+
async upsert(id, document) {
|
|
28
|
+
const { cnpmcore: { elasticsearchIndex: index } } = this.config;
|
|
29
|
+
const res = await this.elasticsearch.index({
|
|
30
|
+
id,
|
|
31
|
+
index,
|
|
32
|
+
document,
|
|
33
|
+
});
|
|
34
|
+
return res._id;
|
|
35
|
+
}
|
|
36
|
+
async delete(id) {
|
|
37
|
+
const { cnpmcore: { elasticsearchIndex: index } } = this.config;
|
|
38
|
+
const res = await this.elasticsearch.delete({
|
|
39
|
+
index,
|
|
40
|
+
id,
|
|
41
|
+
});
|
|
42
|
+
return res._id;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.ESSearchAdapter = ESSearchAdapter;
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, tegg_1.Inject)(),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], ESSearchAdapter.prototype, "config", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, tegg_1.Inject)(),
|
|
52
|
+
__metadata("design:type", elasticsearch_1.Client)
|
|
53
|
+
], ESSearchAdapter.prototype, "elasticsearch", void 0);
|
|
54
|
+
exports.ESSearchAdapter = ESSearchAdapter = __decorate([
|
|
55
|
+
(0, tegg_1.SingletonProto)({
|
|
56
|
+
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
57
|
+
name: 'searchAdapter',
|
|
58
|
+
})
|
|
59
|
+
], ESSearchAdapter);
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VhcmNoQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9pbmZyYS9TZWFyY2hBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNDQUlxQjtBQUdyQiwwREFBZ0Y7QUFHaEY7O0dBRUc7QUFLSSxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBTzFCLEtBQUssQ0FBQyxNQUFNLENBQUksS0FBVTtRQUN4QixNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUk7WUFDaEQsS0FBSztZQUNMLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBSSxFQUFVLEVBQUUsUUFBVztRQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDekMsRUFBRTtZQUNGLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNoRSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFDLEtBQUs7WUFDTCxFQUFFO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Q0FDRixDQUFBO0FBbENZLDBDQUFlO0FBRWxCO0lBRFAsSUFBQSxhQUFNLEdBQUU7OytDQUNvQjtBQUdaO0lBRGhCLElBQUEsYUFBTSxHQUFFOzhCQUN1QixzQkFBbUI7c0RBQUM7MEJBTHpDLGVBQWU7SUFKM0IsSUFBQSxxQkFBYyxFQUFDO1FBQ2QsV0FBVyxFQUFFLGtCQUFXLENBQUMsTUFBTTtRQUMvQixJQUFJLEVBQUUsZUFBZTtLQUN0QixDQUFDO0dBQ1csZUFBZSxDQWtDM0IifQ==
|
|
@@ -148,6 +148,14 @@ export type CnpmcoreConfig = {
|
|
|
148
148
|
* in most cases, you should set to false to keep the same behavior as source registry.
|
|
149
149
|
*/
|
|
150
150
|
strictSyncSpecivicVersion: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* enable elasticsearch
|
|
153
|
+
*/
|
|
154
|
+
enableElasticsearch: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* elasticsearch index. if enableElasticsearch is true, you must set a index to write es doc.
|
|
157
|
+
*/
|
|
158
|
+
elasticsearchIndex: string;
|
|
151
159
|
/**
|
|
152
160
|
* strictly enforces/validates manifest and tgz when publish, https://github.com/cnpm/cnpmcore/issues/542
|
|
153
161
|
*/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Static } from 'egg-typebox-validate/typebox';
|
|
2
|
+
import { AbstractController } from '../AbstractController';
|
|
3
|
+
import { SearchQueryOptions } from '../../typebox';
|
|
4
|
+
export declare class SearchPackageController extends AbstractController {
|
|
5
|
+
private readonly packageSearchService;
|
|
6
|
+
search(text: Static<typeof SearchQueryOptions>['text'], from: Static<typeof SearchQueryOptions>['from'], size: Static<typeof SearchQueryOptions>['size']): Promise<{
|
|
7
|
+
objects: (import("../../../repository/SearchRepository").SearchManifestType | undefined)[];
|
|
8
|
+
total: number;
|
|
9
|
+
}>;
|
|
10
|
+
sync(fullname: string): Promise<{
|
|
11
|
+
package: string | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
delete(fullname: string): Promise<{
|
|
14
|
+
package: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SearchPackageController = void 0;
|
|
16
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
17
|
+
const egg_errors_1 = require("egg-errors");
|
|
18
|
+
const AbstractController_1 = require("../AbstractController");
|
|
19
|
+
const PackageSearchService_1 = require("../../../core/service/PackageSearchService");
|
|
20
|
+
const PackageUtil_1 = require("../../../common/PackageUtil");
|
|
21
|
+
const AdminAccess_1 = require("../../middleware/AdminAccess");
|
|
22
|
+
let SearchPackageController = class SearchPackageController extends AbstractController_1.AbstractController {
|
|
23
|
+
async search(text, from, size) {
|
|
24
|
+
if (!this.config.cnpmcore.enableElasticsearch) {
|
|
25
|
+
throw new egg_errors_1.E451('search feature not enabled in `config.cnpmcore.enableElasticsearch`');
|
|
26
|
+
}
|
|
27
|
+
const data = await this.packageSearchService.searchPackage(text, from, size);
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
async sync(fullname) {
|
|
31
|
+
if (!this.config.cnpmcore.enableElasticsearch) {
|
|
32
|
+
throw new egg_errors_1.E451('search feature not enabled in `config.cnpmcore.enableElasticsearch`');
|
|
33
|
+
}
|
|
34
|
+
const name = await this.packageSearchService.syncPackage(fullname, true);
|
|
35
|
+
return { package: name };
|
|
36
|
+
}
|
|
37
|
+
async delete(fullname) {
|
|
38
|
+
if (!this.config.cnpmcore.enableElasticsearch) {
|
|
39
|
+
throw new egg_errors_1.E451('search feature not enabled in `config.cnpmcore.enableElasticsearch`');
|
|
40
|
+
}
|
|
41
|
+
const name = await this.packageSearchService.removePackage(fullname);
|
|
42
|
+
return { package: name };
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.SearchPackageController = SearchPackageController;
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, tegg_1.Inject)(),
|
|
48
|
+
__metadata("design:type", PackageSearchService_1.PackageSearchService)
|
|
49
|
+
], SearchPackageController.prototype, "packageSearchService", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, tegg_1.HTTPMethod)({
|
|
52
|
+
// GET /-/v1/search?text=react&size=20&from=0&quality=0.65&popularity=0.98&maintenance=0.5
|
|
53
|
+
path: '/-/v1/search',
|
|
54
|
+
method: tegg_1.HTTPMethodEnum.GET,
|
|
55
|
+
}),
|
|
56
|
+
__param(0, (0, tegg_1.HTTPQuery)()),
|
|
57
|
+
__param(1, (0, tegg_1.HTTPQuery)()),
|
|
58
|
+
__param(2, (0, tegg_1.HTTPQuery)()),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", [Object, Object, Object]),
|
|
61
|
+
__metadata("design:returntype", Promise)
|
|
62
|
+
], SearchPackageController.prototype, "search", null);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, tegg_1.HTTPMethod)({
|
|
65
|
+
path: `/-/v1/search/sync/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})`,
|
|
66
|
+
method: tegg_1.HTTPMethodEnum.PUT,
|
|
67
|
+
}),
|
|
68
|
+
__param(0, (0, tegg_1.HTTPParam)()),
|
|
69
|
+
__metadata("design:type", Function),
|
|
70
|
+
__metadata("design:paramtypes", [String]),
|
|
71
|
+
__metadata("design:returntype", Promise)
|
|
72
|
+
], SearchPackageController.prototype, "sync", null);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, tegg_1.HTTPMethod)({
|
|
75
|
+
path: `/-/v1/search/sync/:fullname(${PackageUtil_1.FULLNAME_REG_STRING})`,
|
|
76
|
+
method: tegg_1.HTTPMethodEnum.DELETE,
|
|
77
|
+
}),
|
|
78
|
+
(0, tegg_1.Middleware)(AdminAccess_1.AdminAccess),
|
|
79
|
+
__param(0, (0, tegg_1.HTTPParam)()),
|
|
80
|
+
__metadata("design:type", Function),
|
|
81
|
+
__metadata("design:paramtypes", [String]),
|
|
82
|
+
__metadata("design:returntype", Promise)
|
|
83
|
+
], SearchPackageController.prototype, "delete", null);
|
|
84
|
+
exports.SearchPackageController = SearchPackageController = __decorate([
|
|
85
|
+
(0, tegg_1.HTTPController)()
|
|
86
|
+
], SearchPackageController);
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VhcmNoUGFja2FnZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9hcHAvcG9ydC9jb250cm9sbGVyL3BhY2thZ2UvU2VhcmNoUGFja2FnZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBUXFCO0FBRXJCLDJDQUFrQztBQUVsQyw4REFBMkQ7QUFFM0QscUZBQWtGO0FBQ2xGLDZEQUFrRTtBQUNsRSw4REFBMkQ7QUFHcEQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBd0IsU0FBUSx1Q0FBa0I7SUFTdkQsQUFBTixLQUFLLENBQUMsTUFBTSxDQUNHLElBQStDLEVBQy9DLElBQStDLEVBQy9DLElBQStDO1FBRTVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtZQUM3QyxNQUFNLElBQUksaUJBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1NBQ3ZGO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUssQUFBTixLQUFLLENBQUMsSUFBSSxDQUFjLFFBQWdCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtZQUM3QyxNQUFNLElBQUksaUJBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1NBQ3ZGO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFPSyxBQUFOLEtBQUssQ0FBQyxNQUFNLENBQWMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFO1lBQzdDLE1BQU0sSUFBSSxpQkFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7U0FDdkY7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YsQ0FBQTtBQTdDWSwwREFBdUI7QUFFakI7SUFEaEIsSUFBQSxhQUFNLEdBQUU7OEJBQzhCLDJDQUFvQjtxRUFBQztBQU90RDtJQUxMLElBQUEsaUJBQVUsRUFBQztRQUNWLDBGQUEwRjtRQUMxRixJQUFJLEVBQUUsY0FBYztRQUNwQixNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFFQyxXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBO0lBQ1gsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtJQUNYLFdBQUEsSUFBQSxnQkFBUyxHQUFFLENBQUE7Ozs7cURBT2I7QUFNSztJQUpMLElBQUEsaUJBQVUsRUFBQztRQUNWLElBQUksRUFBRSwrQkFBK0IsaUNBQW1CLEdBQUc7UUFDM0QsTUFBTSxFQUFFLHFCQUFjLENBQUMsR0FBRztLQUMzQixDQUFDO0lBQ1UsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTs7OzttREFNdEI7QUFPSztJQUxMLElBQUEsaUJBQVUsRUFBQztRQUNWLElBQUksRUFBRSwrQkFBK0IsaUNBQW1CLEdBQUc7UUFDM0QsTUFBTSxFQUFFLHFCQUFjLENBQUMsTUFBTTtLQUM5QixDQUFDO0lBQ0QsSUFBQSxpQkFBVSxFQUFDLHlCQUFXLENBQUM7SUFDVixXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBOzs7O3FEQU14QjtrQ0E1Q1UsdUJBQXVCO0lBRG5DLElBQUEscUJBQWMsR0FBRTtHQUNKLHVCQUF1QixDQTZDbkMifQ==
|
|
@@ -82,3 +82,8 @@ export declare const ScopeUpdateOptions: import("@sinclair/typebox").TObject<{
|
|
|
82
82
|
registryId: import("@sinclair/typebox").TString;
|
|
83
83
|
scopeId: import("@sinclair/typebox").TString;
|
|
84
84
|
}>;
|
|
85
|
+
export declare const SearchQueryOptions: import("@sinclair/typebox").TObject<{
|
|
86
|
+
from: import("@sinclair/typebox").TNumber;
|
|
87
|
+
size: import("@sinclair/typebox").TNumber;
|
|
88
|
+
text: import("@sinclair/typebox").TString;
|
|
89
|
+
}>;
|
package/dist/app/port/typebox.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ScopeUpdateOptions = exports.ScopeCreateOptions = exports.RegistryUpdateOptions = exports.RegistryCreateOptions = exports.RegistryCreateSyncOptions = exports.QueryPageOptions = exports.patchAjv = exports.CreateHookRequestRule = exports.UpdateHookRequestRule = exports.BlockPackageRule = exports.SyncPackageTaskRule = exports.TagWithVersionRule = exports.VersionRule = exports.TagRule = exports.Description = exports.Spec = exports.VersionStringArray = exports.Version = exports.Tag = exports.BinarySubpathRule = exports.BinaryNameRule = exports.HookTypeType = exports.HookName = exports.Secret = exports.Url = exports.Name = void 0;
|
|
6
|
+
exports.SearchQueryOptions = exports.ScopeUpdateOptions = exports.ScopeCreateOptions = exports.RegistryUpdateOptions = exports.RegistryCreateOptions = exports.RegistryCreateSyncOptions = exports.QueryPageOptions = exports.patchAjv = exports.CreateHookRequestRule = exports.UpdateHookRequestRule = exports.BlockPackageRule = exports.SyncPackageTaskRule = exports.TagWithVersionRule = exports.VersionRule = exports.TagRule = exports.Description = exports.Spec = exports.VersionStringArray = exports.Version = exports.Tag = exports.BinarySubpathRule = exports.BinaryNameRule = exports.HookTypeType = exports.HookName = exports.Secret = exports.Url = exports.Name = void 0;
|
|
7
7
|
const typebox_1 = require("@sinclair/typebox");
|
|
8
8
|
const Registry_1 = require("../common/enum/Registry");
|
|
9
9
|
const semver_1 = __importDefault(require("semver"));
|
|
@@ -253,4 +253,21 @@ exports.ScopeUpdateOptions = typebox_1.Type.Object({
|
|
|
253
253
|
maxLength: 256,
|
|
254
254
|
}),
|
|
255
255
|
});
|
|
256
|
-
|
|
256
|
+
exports.SearchQueryOptions = typebox_1.Type.Object({
|
|
257
|
+
from: typebox_1.Type.Number({
|
|
258
|
+
transform: ['trim'],
|
|
259
|
+
minimum: 0,
|
|
260
|
+
default: 0,
|
|
261
|
+
}),
|
|
262
|
+
size: typebox_1.Type.Number({
|
|
263
|
+
transform: ['trim'],
|
|
264
|
+
minimum: 1,
|
|
265
|
+
default: 20,
|
|
266
|
+
}),
|
|
267
|
+
text: typebox_1.Type.String({
|
|
268
|
+
transform: ['trim'],
|
|
269
|
+
minLength: 1,
|
|
270
|
+
maxLength: 256,
|
|
271
|
+
}),
|
|
272
|
+
});
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9wb3J0L3R5cGVib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBQWlEO0FBQ2pELHNEQUF1RDtBQUN2RCxvREFBNEI7QUFDNUIsc0VBQWtDO0FBQ2xDLDhDQUErQztBQUMvQyxxRUFBaUU7QUFFcEQsUUFBQSxJQUFJLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUM5QixTQUFTLEVBQUUsQ0FBRSxNQUFNLENBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRVUsUUFBQSxHQUFHLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUM3QixTQUFTLEVBQUUsQ0FBRSxNQUFNLENBQUU7SUFDckIsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsSUFBSTtDQUNoQixDQUFDLENBQUM7QUFFVSxRQUFBLE1BQU0sR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxDQUFFLE1BQU0sQ0FBRTtJQUNyQixTQUFTLEVBQUUsQ0FBQztJQUNaLFNBQVMsRUFBRSxHQUFHO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsUUFBQSxRQUFRLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxTQUFTLEVBQUUsQ0FBRSxNQUFNLENBQUU7SUFDckIsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsR0FBRztDQUNmLENBQUMsQ0FBQztBQUVVLFFBQUEsWUFBWSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsZUFBUSxDQUFDLENBQUM7QUFFbkMsUUFBQSxjQUFjLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxNQUFNLEVBQUUsYUFBYTtJQUNyQixTQUFTLEVBQUUsQ0FBRSxNQUFNLENBQUU7SUFDckIsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsR0FBRztDQUNmLENBQUMsQ0FBQztBQUVILGlEQUFpRDtBQUNqRCx5Q0FBeUM7QUFD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
|
|
@@ -89,7 +89,7 @@ export type PackageJSONType = CnpmcorePatchInfo & {
|
|
|
89
89
|
[key: string]: unknown;
|
|
90
90
|
};
|
|
91
91
|
type PackageJSONPickKey = 'name' | 'author' | 'bugs' | 'description' | 'homepage' | 'keywords' | 'license' | 'readme' | 'readmeFilename' | 'repository' | 'versions' | 'contributors';
|
|
92
|
-
type CnpmcorePatchInfo = {
|
|
92
|
+
export type CnpmcorePatchInfo = {
|
|
93
93
|
_cnpmcore_publish_time?: Date;
|
|
94
94
|
publish_time?: number;
|
|
95
95
|
_source_registry_name?: string;
|
|
@@ -103,7 +103,7 @@ type DistType = {
|
|
|
103
103
|
integrity: string;
|
|
104
104
|
[key: string]: unknown;
|
|
105
105
|
};
|
|
106
|
-
type AuthorType = {
|
|
106
|
+
export type AuthorType = {
|
|
107
107
|
name: string;
|
|
108
108
|
email?: string;
|
|
109
109
|
url?: string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AuthorType, CnpmcorePatchInfo, PackageManifestType } from './PackageRepository';
|
|
2
|
+
export type SearchJSONPickKey = '_rev' | 'name' | 'description' | 'keywords' | 'license' | 'maintainers' | 'dist-tags' | '_source_registry_name';
|
|
3
|
+
export type SearchMappingType = Pick<PackageManifestType, SearchJSONPickKey> & CnpmcorePatchInfo & {
|
|
4
|
+
scope: string;
|
|
5
|
+
version: string;
|
|
6
|
+
versions: string[];
|
|
7
|
+
date: Date;
|
|
8
|
+
created: Date;
|
|
9
|
+
modified: Date;
|
|
10
|
+
author?: AuthorType | undefined;
|
|
11
|
+
_npmUser?: {
|
|
12
|
+
name: string;
|
|
13
|
+
email: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export type SearchManifestType = {
|
|
17
|
+
package: SearchMappingType;
|
|
18
|
+
downloads: {
|
|
19
|
+
all: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare class SearchRepository {
|
|
23
|
+
private readonly searchAdapter;
|
|
24
|
+
searchPackage(query: any): Promise<import("@elastic/elasticsearch/lib/api/types").SearchHitsMetadata<SearchManifestType>>;
|
|
25
|
+
upsertPackage(document: SearchManifestType): Promise<string>;
|
|
26
|
+
removePackage(fullname: string): Promise<string>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SearchRepository = void 0;
|
|
13
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
14
|
+
let SearchRepository = class SearchRepository {
|
|
15
|
+
async searchPackage(query) {
|
|
16
|
+
return await this.searchAdapter.search(query);
|
|
17
|
+
}
|
|
18
|
+
async upsertPackage(document) {
|
|
19
|
+
return await this.searchAdapter.upsert(document.package.name, document);
|
|
20
|
+
}
|
|
21
|
+
async removePackage(fullname) {
|
|
22
|
+
return await this.searchAdapter.delete(fullname);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.SearchRepository = SearchRepository;
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, tegg_1.Inject)(),
|
|
28
|
+
__metadata("design:type", Object)
|
|
29
|
+
], SearchRepository.prototype, "searchAdapter", void 0);
|
|
30
|
+
exports.SearchRepository = SearchRepository = __decorate([
|
|
31
|
+
(0, tegg_1.SingletonProto)({
|
|
32
|
+
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
33
|
+
})
|
|
34
|
+
], SearchRepository);
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VhcmNoUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9yZXBvc2l0b3J5L1NlYXJjaFJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQWtFO0FBK0IzRCxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQUszQixLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUs7UUFDdkIsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFxQixLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUE0QjtRQUM5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBZ0I7UUFDbEMsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDRixDQUFBO0FBaEJZLDRDQUFnQjtBQUVWO0lBRGhCLElBQUEsYUFBTSxHQUFFOzt1REFDcUM7MkJBRm5DLGdCQUFnQjtJQUg1QixJQUFBLHFCQUFjLEVBQUM7UUFDZCxXQUFXLEVBQUUsa0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxnQkFBZ0IsQ0FnQjVCIn0=
|
|
@@ -57,6 +57,8 @@ exports.cnpmcoreConfig = {
|
|
|
57
57
|
redirectNotFound: true,
|
|
58
58
|
enableUnpkg: true,
|
|
59
59
|
strictSyncSpecivicVersion: false,
|
|
60
|
+
enableElasticsearch: !!process.env.CNPMCORE_CONFIG_ENABLE_ES,
|
|
61
|
+
elasticsearchIndex: 'cnpmcore_packages',
|
|
60
62
|
strictValidateTarballPkg: false,
|
|
61
63
|
};
|
|
62
64
|
exports.default = (appInfo) => {
|
|
@@ -177,6 +179,18 @@ exports.default = (appInfo) => {
|
|
|
177
179
|
file: 'sql.log',
|
|
178
180
|
},
|
|
179
181
|
};
|
|
182
|
+
// more options: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/configuration.html
|
|
183
|
+
if (config.cnpmcore.enableElasticsearch) {
|
|
184
|
+
config.elasticsearch = {
|
|
185
|
+
client: {
|
|
186
|
+
node: process.env.CNPMCORE_CONFIG_ES_CLIENT_NODE,
|
|
187
|
+
auth: {
|
|
188
|
+
username: process.env.CNPMCORE_CONFIG_ES_CLIENT_AUTH_USERNAME,
|
|
189
|
+
password: process.env.CNPMCORE_CONFIG_ES_CLIENT_AUTH_PASSWORD,
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
180
194
|
return config;
|
|
181
195
|
};
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb25maWcvY29uZmlnLmRlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUFvQztBQUNwQywrQkFBNEI7QUFFNUIsd0RBQWlDO0FBQ2pDLGlEQUErQztBQUMvQyx1REFBNEc7QUFHL0YsUUFBQSxjQUFjLEdBQW1CO0lBQzVDLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLEtBQUs7SUFDakIsVUFBVSxFQUFFLEVBQUU7SUFDZCxjQUFjLEVBQUUsNEJBQTRCO0lBQzVDLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsaUJBQWlCLEVBQUUsS0FBSztJQUN4Qix5QkFBeUIsRUFBRSxNQUFNO0lBQ2pDLHNCQUFzQixFQUFFLEdBQUc7SUFDM0IsUUFBUSxFQUFFLG9CQUFRLENBQUMsSUFBSTtJQUN2QixjQUFjLEVBQUUsMEJBQWMsQ0FBQyxNQUFNO0lBQ3JDLG1DQUFtQyxFQUFFLEVBQUU7SUFDdkMsbUNBQW1DLEVBQUUsRUFBRTtJQUN2Qyx5Q0FBeUMsRUFBRSxFQUFFO0lBQzdDLG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsMEJBQTBCLEVBQUUsSUFBSTtJQUNoQyxnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLHVCQUF1QixFQUFFLEVBQUU7SUFDM0Isc0JBQXNCLEVBQUUsS0FBSztJQUM3Qiw4QkFBOEIsRUFBRSxFQUFFO0lBQ2xDLHVCQUF1QixFQUFFLEVBQUU7SUFDM0IsbUJBQW1CLEVBQUUsS0FBSztJQUMxQiwwQkFBMEIsRUFBRSxHQUFHO0lBQy9CLHFCQUFxQixFQUFFLDZCQUE2QjtJQUNwRCx5QkFBeUIsRUFBRSw2QkFBaUIsQ0FBQyxTQUFTO0lBQ3RELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLHVCQUF1QjtJQUN6RSxVQUFVLEVBQUUsS0FBSztJQUNqQixXQUFXLEVBQUU7UUFDWCxPQUFPO1FBQ1AsV0FBVztRQUNYLFVBQVU7S0FDWDtJQUNELDJCQUEyQixFQUFFLEtBQUs7SUFDbEMsdUJBQXVCLEVBQUUsSUFBSTtJQUM3QixNQUFNLEVBQUU7UUFDTixjQUFjLEVBQUUsa0JBQWtCO0tBQ25DO0lBQ0QsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQztJQUM5RCxTQUFTLEVBQUUsS0FBSztJQUNoQixxQkFBcUIsRUFBRSxxQkFBcUI7SUFDNUMsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxnREFBZ0QsRUFBRSxLQUFLO0lBQ3ZELDhCQUE4QixFQUFFLElBQUk7SUFDcEMsWUFBWSxFQUFFLEtBQUs7SUFDbkIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixXQUFXLEVBQUUsSUFBSTtJQUNqQix5QkFBeUIsRUFBRSxLQUFLO0lBQ2hDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtJQUM1RCxrQkFBa0IsRUFBRSxtQkFBbUI7SUFDdkMsd0JBQXdCLEVBQUUsS0FBSztDQUNoQyxDQUFDO0FBRUYsa0JBQWUsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBZ0MsQ0FBQztJQUVoRCxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksSUFBQSxtQkFBVSxHQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxzQkFBYyxDQUFDO0lBRWpDLDBDQUEwQztJQUMxQyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksSUFBQSxXQUFJLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVsRixNQUFNLENBQUMsR0FBRyxHQUFHO1FBQ1gsTUFBTSxFQUFFLE9BQU87UUFDZixRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxVQUFVO1FBQ3pGLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFdBQVc7UUFDOUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSTtRQUN2RSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxNQUFNO1FBQ3pFLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztRQUMzRSxPQUFPLEVBQUUsU0FBUztRQUNsQixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQztZQUNyRCxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxXQUFXO1lBQ3BELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLEVBQUU7WUFDbkQsRUFBRSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQztTQUMvQztLQUNGLENBQUM7SUFFRixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLElBQUksRUFBRTtZQUNKLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLG9CQUFvQjtRQUNwQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQVUsRUFBRTtZQUN0QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7SUFFRixNQUFNLENBQUMsR0FBRyxHQUFHO1FBQ1gsTUFBTSxFQUFFLElBQUk7UUFDWixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFBLFdBQUksRUFBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztLQUNqRSxDQUFDO0lBQ0YsdUJBQXVCO0lBQ3ZCLHFDQUFxQztJQUNyQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEtBQUssS0FBSyxFQUFFO1FBQzNDLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLHFDQUFxQyxDQUFDLENBQUM7UUFDbkYsSUFBQSxnQkFBTSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztRQUN2RixJQUFBLGdCQUFNLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNFLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLHFDQUFxQyxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxrQkFBUyxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtZQUM1QyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUI7WUFDL0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCO1lBQzNDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUI7WUFDcEQsY0FBYyxFQUFFO2dCQUNkLGVBQWUsRUFBRSx3QkFBd0I7YUFDMUM7U0FDRixDQUFDLENBQUM7S0FDSjtTQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7UUFDakQsSUFBQSxnQkFBTSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztRQUNuRyxJQUFBLGdCQUFNLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLDJDQUEyQyxDQUFDLENBQUM7UUFDL0YsSUFBQSxnQkFBTSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztRQUMvRiw4REFBOEQ7UUFDOUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixJQUFJLFNBQVM7WUFDOUQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCO1lBQ3JELFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUI7Z0JBQ2xELGVBQWUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QjthQUMzRDtZQUNELE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QjtZQUNqRCxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDO1lBQ3JFLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0M7U0FDN0QsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQ2Qsc0JBQXNCLEVBQUUsSUFBSTtRQUM1Qix1QkFBdUIsRUFBRSxJQUFJO1FBQzdCLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksVUFBVTtRQUMxRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxhQUFhO1FBQ2hFLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLGVBQWU7UUFDcEUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksa0JBQWtCO1FBQ3ZFLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxLQUFLLENBQUM7S0FDbkUsQ0FBQztJQUNGLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtRQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0tBQ2xEO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFO1FBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDMUU7SUFFRCxNQUFNLENBQUMsVUFBVSxHQUFHO1FBQ2xCLDZCQUE2QjtRQUM3QixPQUFPLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFFRixNQUFNLENBQUMsVUFBVSxHQUFHO1FBQ2xCLGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsS0FBSztRQUNiLHlFQUF5RTtRQUN6RSxTQUFTLEVBQUUsTUFBTTtRQUNqQiw4Q0FBOEM7UUFDOUMsTUFBTSxFQUFFLGdDQUFvQjtLQUM3QixDQUFDO0lBRUYsK0lBQStJO0lBQy9JLE1BQU0sQ0FBQyxlQUFlLEdBQUcsRUFBRSxRQUFRLEVBQVIsa0JBQVEsRUFBRSxDQUFDO0lBRXRDLE1BQU0sQ0FBQyxVQUFVLEdBQUc7UUFDbEIsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLElBQUksRUFBRSxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztRQUN2QyxpQkFBaUIsRUFBRSxVQUFVO0tBQzlCLENBQUM7SUFFRixNQUFNLENBQUMsWUFBWSxHQUFHO1FBQ3BCLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0YsQ0FBQztJQUVGLCtHQUErRztJQUMvRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUU7UUFDdkMsTUFBTSxDQUFDLGFBQWEsR0FBRztZQUNyQixNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCO2dCQUNoRCxJQUFJLEVBQUU7b0JBQ0osUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQWlEO29CQUN2RSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBaUQ7aUJBQ3hFO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mockES = void 0;
|
|
3
7
|
const path_1 = require("path");
|
|
8
|
+
const elasticsearch_mock_1 = __importDefault(require("@elastic/elasticsearch-mock"));
|
|
9
|
+
exports.mockES = new elasticsearch_mock_1.default();
|
|
4
10
|
exports.default = (appInfo) => {
|
|
5
11
|
const config = {};
|
|
6
12
|
config.dataDir = (0, path_1.join)(appInfo.root, '.cnpmcore_unittest');
|
|
@@ -13,6 +19,12 @@ exports.default = (appInfo) => {
|
|
|
13
19
|
config.cnpmcore = {
|
|
14
20
|
checkChangesStreamInterval: 10,
|
|
15
21
|
};
|
|
22
|
+
config.elasticsearch = {
|
|
23
|
+
client: {
|
|
24
|
+
node: 'http://localhost:9200',
|
|
25
|
+
Connection: exports.mockES.getConnection(),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
16
28
|
return config;
|
|
17
29
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnVuaXR0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29uZmlnL2NvbmZpZy51bml0dGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBNEI7QUFFNUIscUZBQStDO0FBRWxDLFFBQUEsTUFBTSxHQUFHLElBQUksNEJBQUksRUFBRSxDQUFDO0FBRWpDLGtCQUFlLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQWdDLENBQUM7SUFDaEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFFMUQsTUFBTSxDQUFDLEdBQUcsR0FBRztRQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxtQkFBbUI7S0FDNUQsQ0FBQztJQUVGLE1BQU0sQ0FBQyxHQUFHLEdBQUc7UUFDWCxHQUFHLEVBQUUsSUFBQSxXQUFJLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7S0FDakMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsMEJBQTBCLEVBQUUsRUFBRTtLQUMvQixDQUFDO0lBRUYsTUFBTSxDQUFDLGFBQWEsR0FBRztRQUNyQixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLFVBQVUsRUFBRSxjQUFNLENBQUMsYUFBYSxFQUFFO1NBQ25DO0tBQ0YsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
|
package/dist/config/plugin.js
CHANGED
|
@@ -56,6 +56,10 @@ const plugin = {
|
|
|
56
56
|
enable: true,
|
|
57
57
|
package: 'egg-status',
|
|
58
58
|
},
|
|
59
|
+
elasticsearch: {
|
|
60
|
+
enable: true,
|
|
61
|
+
package: 'eggjs-elasticsearch',
|
|
62
|
+
},
|
|
59
63
|
};
|
|
60
64
|
exports.default = plugin;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29uZmlnL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQU0sTUFBTSxHQUFjO0lBQ3hCLElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLG9CQUFvQjtLQUM5QjtJQUNELFVBQVUsRUFBRTtRQUNWLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLG9CQUFvQjtLQUM5QjtJQUNELGNBQWMsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLCtCQUErQjtLQUN6QztJQUNELFlBQVksRUFBRTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLDZCQUE2QjtLQUN2QztJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLHdCQUF3QjtLQUNsQztJQUNELGNBQWMsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLDZCQUE2QjtLQUN2QztJQUNELFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLHdCQUF3QjtLQUNsQztJQUNELElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxJQUFJO0tBQ2I7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxtQkFBbUI7S0FDN0I7SUFDRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsc0JBQXNCO0tBQ2hDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNELElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLFVBQVU7S0FDcEI7SUFDRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUscUJBQXFCO0tBQy9CO0NBQ0YsQ0FBQztBQUVGLGtCQUFlLE1BQU0sQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cnpmcore",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.43.1",
|
|
4
4
|
"description": "npm core",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
"@eggjs/tegg-plugin": "^3.12.0",
|
|
78
78
|
"@eggjs/tegg-schedule-plugin": "^3.12.0",
|
|
79
79
|
"@eggjs/tsconfig": "^1.0.0",
|
|
80
|
+
"@elastic/elasticsearch": "^8.8.1",
|
|
80
81
|
"@node-rs/crc32": "^1.2.2",
|
|
81
82
|
"@simplewebauthn/server": "^7.0.1",
|
|
82
83
|
"@sinclair/typebox": "^0.23.0",
|
|
@@ -93,6 +94,7 @@
|
|
|
93
94
|
"egg-tracer": "^1.1.0",
|
|
94
95
|
"egg-typebox-validate": "^2.0.0",
|
|
95
96
|
"egg-view-nunjucks": "^2.3.0",
|
|
97
|
+
"eggjs-elasticsearch": "^0.0.6",
|
|
96
98
|
"fs-cnpm": "^2.4.0",
|
|
97
99
|
"ioredis": "^5.3.1",
|
|
98
100
|
"leoric": "^2.6.2",
|
|
@@ -116,6 +118,7 @@
|
|
|
116
118
|
},
|
|
117
119
|
"devDependencies": {
|
|
118
120
|
"@cnpmjs/npm-cli-login": "^1.1.0",
|
|
121
|
+
"@elastic/elasticsearch-mock": "^2.0.0",
|
|
119
122
|
"@simplewebauthn/typescript-types": "^7.0.0",
|
|
120
123
|
"@types/mime-types": "^2.1.1",
|
|
121
124
|
"@types/mocha": "^10.0.1",
|