@requence/service 1.0.0-alpha.49 → 1.0.0-alpha.50
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/CHANGELOG.md +6 -0
- package/build/cli.js +113 -22
- package/build/cli.js.map +3 -3
- package/build/index.js +202 -185
- package/build/index.js.map +12 -11
- package/build/types/helpers/src/files/mapOutput.d.ts.map +1 -1
- package/build/types/helpers/src/index.d.ts +3 -2
- package/build/types/helpers/src/index.d.ts.map +1 -1
- package/build/types/helpers/src/jsonschema/zod.d.ts +1 -0
- package/build/types/helpers/src/jsonschema/zod.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/NodeTree.d.ts +31 -14
- package/build/types/helpers/src/protocol/NodeTree.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/command.d.ts +4 -12
- package/build/types/helpers/src/protocol/command.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/nodeType.d.ts +2 -0
- package/build/types/helpers/src/protocol/nodeType.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/taskOptions.d.ts +0 -3
- package/build/types/helpers/src/protocol/taskOptions.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/templateNodeTypes.d.ts +32 -0
- package/build/types/helpers/src/protocol/templateNodeTypes.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/treeNodes.d.ts +10 -6
- package/build/types/helpers/src/protocol/treeNodes.d.ts.map +1 -1
- package/build/types/helpers/src/utils/debounce.d.ts +4 -0
- package/build/types/helpers/src/utils/debounce.d.ts.map +1 -0
- package/build/types/helpers/src/utils/guards.d.ts +3 -0
- package/build/types/helpers/src/utils/guards.d.ts.map +1 -0
- package/build/types/helpers/src/utils/obj.d.ts +4 -0
- package/build/types/helpers/src/utils/obj.d.ts.map +1 -0
- package/build/types/helpers/src/utils/requenceCallback.d.ts.map +1 -1
- package/build/types/helpers/src/utils/types.d.ts +3 -0
- package/build/types/helpers/src/utils/types.d.ts.map +1 -1
- package/build/types/service/src/createAmqpConnection.d.ts +17 -14
- package/build/types/service/src/createAmqpConnection.d.ts.map +1 -1
- package/build/types/service/src/errors.d.ts +3 -0
- package/build/types/service/src/errors.d.ts.map +1 -0
- package/build/types/service/src/helpers.d.ts +0 -5
- package/build/types/service/src/helpers.d.ts.map +1 -1
- package/build/types/service/src/index.d.ts +2 -0
- package/build/types/service/src/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/build/types/helpers/src/utils/createRemotePromise.d.ts +0 -7
- package/build/types/helpers/src/utils/createRemotePromise.d.ts.map +0 -1
- package/build/types/helpers/src/utils/isRecord.d.ts +0 -2
- package/build/types/helpers/src/utils/isRecord.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
package/build/cli.js
CHANGED
|
@@ -7,32 +7,93 @@ import {
|
|
|
7
7
|
import fs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import chalk from "chalk";
|
|
10
|
+
import { createEventSource } from "eventsource-client";
|
|
10
11
|
import yargs from "yargs";
|
|
11
12
|
import { hideBin } from "yargs/helpers";
|
|
13
|
+
import { z } from "zod/v4";
|
|
12
14
|
var y = yargs(hideBin(process.argv));
|
|
15
|
+
var colors = {
|
|
16
|
+
red: chalk.hex("#ef4444"),
|
|
17
|
+
green: chalk.hex("#22c55e"),
|
|
18
|
+
yellow: chalk.hex("#eab308"),
|
|
19
|
+
orange: chalk.hex("#f97316"),
|
|
20
|
+
zinc: chalk.hex("#71717a")
|
|
21
|
+
};
|
|
13
22
|
function errorExit(title, text) {
|
|
14
|
-
console.error(
|
|
23
|
+
console.error(colors.red.bold(title + `
|
|
15
24
|
`));
|
|
16
25
|
if (text) {
|
|
17
|
-
console.error(
|
|
26
|
+
console.error(colors.red(text) + `
|
|
18
27
|
`);
|
|
19
28
|
}
|
|
20
29
|
process.exit(1);
|
|
21
30
|
}
|
|
31
|
+
var pkgJson;
|
|
32
|
+
function loadPkgJson() {
|
|
33
|
+
if (!pkgJson) {
|
|
34
|
+
pkgJson = JSON.parse(fs.readFileSync("package.json", "utf-8"));
|
|
35
|
+
}
|
|
36
|
+
return pkgJson;
|
|
37
|
+
}
|
|
38
|
+
async function fetchTypes(url, headers, targetFile, clear = false, showTimestamp = false) {
|
|
39
|
+
const timestamp = () => colors.zinc(new Date().toLocaleTimeString("en-GB", { hour12: false }));
|
|
40
|
+
const response = await fetch(url, {
|
|
41
|
+
method: "GET",
|
|
42
|
+
headers
|
|
43
|
+
});
|
|
44
|
+
const branchName = response.headers.get("x-branch-name");
|
|
45
|
+
const text = await response.text();
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
errorExit(text);
|
|
48
|
+
}
|
|
49
|
+
let header = `// Generated by requence-service CLI — DO NOT EDIT.
|
|
50
|
+
// Changes will be overwritten.
|
|
51
|
+
|
|
52
|
+
`;
|
|
53
|
+
if (branchName) {
|
|
54
|
+
header += `// !!! types for branch "${branchName}" !!!
|
|
55
|
+
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
const data = `${header}/* eslint-disable */
|
|
59
|
+
/* prettier-ignore */
|
|
60
|
+
|
|
61
|
+
${text}`;
|
|
62
|
+
fs.writeFileSync(targetFile, data);
|
|
63
|
+
if (clear) {
|
|
64
|
+
console.clear();
|
|
65
|
+
}
|
|
66
|
+
if (branchName) {
|
|
67
|
+
console.info(...showTimestamp ? [timestamp()] : [], colors.yellow("types for branch", chalk.bold(branchName), "saved to", chalk.bold(path.relative(process.cwd(), targetFile))));
|
|
68
|
+
} else {
|
|
69
|
+
console.info(...showTimestamp ? [timestamp()] : [], colors.green("types saved to", chalk.bold(path.relative(process.cwd(), targetFile))));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
22
72
|
y.command("generate-types", "generates typescript types", (yargs2) => yargs2.option("access-token", {
|
|
23
73
|
describe: "access token",
|
|
24
74
|
type: "string"
|
|
75
|
+
}).option("dev-token", {
|
|
76
|
+
description: "dev token",
|
|
77
|
+
type: "string"
|
|
25
78
|
}).option("outfile", {
|
|
26
79
|
default: "requence-env.d.ts"
|
|
27
80
|
}).option("outdir", {
|
|
28
81
|
default: ""
|
|
82
|
+
}).option("watch", {
|
|
83
|
+
type: "boolean"
|
|
84
|
+
}).option("clear", {
|
|
85
|
+
description: "clear the terminal on watch updates (use --no-clear to disable)",
|
|
86
|
+
type: "boolean",
|
|
87
|
+
default: true
|
|
29
88
|
}), async (argv) => {
|
|
30
89
|
let token = argv.accessToken ?? process.env.REQUENCE_SERVICE_ACCESS_TOKEN ?? process.env.REQUENCE_ACCESS_TOKEN;
|
|
31
90
|
if (!token) {
|
|
32
|
-
const
|
|
33
|
-
token =
|
|
91
|
+
const pkgJson2 = loadPkgJson();
|
|
92
|
+
token = pkgJson2.requence?.service?.accessToken ?? pkgJson2.requence?.accessToken;
|
|
93
|
+
}
|
|
94
|
+
if (argv.clear) {
|
|
95
|
+
console.info();
|
|
34
96
|
}
|
|
35
|
-
console.info();
|
|
36
97
|
if (!token) {
|
|
37
98
|
errorExit("No access token found", `You can provide the access token as argument to ${chalk.bold("requence-service")},
|
|
38
99
|
as environment variable ${chalk.bold("REQUENCE_ACCESS_TOKEN")} / ${chalk.bold("REQUENCE_SERVICE_ACCESS_TOKEN")} or
|
|
@@ -43,27 +104,57 @@ in your ${chalk.bold("package.json")} in ${chalk.bold("requence.accessToken")} /
|
|
|
43
104
|
errorExit("Invalid service key");
|
|
44
105
|
}
|
|
45
106
|
const [, connectionString, serverUrl] = parts;
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
107
|
+
const headers = {
|
|
108
|
+
Authorization: `Bearer ${connectionString}`
|
|
109
|
+
};
|
|
110
|
+
let devToken = argv.devToken ?? process.env.REQUENCE_SERVICE_ACCESS_TOKEN ?? process.env.REQUENCE_ACCESS_TOKEN;
|
|
111
|
+
if (!devToken) {
|
|
112
|
+
const pkgJson2 = loadPkgJson();
|
|
113
|
+
devToken = pkgJson2.requence?.service?.devToken ?? pkgJson2.requence?.devToken;
|
|
114
|
+
}
|
|
115
|
+
if (devToken) {
|
|
116
|
+
const devParts = deobfuscate(devToken);
|
|
117
|
+
if (devParts[0] !== "api") {
|
|
118
|
+
throw new Error("invalid dev token: please provide a personal access token");
|
|
50
119
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
120
|
+
if (devParts[2] !== parts[2]) {
|
|
121
|
+
throw new Error("invalid dev token: access token and dev token belong to different requence instances");
|
|
122
|
+
}
|
|
123
|
+
headers["x-dev-authorization"] = devParts[1];
|
|
55
124
|
}
|
|
56
|
-
|
|
57
|
-
|
|
125
|
+
await fetchTypes(serverUrl + "/service/types/typescript", headers, path.join(argv.outdir || process.cwd(), argv.outfile));
|
|
126
|
+
if (!argv.watch) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (argv.clear) {
|
|
130
|
+
console.clear();
|
|
131
|
+
}
|
|
132
|
+
console.info(colors.orange.bold("Watching for type changes…"));
|
|
133
|
+
let lastWrite = Date.now();
|
|
134
|
+
const timeSchema = z.coerce.number().int().positive();
|
|
135
|
+
createEventSource({
|
|
136
|
+
method: "GET",
|
|
137
|
+
url: serverUrl + "/service/watch",
|
|
138
|
+
headers,
|
|
139
|
+
async onMessage({ data }) {
|
|
140
|
+
const timeResult = timeSchema.safeParse(data);
|
|
141
|
+
if (!timeResult.success || timeResult.data < lastWrite) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
lastWrite = timeResult.data;
|
|
145
|
+
if (argv.clear) {
|
|
146
|
+
console.clear();
|
|
147
|
+
}
|
|
148
|
+
console.info(colors.zinc.bold(`Regenerating types…${argv.clear ? `
|
|
58
149
|
|
|
59
|
-
|
|
60
|
-
|
|
150
|
+
` : ""}`));
|
|
151
|
+
await fetchTypes(serverUrl + "/service/types/typescript", headers, path.join(argv.outdir || process.cwd(), argv.outfile), argv.clear, true);
|
|
152
|
+
console.info(colors.orange.bold(`${argv.clear ? `
|
|
61
153
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
console.info(chalk.green("types saved to", chalk.bold(path.relative(process.cwd(), file))));
|
|
154
|
+
` : ""}Watching for type changes…`));
|
|
155
|
+
}
|
|
156
|
+
});
|
|
66
157
|
}).scriptName("requence-service").help("h").demandCommand(1, 1).strict().parse();
|
|
67
158
|
|
|
68
|
-
//# debugId=
|
|
159
|
+
//# debugId=190F4F01CE4319C364756E2164756E21
|
|
69
160
|
//# sourceMappingURL=cli.js.map
|
package/build/cli.js.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"#!/usr/bin/env node\n\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { deobfuscate } from '@requence/helpers'\nimport chalk from 'chalk'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nconst y = yargs(hideBin(process.argv))\n\nfunction errorExit(title: string, text?: string): never {\n console.error(
|
|
5
|
+
"#!/usr/bin/env node\n\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { deobfuscate } from '@requence/helpers'\nimport chalk from 'chalk'\nimport { createEventSource } from 'eventsource-client'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\nimport { z } from 'zod/v4'\n\nconst y = yargs(hideBin(process.argv))\n\nconst colors = {\n red: chalk.hex('#ef4444'),\n green: chalk.hex('#22c55e'),\n yellow: chalk.hex('#eab308'),\n orange: chalk.hex('#f97316'),\n zinc: chalk.hex('#71717a'),\n}\n\nfunction errorExit(title: string, text?: string): never {\n console.error(colors.red.bold(title + '\\n'))\n if (text) {\n console.error(colors.red(text) + '\\n')\n }\n process.exit(1)\n}\n\nlet pkgJson: any | null\nfunction loadPkgJson() {\n if (!pkgJson) {\n pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8'))\n }\n return pkgJson\n}\n\nasync function fetchTypes(\n url: string,\n headers: HeadersInit,\n targetFile: string,\n clear = false,\n showTimestamp = false,\n) {\n const timestamp = () =>\n colors.zinc(new Date().toLocaleTimeString('en-GB', { hour12: false }))\n const response = await fetch(url, {\n method: 'GET',\n headers,\n })\n\n const branchName = response.headers.get('x-branch-name')\n const text = await response.text()\n\n if (!response.ok) {\n errorExit(text)\n }\n\n let header =\n '// Generated by requence-service CLI — DO NOT EDIT.\\n// Changes will be overwritten.\\n\\n'\n\n if (branchName) {\n header += `// !!! types for branch \"${branchName}\" !!!\\n\\n`\n }\n const data = `${header}/* eslint-disable */\\n/* prettier-ignore */\\n\\n${text}`\n\n fs.writeFileSync(targetFile, data)\n\n if (clear) {\n console.clear()\n }\n\n if (branchName) {\n console.info(\n ...(showTimestamp ? [timestamp()] : []),\n colors.yellow(\n 'types for branch',\n chalk.bold(branchName),\n 'saved to',\n chalk.bold(path.relative(process.cwd(), targetFile)),\n ),\n )\n } else {\n console.info(\n ...(showTimestamp ? [timestamp()] : []),\n colors.green(\n 'types saved to',\n chalk.bold(path.relative(process.cwd(), targetFile)),\n ),\n )\n }\n}\n\ny.command(\n 'generate-types',\n 'generates typescript types',\n (yargs) =>\n yargs\n .option('access-token', {\n describe: 'access token',\n type: 'string',\n })\n .option('dev-token', {\n description: 'dev token',\n type: 'string',\n })\n .option('outfile', {\n default: 'requence-env.d.ts',\n })\n .option('outdir', {\n default: '',\n })\n .option('watch', {\n type: 'boolean',\n })\n .option('clear', {\n description:\n 'clear the terminal on watch updates (use --no-clear to disable)',\n type: 'boolean',\n default: true,\n }),\n async (argv) => {\n let token =\n argv.accessToken ??\n process.env.REQUENCE_SERVICE_ACCESS_TOKEN ??\n process.env.REQUENCE_ACCESS_TOKEN\n\n if (!token) {\n const pkgJson = loadPkgJson()\n token =\n pkgJson.requence?.service?.accessToken ?? pkgJson.requence?.accessToken\n }\n\n if (argv.clear) {\n console.info() // newline\n }\n if (!token) {\n errorExit(\n 'No access token found',\n `You can provide the access token as argument to ${chalk.bold('requence-service')},\\nas environment variable ${chalk.bold('REQUENCE_ACCESS_TOKEN')} / ${chalk.bold('REQUENCE_SERVICE_ACCESS_TOKEN')} or\\nin your ${chalk.bold('package.json')} in ${chalk.bold('requence.accessToken')} / ${chalk.bold('requence.service.accessToken')}`,\n )\n }\n\n const parts = deobfuscate(token)\n if (parts.length !== 3 || parts[0] !== 'service') {\n errorExit('Invalid service key')\n }\n\n const [, connectionString, serverUrl] = parts\n const headers: HeadersInit = {\n Authorization: `Bearer ${connectionString}`,\n }\n let devToken =\n argv.devToken ??\n process.env.REQUENCE_SERVICE_ACCESS_TOKEN ??\n process.env.REQUENCE_ACCESS_TOKEN\n\n if (!devToken) {\n const pkgJson = loadPkgJson()\n devToken =\n pkgJson.requence?.service?.devToken ?? pkgJson.requence?.devToken\n }\n\n if (devToken) {\n const devParts = deobfuscate(devToken)\n if (devParts[0] !== 'api') {\n throw new Error(\n 'invalid dev token: please provide a personal access token',\n )\n }\n if (devParts[2] !== parts[2]) {\n throw new Error(\n 'invalid dev token: access token and dev token belong to different requence instances',\n )\n }\n\n headers['x-dev-authorization'] = devParts[1]\n }\n\n await fetchTypes(\n serverUrl + '/service/types/typescript',\n headers,\n path.join(argv.outdir || process.cwd(), argv.outfile),\n )\n\n if (!argv.watch) {\n return\n }\n\n if (argv.clear) {\n console.clear()\n }\n console.info(colors.orange.bold('Watching for type changes…'))\n let lastWrite = Date.now()\n const timeSchema = z.coerce.number().int().positive()\n createEventSource({\n method: 'GET',\n url: serverUrl + '/service/watch',\n headers,\n async onMessage({ data }) {\n const timeResult = timeSchema.safeParse(data)\n if (!timeResult.success || timeResult.data < lastWrite) {\n return\n }\n lastWrite = timeResult.data\n if (argv.clear) {\n console.clear()\n }\n console.info(\n colors.zinc.bold(`Regenerating types…${argv.clear ? '\\n\\n' : ''}`),\n )\n\n await fetchTypes(\n serverUrl + '/service/types/typescript',\n headers,\n path.join(argv.outdir || process.cwd(), argv.outfile),\n argv.clear,\n true,\n )\n console.info(\n colors.orange.bold(\n `${argv.clear ? '\\n\\n' : ''}Watching for type changes…`,\n ),\n )\n },\n })\n },\n)\n .scriptName('requence-service')\n .help('h')\n .demandCommand(1, 1)\n .strict()\n .parse()\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;AAEA;AACA;AAGA;AACA;AACA;AAEA,IAAM,IAAI,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAErC,SAAS,SAAS,CAAC,OAAe,MAAsB;AAAA,EACtD,QAAQ,MAAM,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "190F4F01CE4319C364756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|