digitalsee-ai-flow-cli 0.1.7 → 0.1.8

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.
Files changed (91) hide show
  1. package/.github/workflows/ci.yml +24 -0
  2. package/.github/workflows/publish.yml +21 -0
  3. package/CHANGELOG.md +72 -0
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +4 -4
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/api/flow.d.ts.map +1 -1
  8. package/dist/api/flow.js +16 -13
  9. package/dist/api/flow.js.map +1 -1
  10. package/dist/api/knowledge.d.ts.map +1 -1
  11. package/dist/api/knowledge.js +3 -3
  12. package/dist/api/knowledge.js.map +1 -1
  13. package/dist/api/node.d.ts.map +1 -1
  14. package/dist/api/node.js +4 -4
  15. package/dist/api/node.js.map +1 -1
  16. package/dist/api/variables.d.ts.map +1 -1
  17. package/dist/api/variables.js +1 -1
  18. package/dist/api/variables.js.map +1 -1
  19. package/dist/commands/auth.d.ts.map +1 -1
  20. package/dist/commands/auth.js +44 -34
  21. package/dist/commands/auth.js.map +1 -1
  22. package/dist/commands/config.d.ts.map +1 -1
  23. package/dist/commands/config.js +24 -26
  24. package/dist/commands/config.js.map +1 -1
  25. package/dist/commands/flow/account.d.ts.map +1 -1
  26. package/dist/commands/flow/account.js +17 -16
  27. package/dist/commands/flow/account.js.map +1 -1
  28. package/dist/commands/flow/analyze.d.ts.map +1 -1
  29. package/dist/commands/flow/analyze.js +42 -42
  30. package/dist/commands/flow/analyze.js.map +1 -1
  31. package/dist/commands/flow/create.d.ts.map +1 -1
  32. package/dist/commands/flow/create.js +7 -6
  33. package/dist/commands/flow/create.js.map +1 -1
  34. package/dist/commands/flow/edge.d.ts.map +1 -1
  35. package/dist/commands/flow/edge.js +36 -35
  36. package/dist/commands/flow/edge.js.map +1 -1
  37. package/dist/commands/flow/helpers.d.ts.map +1 -1
  38. package/dist/commands/flow/helpers.js +84 -74
  39. package/dist/commands/flow/helpers.js.map +1 -1
  40. package/dist/commands/flow/list.d.ts.map +1 -1
  41. package/dist/commands/flow/list.js +7 -7
  42. package/dist/commands/flow/list.js.map +1 -1
  43. package/dist/commands/flow/node.d.ts.map +1 -1
  44. package/dist/commands/flow/node.js +150 -137
  45. package/dist/commands/flow/node.js.map +1 -1
  46. package/dist/commands/flow/test.d.ts.map +1 -1
  47. package/dist/commands/flow/test.js +14 -14
  48. package/dist/commands/flow/test.js.map +1 -1
  49. package/dist/commands/flow/update.js +5 -5
  50. package/dist/commands/flow/update.js.map +1 -1
  51. package/dist/commands/flow/variables.d.ts.map +1 -1
  52. package/dist/commands/flow/variables.js +45 -43
  53. package/dist/commands/flow/variables.js.map +1 -1
  54. package/dist/commands/flow.d.ts.map +1 -1
  55. package/dist/commands/flow.js +1 -3
  56. package/dist/commands/flow.js.map +1 -1
  57. package/dist/commands/knowledge.d.ts.map +1 -1
  58. package/dist/commands/knowledge.js +68 -70
  59. package/dist/commands/knowledge.js.map +1 -1
  60. package/dist/index.js +31 -20
  61. package/dist/index.js.map +1 -1
  62. package/dist/services/flowAnalyzer.d.ts.map +1 -1
  63. package/dist/services/flowAnalyzer.js +256 -203
  64. package/dist/services/flowAnalyzer.js.map +1 -1
  65. package/dist/services/skillGenerator.d.ts.map +1 -1
  66. package/dist/services/skillGenerator.js +31 -31
  67. package/dist/services/skillGenerator.js.map +1 -1
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/utils/config.d.ts.map +1 -1
  70. package/dist/utils/config.js +12 -10
  71. package/dist/utils/config.js.map +1 -1
  72. package/dist/utils/encoding.d.ts.map +1 -1
  73. package/dist/utils/encoding.js +3 -3
  74. package/dist/utils/encoding.js.map +1 -1
  75. package/dist/utils/format.d.ts.map +1 -1
  76. package/dist/utils/format.js +234 -220
  77. package/dist/utils/format.js.map +1 -1
  78. package/dist/utils/oauth.d.ts.map +1 -1
  79. package/dist/utils/oauth.js +54 -78
  80. package/dist/utils/oauth.js.map +1 -1
  81. package/dist/utils/output.d.ts.map +1 -1
  82. package/dist/utils/output.js +20 -16
  83. package/dist/utils/output.js.map +1 -1
  84. package/dist/utils/updateCheck.d.ts.map +1 -0
  85. package/dist/utils/updateCheck.js +138 -0
  86. package/dist/utils/updateCheck.js.map +1 -0
  87. package/package.json +15 -7
  88. package/tsconfig.json +1 -1
  89. package/dist/utils/auth.d.ts.map +0 -1
  90. package/dist/utils/auth.js +0 -213
  91. package/dist/utils/auth.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.isNewerVersion = isNewerVersion;
40
+ exports.checkForUpdates = checkForUpdates;
41
+ exports.showUpdateNotice = showUpdateNotice;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const os = __importStar(require("os"));
45
+ const https = __importStar(require("https"));
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const STATE_DIR = path.join(os.homedir(), '.ai-flow-cli');
48
+ const STATE_FILE = path.join(STATE_DIR, 'update-check.json');
49
+ const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
50
+ const REQUEST_TIMEOUT = 5000; // 5 seconds
51
+ const REGISTRY_URL = 'https://registry.npmjs.org/digitalsee-ai-flow-cli';
52
+ function ensureStateDir() {
53
+ if (!fs.existsSync(STATE_DIR)) {
54
+ fs.mkdirSync(STATE_DIR, { recursive: true });
55
+ }
56
+ }
57
+ function readState() {
58
+ try {
59
+ if (fs.existsSync(STATE_FILE)) {
60
+ const content = fs.readFileSync(STATE_FILE, 'utf-8');
61
+ return JSON.parse(content);
62
+ }
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ return null;
68
+ }
69
+ function writeState(state) {
70
+ ensureStateDir();
71
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state), 'utf-8');
72
+ }
73
+ function isNewerVersion(current, latest) {
74
+ const currentParts = current.split('.').map(Number);
75
+ const latestParts = latest.split('.').map(Number);
76
+ const maxLen = Math.max(currentParts.length, latestParts.length);
77
+ for (let i = 0; i < maxLen; i++) {
78
+ const c = currentParts[i] || 0;
79
+ const l = latestParts[i] || 0;
80
+ if (l > c)
81
+ return true;
82
+ if (l < c)
83
+ return false;
84
+ }
85
+ return false;
86
+ }
87
+ function fetchLatestVersion() {
88
+ return new Promise((resolve, reject) => {
89
+ const req = https.get(REGISTRY_URL, { timeout: REQUEST_TIMEOUT }, (res) => {
90
+ let data = '';
91
+ res.on('data', (chunk) => {
92
+ data += chunk;
93
+ });
94
+ res.on('end', () => {
95
+ try {
96
+ const json = JSON.parse(data);
97
+ const latest = json['dist-tags']?.latest;
98
+ if (latest && typeof latest === 'string') {
99
+ resolve(latest);
100
+ }
101
+ else {
102
+ reject(new Error('Invalid registry response'));
103
+ }
104
+ }
105
+ catch {
106
+ reject(new Error('Failed to parse registry response'));
107
+ }
108
+ });
109
+ });
110
+ req.on('error', (err) => {
111
+ reject(err);
112
+ });
113
+ req.on('timeout', () => {
114
+ req.destroy();
115
+ reject(new Error('Request timeout'));
116
+ });
117
+ });
118
+ }
119
+ async function checkForUpdates(currentVersion) {
120
+ try {
121
+ const state = readState();
122
+ if (state && Date.now() - state.lastCheck < CHECK_INTERVAL) {
123
+ return isNewerVersion(currentVersion, state.latestVersion) ? state.latestVersion : null;
124
+ }
125
+ const latestVersion = await fetchLatestVersion();
126
+ writeState({ lastCheck: Date.now(), latestVersion });
127
+ return isNewerVersion(currentVersion, latestVersion) ? latestVersion : null;
128
+ }
129
+ catch {
130
+ return undefined;
131
+ }
132
+ }
133
+ function showUpdateNotice(currentVersion, latestVersion) {
134
+ const updateCmd = 'npm install -g digitalsee-ai-flow-cli@latest';
135
+ console.error(chalk_1.default.yellow(` ⚠ 更新可用: ${chalk_1.default.dim('v' + currentVersion)} → ${chalk_1.default.green('v' + latestVersion)}`));
136
+ console.error(chalk_1.default.cyan(` ℹ 运行 ${chalk_1.default.bold(updateCmd)} 更新`));
137
+ }
138
+ //# sourceMappingURL=updateCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "digitalsee-ai-flow-cli",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "AI Flow CLI - manage connection flows and node configurations",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -8,12 +8,10 @@
8
8
  },
9
9
  "scripts": {
10
10
  "build": "tsc",
11
- "dev": "tsc --watch",
12
11
  "start": "node dist/index.js",
13
- "prepublishOnly": "npm run build",
14
- "publish:patch": "npm version patch && npm publish",
15
- "publish:minor": "npm version minor && npm publish",
16
- "publish:major": "npm version major && npm publish"
12
+ "prepack": "node .scripts/strip-scripts.js",
13
+ "postpack": "node .scripts/restore-package.js",
14
+ "prepublishOnly": "npm run build"
17
15
  },
18
16
  "dependencies": {
19
17
  "axios": "^1.7.0",
@@ -21,7 +19,17 @@
21
19
  "commander": "^12.1.0"
22
20
  },
23
21
  "devDependencies": {
22
+ "@commitlint/cli": "^21.0.2",
23
+ "@commitlint/config-conventional": "^21.0.2",
24
24
  "@types/node": "^20.14.0",
25
- "typescript": "^5.5.0"
25
+ "@typescript-eslint/eslint-plugin": "^8.60.1",
26
+ "@typescript-eslint/parser": "^8.60.1",
27
+ "eslint": "^10.4.1",
28
+ "eslint-config-prettier": "^10.1.8",
29
+ "husky": "^9.1.7",
30
+ "lint-staged": "^17.0.7",
31
+ "prettier": "^3.8.3",
32
+ "typescript": "^5.5.0",
33
+ "vitest": "^4.1.8"
26
34
  }
27
35
  }
package/tsconfig.json CHANGED
@@ -18,5 +18,5 @@
18
18
  }
19
19
  },
20
20
  "include": ["src/**/*"],
21
- "exclude": ["node_modules", "dist"]
21
+ "exclude": ["node_modules", "dist", "src/**/*.test.ts"]
22
22
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAS7B,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,IAAI,UAAU,CAKzC;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,MAAM,CAaR;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CA2FpF;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAoE7B"}
@@ -1,213 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.generatePKCE = generatePKCE;
37
- exports.buildAuthorizeUrl = buildAuthorizeUrl;
38
- exports.createAuthServer = createAuthServer;
39
- exports.exchangeCodeForToken = exchangeCodeForToken;
40
- const crypto = __importStar(require("crypto"));
41
- const http = __importStar(require("http"));
42
- const https = __importStar(require("https"));
43
- const config_1 = require("./config");
44
- const output_1 = require("./output");
45
- const CLIENT_ID = "usercenter";
46
- const TIMEOUT_MS = 1200000;
47
- const OAUTH_SCOPES = "";
48
- function generatePKCE() {
49
- const codeVerifier = crypto.randomBytes(32).toString("base64url").substring(0, 43);
50
- const codeChallenge = crypto.createHash("sha256").update(codeVerifier).digest("base64url");
51
- const state = crypto.randomBytes(16).toString("hex");
52
- return { codeVerifier, codeChallenge, state };
53
- }
54
- function buildAuthorizeUrl(baseUrl, port, pkce) {
55
- const redirectUri = `http://127.0.0.1:${port}/callback`;
56
- const params = new URLSearchParams({
57
- // response_type: "code",
58
- response_type: "token",
59
- client_id: CLIENT_ID,
60
- redirect_uri: redirectUri,
61
- code_challenge: pkce.codeChallenge,
62
- code_challenge_method: "S256",
63
- state: pkce.state,
64
- });
65
- if (OAUTH_SCOPES)
66
- params.set("scope", OAUTH_SCOPES);
67
- return `${baseUrl}/iam/authorize?${params.toString()}`;
68
- }
69
- function createAuthServer(expectedState) {
70
- return new Promise((resolve, reject) => {
71
- const server = http.createServer();
72
- server.listen(3010, "127.0.0.1", () => {
73
- const addr = server.address();
74
- if (!addr || typeof addr === "string") {
75
- server.close();
76
- reject(new Error("无法启动本地服务器"));
77
- return;
78
- }
79
- const port = addr.port;
80
- const waitForCode = () => {
81
- return new Promise((resolveCode, rejectCode) => {
82
- const timer = setTimeout(() => {
83
- server.close();
84
- rejectCode(new Error("登录超时 (120s)"));
85
- }, TIMEOUT_MS);
86
- server.on("request", (req, res) => {
87
- const urlStr = req.url || "/";
88
- const url = new URL(req.url || "/", `http://127.0.0.1`);
89
- if (urlStr.indexOf('#') != -1) {
90
- const hash = urlStr.substring(urlStr.indexOf('#'));
91
- (0, output_1.printInfo)(hash);
92
- }
93
- const code = url.searchParams.get("code");
94
- const state = url.searchParams.get("state");
95
- const error = url.searchParams.get("error");
96
- const ak = url.searchParams.get("ak");
97
- if (ak) {
98
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
99
- res.end("<html><body><h3>登录成功 ✓</h3><p>请关闭此页面返回终端</p></body></html>");
100
- server.close();
101
- resolveCode(ak);
102
- }
103
- if (!code && !error) {
104
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
105
- const str = "`${location.href.substring(0, location.href.indexOf('#'))}?ak=${token}`";
106
- res.end(`<html><body>
107
- <script>
108
- let hash = location.hash;
109
- let params = new URLSearchParams(location.hash.substring(1));
110
- const token = params.get('access_token');
111
- location.href = ${str};
112
- </script>
113
- <h3>等待授权回调...</h3>
114
- </body></html>`);
115
- return;
116
- }
117
- clearTimeout(timer);
118
- if (error) {
119
- const errDesc = url.searchParams.get("error_description") || error;
120
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
121
- res.end(`<html><body><h3>授权失败</h3><p>${errDesc}</p></body></html>`);
122
- server.close();
123
- rejectCode(new Error(`授权失败: ${errDesc}`));
124
- return;
125
- }
126
- if (state !== expectedState) {
127
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
128
- res.end("<html><body><h3>安全错误</h3><p>State 不匹配</p></body></html>");
129
- server.close();
130
- rejectCode(new Error("State 不匹配"));
131
- return;
132
- }
133
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
134
- res.end("<html><body><h3>登录成功 ✓</h3><p>请关闭此页面返回终端</p></body></html>");
135
- server.close();
136
- resolveCode(code);
137
- });
138
- server.on("error", (err) => {
139
- clearTimeout(timer);
140
- rejectCode(new Error(`服务器错误: ${err.message}`));
141
- });
142
- });
143
- };
144
- resolve({ server, port, waitForCode });
145
- });
146
- });
147
- }
148
- function exchangeCodeForToken(code, codeVerifier, redirectUri) {
149
- return new Promise((resolve, reject) => {
150
- const config = (0, config_1.loadConfig)();
151
- const body = new URLSearchParams({
152
- grant_type: "authorization_code",
153
- code,
154
- code_verifier: codeVerifier,
155
- redirect_uri: redirectUri,
156
- client_id: CLIENT_ID,
157
- }).toString();
158
- const url = new URL("/iam/token", config.baseUrl);
159
- const isHttps = url.protocol === "https:";
160
- const agent = isHttps
161
- ? new https.Agent({ rejectUnauthorized: !config.insecure })
162
- : undefined;
163
- const opts = {
164
- hostname: url.hostname,
165
- port: url.port || (isHttps ? 443 : 80),
166
- path: url.pathname + url.search,
167
- method: "POST",
168
- headers: {
169
- "Content-Type": "application/x-www-form-urlencoded",
170
- "Content-Length": Buffer.byteLength(body),
171
- },
172
- agent,
173
- rejectUnauthorized: config.insecure ? false : true,
174
- timeout: 30000,
175
- };
176
- const req = (isHttps ? https : http).request(opts, (res) => {
177
- let data = "";
178
- res.on("data", (chunk) => (data += chunk));
179
- res.on("end", () => {
180
- try {
181
- const json = JSON.parse(data);
182
- if (json.error) {
183
- reject(new Error(`Token 交换失败: ${json.error_description || json.error}`));
184
- return;
185
- }
186
- resolve({
187
- access_token: json.access_token,
188
- refresh_token: json.refresh_token,
189
- expires_in: json.expires_in,
190
- });
191
- }
192
- catch {
193
- if (res.statusCode !== 200) {
194
- reject(new Error(`Token 交换失败 [${res.statusCode}]: ${data.substring(0, 200)}`));
195
- }
196
- else {
197
- reject(new Error(`Token 交换失败: 无法解析响应`));
198
- }
199
- }
200
- });
201
- });
202
- req.on("error", (err) => {
203
- reject(new Error(`Token 交换请求失败: ${err.message}`));
204
- });
205
- req.on("timeout", () => {
206
- req.destroy();
207
- reject(new Error("Token 交换请求超时"));
208
- });
209
- req.write(body);
210
- req.end();
211
- });
212
- }
213
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"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"}