cnpmcore 4.33.1 → 4.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,10 +24,38 @@ See [internal-api.md](docs/internal-api.md) for comprehensive documentation of c
24
24
 
25
25
  See [DEVELOPER.md](DEVELOPER.md)
26
26
 
27
+ The quickest way to get a ready-to-code environment (MySQL + Redis + dev database preconfigured) is GitHub Codespaces:
28
+
29
+ [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/cnpm/cnpmcore)
30
+
31
+ You can also open the repo locally with the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. See [.devcontainer/README.md](.devcontainer/README.md) for details.
32
+
27
33
  ## How to integrate
28
34
 
29
35
  See [INTEGRATE.md](INTEGRATE.md)
30
36
 
37
+ ## npmmirror.com
38
+
39
+ [npmmirror.com](https://npmmirror.com) is the China NPM mirror hosted by cnpmcore, sponsored by [Alibaba Cloud / 阿里云](https://www.aliyun.com/).
40
+
41
+ npmmirror.com 是由 cnpmcore 驱动的中国 NPM 镜像,由[阿里云](https://www.aliyun.com/)提供基础设施赞助。
42
+
43
+ ### Usage Policy
44
+
45
+ To provide a more stable and reliable service:
46
+
47
+ - Do not abuse the registry with excessive crawling or scraping.
48
+ - Automated access that generates unusually high traffic may be rate-limited without notice.
49
+ - If you have large-scale usage needs or are affected by rate limiting, please open a [GitHub Issue](https://github.com/cnpm/cnpmcore/issues) to contact us.
50
+
51
+ ### 使用须知
52
+
53
+ 为了提供更加稳定可靠的服务:
54
+
55
+ - 请勿滥用 registry,禁止过度爬取或抓取数据。
56
+ - 产生异常高流量的自动化访问可能会被限流,恕不另行通知。
57
+ - 如果您有大规模使用需求,或受到限流策略影响,请通过 [GitHub Issue](https://github.com/cnpm/cnpmcore/issues) 与我们联系。
58
+
31
59
  ## License
32
60
 
33
61
  [MIT](LICENSE)
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ import { randomUUID } from 'node:crypto';
10
11
  import { AccessLevel, Inject, SingletonProto } from 'egg';
11
12
  const ONE_DAY = 3600 * 24;
12
13
  let CacheAdapter = class CacheAdapter {
@@ -27,15 +28,19 @@ let CacheAdapter = class CacheAdapter {
27
28
  }
28
29
  async lock(key, seconds) {
29
30
  const lockName = this.getLockName(key);
31
+ const now = Date.now();
30
32
  const existsTimestamp = await this.redis.get(lockName);
31
33
  if (existsTimestamp) {
32
- if (Date.now() - Number.parseInt(existsTimestamp) < seconds * 1000) {
34
+ if (now < Number.parseInt(existsTimestamp)) {
33
35
  return null;
34
36
  }
35
37
  // lock timeout, delete it
36
38
  await this.redis.del(lockName);
37
39
  }
38
- const timestamp = `${Date.now() + seconds * 1000}`;
40
+ // token format: `<expiry>.<uuid>`
41
+ // - keep the numeric expiry prefix so the timeout check above can recover it via Number.parseInt()
42
+ // - append a random uuid so every acquisition gets a unique token, even when now and seconds are identical
43
+ const timestamp = `${now + seconds * 1000}.${randomUUID()}`;
39
44
  const code = await this.redis.setnx(lockName, timestamp);
40
45
  // setnx fail, lock fail
41
46
  if (code === 0)
@@ -77,4 +82,4 @@ CacheAdapter = __decorate([
77
82
  })
78
83
  ], CacheAdapter);
79
84
  export { CacheAdapter };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL0NhY2hlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFLMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUtuQixJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFZO0lBSXZCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDdkMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELDBCQUEwQjtZQUMxQixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QixTQUFTO1FBQ1QsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxlQUFlO1lBQUUsT0FBTztRQUNsRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsSUFBeUI7UUFDckUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDZixDQUFDO2dCQUFTLENBQUM7WUFDVCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVztRQUM3QixPQUFPLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGLENBQUE7QUE5RGtCO0lBRGhCLE1BQU0sRUFBRTs7MkNBQ3FCO0FBRm5CLFlBQVk7SUFIeEIsY0FBYyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxZQUFZLENBZ0V4QiJ9
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL0NhY2hlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUsxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBS25CLElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQVk7SUFJdkIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUN2QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVztRQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDakMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDdEIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnpmcore",
3
- "version": "4.33.1",
3
+ "version": "4.33.2",
4
4
  "description": "Private NPM Registry for Enterprise",
5
5
  "keywords": [
6
6
  "npm",
@@ -54,11 +54,11 @@
54
54
  "predev": "npm run clean",
55
55
  "dev": "egg-bin dev",
56
56
  "dev:postgresql": "CNPMCORE_DATABASE_TYPE=PostgreSQL egg-bin dev",
57
- "lint": "oxlint --type-aware --type-check",
57
+ "lint": "vp lint",
58
58
  "lint:fix": "npm run lint -- --fix",
59
59
  "typecheck": "tsc --noEmit",
60
- "fmt": "oxfmt",
61
- "fmtcheck": "oxfmt --check",
60
+ "fmt": "vp fmt",
61
+ "fmtcheck": "vp fmt --check",
62
62
  "test:postgresql": "npm run test:local:postgresql",
63
63
  "pretest:local:postgresql": "bash prepare-database-postgresql.sh",
64
64
  "test:local:postgresql": "CNPMCORE_DATABASE_TYPE=PostgreSQL egg-bin test",
@@ -85,7 +85,7 @@
85
85
  "start": "eggctl start --daemon && touch egg.status",
86
86
  "start:foreground": "eggctl start",
87
87
  "stop": "rm -f egg.status && sleep 15 && eggctl stop",
88
- "init-git-hooks": "husky"
88
+ "prepare": "vp config || true"
89
89
  },
90
90
  "dependencies": {
91
91
  "@cnpmjs/packument": "^1.7.0",
@@ -104,21 +104,21 @@
104
104
  "egg-status": "^1.0.0",
105
105
  "egg-view-nunjucks": "^2.3.0",
106
106
  "eggjs-elasticsearch": "^0.0.6",
107
- "fast-xml-parser": "^5.3.2",
107
+ "fast-xml-parser": "^5.8.0",
108
108
  "fs-cnpm": "^2.4.1",
109
109
  "ioredis": "^5.8.2",
110
110
  "leoric": "^2.14.0",
111
111
  "lodash-es": "^4.17.21",
112
112
  "mime-types": "^3.0.2",
113
113
  "mysql2": "^3.15.3",
114
- "node-rsa": "^1.1.1",
115
- "npm-package-arg": "^13.0.2",
114
+ "node-rsa": "^2.0.0",
115
+ "npm-package-arg": "^14.0.0",
116
116
  "oss-cnpm": "^5.0.1",
117
117
  "p-map": "^7.0.4",
118
118
  "pg": "^8.16.3",
119
119
  "read-env-value": "^2.0.2",
120
120
  "semver": "^7.7.3",
121
- "ssri": "^13.0.0",
121
+ "ssri": "^14.0.0",
122
122
  "tar": "^7.5.2",
123
123
  "type-fest": "^5.3.1",
124
124
  "ua-parser-js": "^2.0.7",
@@ -127,7 +127,6 @@
127
127
  "devDependencies": {
128
128
  "@eggjs/bin": "^8.0.2-beta.2",
129
129
  "@eggjs/mock": "^7.0.2-beta.2",
130
- "@eggjs/oxlint-config": "^1.0.0",
131
130
  "@eggjs/tsconfig": "^3.1.2-beta.2",
132
131
  "@elastic/elasticsearch-mock": "^2.1.0",
133
132
  "@simplewebauthn/typescript-types": "^7.4.0",
@@ -142,27 +141,26 @@
142
141
  "@types/semver": "^7.7.1",
143
142
  "@types/tar": "^7.0.0",
144
143
  "@types/validate-npm-package-name": "^4.0.2",
144
+ "@vitest/coverage-v8": "4.1.9",
145
145
  "coffee": "^5.5.1",
146
- "husky": "^9.1.7",
147
146
  "ioredis-mock": "^8.13.1",
148
- "lint-staged": "^17.0.0",
149
- "oxfmt": "^0.51.0",
150
- "oxlint": "^1.32.0",
151
- "oxlint-tsgolint": "^0.23.0",
152
- "typescript": "^6.0.0"
147
+ "typescript": "^6.0.0",
148
+ "vite-plus": "0.2.1"
153
149
  },
154
150
  "optionalDependencies": {
155
151
  "s3-cnpmcore": "^1.1.2"
156
152
  },
157
- "lint-staged": {
158
- "*": [
159
- "oxfmt",
160
- "oxlint --type-aware --type-check --fix"
161
- ]
153
+ "overrides": {
154
+ "@aws-sdk/xml-builder": {
155
+ "fast-xml-parser": "$fast-xml-parser"
156
+ },
157
+ "vite": "npm:@voidzero-dev/vite-plus-core@0.2.1",
158
+ "vitest": "4.1.9"
162
159
  },
163
160
  "engines": {
164
161
  "node": "^20.18.0 || ^22.18.0 || ^24.11.0"
165
162
  },
163
+ "packageManager": "npm@11.17.0",
166
164
  "egg": {
167
165
  "typescript": true
168
166
  }