@requence/service 1.0.0-alpha.1 → 1.0.0-alpha.3

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 CHANGED
@@ -1,27 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [1.0.0-alpha.1](https://github.com/regrapes/requence/compare/@requence/service@1.0.0-alpha.0...@requence/service@1.0.0-alpha.1) (2024-12-06)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * unprivate ui package ([6911114](https://github.com/regrapes/requence/commit/6911114b616396a2ff625292e793f3240a9f0af6))
12
-
13
-
14
-
15
-
16
-
17
- # 1.0.0-alpha.0 (2024-11-18)
18
-
19
-
20
- ### Features
21
-
22
- * nodes rewrite ([80928db](https://github.com/regrapes/requence/commit/80928db9fe0bb360fae7608c85ae750d7ee86ea2))
23
-
24
-
25
- ### BREAKING CHANGES
26
-
27
- * Rewrite form XState to custom node based implementation w/ UI
@@ -0,0 +1,95 @@
1
+ // ../helpers/src/obfuscate.ts
2
+ var separator = "";
3
+ var base65Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$";
4
+ var base65CharToIndex = {};
5
+ for (let i = 0;i < base65Chars.length; i++) {
6
+ base65CharToIndex[base65Chars[i]] = i;
7
+ }
8
+ function obfuscate(...parts) {
9
+ const str = parts.join(separator);
10
+ let binaryString = "";
11
+ for (let i = 0;i < str.length; i++) {
12
+ const charCode = str.charCodeAt(i);
13
+ binaryString += charCode.toString(2).padStart(16, "0");
14
+ }
15
+ let encodedString = "";
16
+ const chunkSize = 6;
17
+ let paddingCount = 0;
18
+ for (let i = 0;i < binaryString.length; i += chunkSize) {
19
+ let chunk = binaryString.substring(i, i + chunkSize);
20
+ if (chunk.length < chunkSize) {
21
+ paddingCount = chunkSize - chunk.length;
22
+ chunk = chunk.padEnd(chunkSize, "0");
23
+ }
24
+ const decimalValue = parseInt(chunk, 2);
25
+ encodedString += base65Chars[decimalValue];
26
+ }
27
+ return encodedString + paddingCount.toString();
28
+ }
29
+ function deobfuscate(str) {
30
+ const paddingCount = parseInt(str.slice(-1), 10);
31
+ str = str.slice(0, -1);
32
+ let binaryString = "";
33
+ for (let i = 0;i < str.length; i++) {
34
+ const decimalValue = base65CharToIndex[str[i]];
35
+ const binaryChunk = decimalValue.toString(2).padStart(6, "0");
36
+ binaryString += binaryChunk;
37
+ }
38
+ if (paddingCount > 0) {
39
+ binaryString = binaryString.slice(0, -paddingCount);
40
+ }
41
+ let decodedString = "";
42
+ const charSize = 16;
43
+ for (let i = 0;i < binaryString.length; i += charSize) {
44
+ const byte = binaryString.substring(i, i + charSize);
45
+ if (byte.length === 16) {
46
+ const charCode = parseInt(byte, 2);
47
+ decodedString += String.fromCharCode(charCode);
48
+ }
49
+ }
50
+ return decodedString.split(separator);
51
+ }
52
+ // ../helpers/src/clone.ts
53
+ var CLONE_SYMBOL = Symbol("original");
54
+ function clone(data) {
55
+ if (typeof data !== "object" || data === null) {
56
+ return data;
57
+ }
58
+ const target = data[CLONE_SYMBOL];
59
+ if (target) {
60
+ return clone(target);
61
+ }
62
+ if (Array.isArray(data)) {
63
+ return data.map(clone);
64
+ }
65
+ return Object.fromEntries(Object.entries(data).map(([key, value]) => [key, clone(value)]));
66
+ }
67
+ // ../helpers/src/createObjectProxy.ts
68
+ function createObjectProxy(obj, onChange) {
69
+ return new Proxy(obj, {
70
+ set(target, property, newValue) {
71
+ const result = Reflect.set(target, property, newValue);
72
+ onChange(target);
73
+ return result;
74
+ },
75
+ deleteProperty(target, property) {
76
+ const result = Reflect.deleteProperty(target, property);
77
+ onChange(target);
78
+ return result;
79
+ },
80
+ get(target, property, receiver) {
81
+ if (property === CLONE_SYMBOL) {
82
+ return target;
83
+ }
84
+ const result = Reflect.get(target, property, receiver);
85
+ if (typeof result === "object" && result !== null) {
86
+ return createObjectProxy(result, () => onChange(target));
87
+ }
88
+ return result;
89
+ }
90
+ });
91
+ }
92
+ export { obfuscate, deobfuscate, clone, createObjectProxy };
93
+
94
+ //# debugId=A14CF1AD3BCA776264756E2164756E21
95
+ //# sourceMappingURL=chunk-0x9092n4.js.map
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../helpers/src/obfuscate.ts", "../../helpers/src/clone.ts", "../../helpers/src/createObjectProxy.ts"],
4
+ "sourcesContent": [
5
+ "const separator = '\\u{f6ee}'\n\nconst base65Chars =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$'\n\nconst base65CharToIndex: Record<string, number> = {}\nfor (let i = 0; i < base65Chars.length; i++) {\n base65CharToIndex[base65Chars[i]] = i\n}\n\nexport function obfuscate(...parts: Array<string>) {\n const str = parts.join(separator)\n let binaryString = ''\n\n for (let i = 0; i < str.length; i++) {\n const charCode = str.charCodeAt(i)\n binaryString += charCode.toString(2).padStart(16, '0')\n }\n\n let encodedString = ''\n const chunkSize = 6\n let paddingCount = 0\n\n for (let i = 0; i < binaryString.length; i += chunkSize) {\n let chunk = binaryString.substring(i, i + chunkSize)\n\n if (chunk.length < chunkSize) {\n paddingCount = chunkSize - chunk.length\n chunk = chunk.padEnd(chunkSize, '0')\n }\n\n const decimalValue = parseInt(chunk, 2)\n encodedString += base65Chars[decimalValue]\n }\n\n return encodedString + paddingCount.toString()\n}\n\nexport function randomString(length: number) {\n const randomValues = new Uint8Array(length)\n crypto.getRandomValues(randomValues)\n\n let randomString = ''\n for (let i = 0; i < length; i++) {\n randomString += base65Chars[randomValues[i] % base65Chars.length]\n }\n\n return randomString\n}\n\nexport function deobfuscate(str: string) {\n const paddingCount = parseInt(str.slice(-1), 10)\n str = str.slice(0, -1)\n\n let binaryString = ''\n\n for (let i = 0; i < str.length; i++) {\n const decimalValue = base65CharToIndex[str[i]]\n const binaryChunk = decimalValue.toString(2).padStart(6, '0')\n binaryString += binaryChunk\n }\n\n if (paddingCount > 0) {\n binaryString = binaryString.slice(0, -paddingCount)\n }\n\n let decodedString = ''\n const charSize = 16\n\n for (let i = 0; i < binaryString.length; i += charSize) {\n const byte = binaryString.substring(i, i + charSize)\n if (byte.length === 16) {\n const charCode = parseInt(byte, 2)\n decodedString += String.fromCharCode(charCode)\n }\n }\n\n return decodedString.split(separator)\n}\n",
6
+ "export const CLONE_SYMBOL = Symbol('original')\n\nexport default function clone(data: any): any {\n if (typeof data !== 'object' || data === null) {\n return data\n }\n\n const target = (data as any)[CLONE_SYMBOL]\n if (target) {\n return clone(target)\n }\n\n if (Array.isArray(data)) {\n return data.map(clone)\n }\n\n return Object.fromEntries(\n Object.entries(data).map(([key, value]) => [key, clone(value)]),\n )\n}\n",
7
+ "import { CLONE_SYMBOL } from './clone.ts'\n\nexport default function createObjectProxy(\n obj: Record<string, unknown>,\n onChange: (newObj: Record<string, unknown>) => void,\n) {\n return new Proxy(obj, {\n set(target, property, newValue) {\n const result = Reflect.set(target, property, newValue)\n onChange(target)\n return result\n },\n deleteProperty(target, property) {\n const result = Reflect.deleteProperty(target, property)\n onChange(target)\n return result\n },\n get(target, property, receiver) {\n if (property === CLONE_SYMBOL) {\n return target\n }\n\n const result = Reflect.get(target, property, receiver)\n\n if (typeof result === 'object' && result !== null) {\n return createObjectProxy(result, () => onChange(target))\n }\n\n return result\n },\n })\n}\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "A14CF1AD3BCA776264756E2164756E21",
11
+ "names": []
12
+ }
package/build/cli.js CHANGED
@@ -1,27 +1,39 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- deobfuscate
4
- } from "./chunk-2exhyr7n.js";
3
+ deobfuscate
4
+ } from "./chunk-0x9092n4.js";
5
5
 
6
6
  // src/cli.ts
7
- import {mkdirSync, readFileSync, writeFileSync} from "node:fs";
7
+ import fs from "node:fs";
8
+ import path from "node:path";
8
9
  import chalk from "chalk";
9
10
  import yargs from "yargs";
10
- import {hideBin} from "yargs/helpers";
11
- function errorExit(msg) {
12
- console.error(chalk.red.bold(msg + "\n"));
11
+ import { hideBin } from "yargs/helpers";
12
+ var y = yargs(hideBin(process.argv));
13
+ function errorExit(title, text) {
14
+ console.error(chalk.red.bold(title + `
15
+ `));
16
+ if (text) {
17
+ console.error(chalk.red(text) + `
18
+ `);
19
+ }
13
20
  process.exit(1);
14
21
  }
15
- var y = yargs(hideBin(process.argv));
16
22
  y.command("generate-types", "generates typescript types", (yargs2) => yargs2.option("service-key", {
17
23
  describe: "service key"
24
+ }).option("outfile", {
25
+ default: "requence-env.d.ts"
26
+ }).option("outdir", {
27
+ default: ""
18
28
  }), async (argv) => {
19
- const key = argv.serviceKey ?? process.env.REQUENCE_SERVICE_KEY ?? JSON.parse(readFileSync("package.json", "utf-8")).requence?.serviceKey;
20
- console.log();
21
- if (!key) {
22
- errorExit("No service key found");
29
+ const token = argv.accessToken ?? process.env.REQUENCE_ACCESS_TOKEN ?? JSON.parse(fs.readFileSync("package.json", "utf-8")).requence?.accessToken;
30
+ console.info();
31
+ if (!token) {
32
+ errorExit("No access token found", `You can provide the access token as argument to ${chalk.bold("createTask")},
33
+ as environment variable ${chalk.bold("REQUENCE_ACCESS_TOKEN")} or
34
+ in your ${chalk.bold("package.json")} in ${chalk.bold("requence.accessToken")}`);
23
35
  }
24
- const parts = deobfuscate(key);
36
+ const parts = deobfuscate(token);
25
37
  if (parts.length !== 3 || parts[0] !== "service") {
26
38
  errorExit("Invalid service key");
27
39
  }
@@ -36,11 +48,15 @@ y.command("generate-types", "generates typescript types", (yargs2) => yargs2.opt
36
48
  const error = await response.text();
37
49
  errorExit(error);
38
50
  }
39
- const data = await response.text();
40
- mkdirSync(".requence/types", { recursive: true });
41
- writeFileSync(".requence/types/versions.d.ts", data);
42
- console.info(chalk.green("types saved to", chalk.bold(".requence")));
51
+ const text = await response.text();
52
+ const data = `/* eslint-disable */
53
+ /* prettier-ignore */
54
+
55
+ ${text}`;
56
+ const file = path.join(argv.outdir || process.cwd(), argv.outfile);
57
+ fs.writeFileSync(file, data);
58
+ console.info(chalk.green("types saved to", chalk.bold(path.relative(process.cwd(), file))));
43
59
  }).scriptName("requence-service").help("h").demandCommand(1, 1).strict().parse();
44
60
 
45
- //# debugId=F212890998E26AF664756E2164756E21
61
+ //# debugId=C13A2525C1144AB664756E2164756E21
46
62
  //# 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 { mkdirSync, readFileSync, writeFileSync } from 'node:fs'\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(msg: string): never {\n console.error(chalk.red.bold(msg + '\\n'))\n process.exit(1)\n}\n\ny.command(\n 'generate-types',\n 'generates typescript types',\n (yargs) =>\n yargs.option('service-key', {\n describe: 'service key',\n }),\n async (argv) => {\n const key =\n argv.serviceKey ??\n process.env.REQUENCE_SERVICE_KEY ??\n JSON.parse(readFileSync('package.json', 'utf-8')).requence?.serviceKey\n console.log() // newline\n if (!key) {\n errorExit('No service key found')\n }\n\n const parts = deobfuscate(key)\n if (parts.length !== 3 || parts[0] !== 'service') {\n errorExit('Invalid service key')\n }\n\n const [, connectionString, serverUrl] = parts\n\n const response = await fetch(serverUrl + '/service/typescript', {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${connectionString}`,\n },\n })\n\n if (!response.ok) {\n const error = await response.text()\n errorExit(error)\n }\n\n const data = await response.text()\n\n mkdirSync('.requence/types', { recursive: true })\n writeFileSync('.requence/types/versions.d.ts', data)\n\n console.info(chalk.green('types saved to', chalk.bold('.requence')))\n },\n)\n .scriptName('requence-service')\n .help('h')\n .demandCommand(1, 1)\n .strict()\n .parse()\n"
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(chalk.red.bold(title + '\\n'))\n if (text) {\n console.error(chalk.red(text) + '\\n')\n }\n process.exit(1)\n}\n\ny.command(\n 'generate-types',\n 'generates typescript types',\n (yargs) =>\n yargs\n .option('service-key', {\n describe: 'service key',\n })\n .option('outfile', {\n default: 'requence-env.d.ts',\n })\n .option('outdir', {\n default: '',\n }),\n async (argv) => {\n const token =\n argv.accessToken ??\n process.env.REQUENCE_ACCESS_TOKEN ??\n JSON.parse(fs.readFileSync('package.json', 'utf-8')).requence?.accessToken\n\n console.info() // newline\n if (!token) {\n errorExit(\n 'No access token found',\n `You can provide the access token as argument to ${chalk.bold('createTask')},\\nas environment variable ${chalk.bold('REQUENCE_ACCESS_TOKEN')} or\\nin your ${chalk.bold('package.json')} in ${chalk.bold('requence.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\n const response = await fetch(serverUrl + '/service/typescript', {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${connectionString}`,\n },\n })\n\n if (!response.ok) {\n const error = await response.text()\n errorExit(error)\n }\n\n const text = await response.text()\n const data = `/* eslint-disable */\\n/* prettier-ignore */\\n\\n${text}`\n\n const file = path.join(argv.outdir || process.cwd(), argv.outfile)\n fs.writeFileSync(file, data)\n\n console.info(\n chalk.green(\n 'types saved to',\n chalk.bold(path.relative(process.cwd(), file)),\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;AAGA;AACA;AACA;AAIA,SAAS,SAAS,CAAC,KAAoB;AACrC,UAAQ,MAAM,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AACxC,UAAQ,KAAK,CAAC;AAAA;AAJhB,IAAM,IAAI,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAOrC,EAAE,QACA,kBACA,8BACA,CAAC,WACC,OAAM,OAAO,eAAe;AAAA,EAC1B,UAAU;AACZ,CAAC,GACH,OAAO,SAAS;AACd,QAAM,MACJ,KAAK,cACL,QAAQ,IAAI,wBACZ,KAAK,MAAM,aAAa,gBAAgB,OAAO,CAAC,EAAE,UAAU;AAC9D,UAAQ,IAAI;AACZ,OAAK,KAAK;AACR,cAAU,sBAAsB;AAAA,EAClC;AAEA,QAAM,QAAQ,YAAY,GAAG;AAC7B,MAAI,MAAM,WAAW,KAAK,MAAM,OAAO,WAAW;AAChD,cAAU,qBAAqB;AAAA,EACjC;AAEA,WAAS,kBAAkB,aAAa;AAExC,QAAM,WAAW,MAAM,MAAM,YAAY,uBAAuB;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,OAAK,SAAS,IAAI;AAChB,UAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,YAAU,mBAAmB,EAAE,WAAW,KAAK,CAAC;AAChD,gBAAc,iCAAiC,IAAI;AAEnD,UAAQ,KAAK,MAAM,MAAM,kBAAkB,MAAM,KAAK,WAAW,CAAC,CAAC;AAAA,CAEvE,EACG,WAAW,kBAAkB,EAC7B,KAAK,GAAG,EACR,cAAc,GAAG,CAAC,EAClB,OAAO,EACP,MAAM;",
8
- "debugId": "F212890998E26AF664756E2164756E21",
7
+ "mappings": ";;;;;;AAEA;AACA;AAGA;AACA;AACA;AAEA,IAAM,IAAI,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAErC,SAAS,SAAS,CAAC,OAAe,MAAsB;AACtD,UAAQ,MAAM,MAAM,IAAI,KAAK,QAAQ;AAAA,CAAI,CAAC;AAC1C,MAAI,MAAM;AACR,YAAQ,MAAM,MAAM,IAAI,IAAI,IAAI;AAAA,CAAI;AAAA,EACtC;AACA,UAAQ,KAAK,CAAC;AAAA;AAGhB,EAAE,QACA,kBACA,8BACA,CAAC,WACC,OACG,OAAO,eAAe;AAAA,EACrB,UAAU;AACZ,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,SAAS;AACX,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,SAAS;AACX,CAAC,GACL,OAAO,SAAS;AACd,QAAM,QACJ,KAAK,eACL,QAAQ,IAAI,yBACZ,KAAK,MAAM,GAAG,aAAa,gBAAgB,OAAO,CAAC,EAAE,UAAU;AAEjE,UAAQ,KAAK;AACb,OAAK,OAAO;AACV,cACE,yBACA,mDAAmD,MAAM,KAAK,YAAY;AAAA,0BAA+B,MAAM,KAAK,uBAAuB;AAAA,UAAiB,MAAM,KAAK,cAAc,QAAQ,MAAM,KAAK,sBAAsB,GAChO;AAAA,EACF;AAEA,QAAM,QAAQ,YAAY,KAAK;AAC/B,MAAI,MAAM,WAAW,KAAK,MAAM,OAAO,WAAW;AAChD,cAAU,qBAAqB;AAAA,EACjC;AAEA,WAAS,kBAAkB,aAAa;AAExC,QAAM,WAAW,MAAM,MAAM,YAAY,uBAAuB;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,OAAK,SAAS,IAAI;AAChB,UAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,QAAM,OAAO;AAAA;AAAA;AAAA,EAAkD;AAE/D,QAAM,OAAO,KAAK,KAAK,KAAK,UAAU,QAAQ,IAAI,GAAG,KAAK,OAAO;AACjE,KAAG,cAAc,MAAM,IAAI;AAE3B,UAAQ,KACN,MAAM,MACJ,kBACA,MAAM,KAAK,KAAK,SAAS,QAAQ,IAAI,GAAG,IAAI,CAAC,CAC/C,CACF;AAAA,CAEJ,EACG,WAAW,kBAAkB,EAC7B,KAAK,GAAG,EACR,cAAc,GAAG,CAAC,EAClB,OAAO,EACP,MAAM;",
8
+ "debugId": "C13A2525C1144AB664756E2164756E21",
9
9
  "names": []
10
10
  }