@requence/service 1.0.0-alpha.8 → 1.0.0-alpha.9

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,5 +1,11 @@
1
1
  # @requence/service
2
2
 
3
+ ## 1.0.0-alpha.9
4
+
5
+ ### Patch Changes
6
+
7
+ - 1d847ee: improved files handling
8
+
3
9
  ## 1.0.0-alpha.8
4
10
 
5
11
  ### Patch Changes
@@ -67,6 +67,67 @@ function deobfuscate(str) {
67
67
  }
68
68
  return decodedString.split(separator);
69
69
  }
70
+
71
+ // ../helpers/src/utils.ts
72
+ import { z } from "zod";
73
+ var recordSchema = z.record(z.unknown());
74
+ function isRecord(data) {
75
+ return recordSchema.safeParse(data).success;
76
+ }
77
+ function resolve(value, onResolve) {
78
+ if (value instanceof Promise) {
79
+ return Promise.resolve().then(() => value).then(onResolve);
80
+ }
81
+ return onResolve(value);
82
+ }
83
+ function notUndefined(value, fallback) {
84
+ return resolve(value, (resolvedValue) => typeof resolvedValue === "undefined" ? fallback : resolvedValue);
85
+ }
86
+ function mapData(data, visitors) {
87
+ const traverseData = (data2, path) => {
88
+ if (Array.isArray(data2)) {
89
+ return resolve(visitors.Array?.(data2, path), (resolvedData) => {
90
+ if (resolvedData) {
91
+ return resolvedData;
92
+ }
93
+ const items = data2.map((item, index) => traverseData(item, [...path, index]));
94
+ if (items.some((item) => item instanceof Promise)) {
95
+ return Promise.all(items);
96
+ }
97
+ return items;
98
+ });
99
+ }
100
+ if (data2 === null) {
101
+ return notUndefined(visitors.Null?.(data2, path), data2);
102
+ }
103
+ if (Buffer.isBuffer(data2)) {
104
+ return notUndefined(visitors.Buffer?.(data2, path), data2);
105
+ }
106
+ if (typeof data2 === "string") {
107
+ return notUndefined(visitors.String?.(data2, path), data2);
108
+ }
109
+ if (typeof data2 === "number") {
110
+ return notUndefined(visitors.Number?.(data2, path), data2);
111
+ }
112
+ if (isRecord(data2)) {
113
+ return resolve(visitors.Object?.(data2, path), (resolvedData) => {
114
+ if (resolvedData) {
115
+ return resolvedData;
116
+ }
117
+ const entries = Object.entries(data2).map(([key, value]) => [
118
+ key,
119
+ traverseData(value, [...path, key])
120
+ ]);
121
+ if (entries.some(([, value]) => value instanceof Promise)) {
122
+ return Promise.all(entries.map(([key, value]) => Promise.resolve().then(() => value).then((resolvedValue) => [key, resolvedValue]))).then((entries2) => Object.fromEntries(entries2));
123
+ }
124
+ return Object.fromEntries(entries);
125
+ });
126
+ }
127
+ return data2;
128
+ };
129
+ return traverseData(data, []);
130
+ }
70
131
  // ../helpers/src/clone.ts
71
132
  var CLONE_SYMBOL = Symbol("original");
72
133
  function clone(data) {
@@ -107,7 +168,7 @@ function createObjectProxy(obj, onChange) {
107
168
  }
108
169
  });
109
170
  }
110
- export { __toESM, __commonJS, obfuscate, deobfuscate, clone, createObjectProxy };
171
+ export { __toESM, __commonJS, mapData, obfuscate, deobfuscate, clone, createObjectProxy };
111
172
 
112
- //# debugId=386177CE226B469C64756E2164756E21
113
- //# sourceMappingURL=chunk-5ystf0dn.js.map
173
+ //# debugId=B01381FFF2074CC264756E2164756E21
174
+ //# sourceMappingURL=chunk-zv4znr75.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../helpers/src/obfuscate.ts", "../../helpers/src/utils.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
+ "import { z } from 'zod'\n\nexport function matchSchema<Schema extends z.ZodSchema>(\n schema: Schema,\n input: unknown,\n): input is z.infer<Schema>\nexport function matchSchema<Schema extends z.ZodSchema>(\n schema: Schema,\n): (input: unknown) => input is z.infer<Schema>\nexport function matchSchema<Schema extends z.ZodSchema>(\n schema: Schema,\n input?: unknown,\n) {\n if (input) {\n return schema.safeParse(input).success\n }\n\n return (input: unknown): input is z.infer<Schema> =>\n schema.safeParse(input).success\n}\n\nconst recordSchema = z.record(z.unknown())\nexport function isRecord(data: unknown): data is Record<string, unknown> {\n return recordSchema.safeParse(data).success\n}\n\ntype DataVistor<T> = (\n data: T,\n path: Array<string | number>,\n) => Promise<any> | any\n\ninterface DataVistors {\n Null?: DataVistor<null>\n String?: DataVistor<string>\n Number?: DataVistor<number>\n Object?: DataVistor<object>\n Array?: DataVistor<Array<any>>\n Buffer?: DataVistor<Buffer>\n}\n\ntype HasPromiseVistor<T extends DataVistors, Then, Else> = T[keyof T] extends (\n ...args: any[]\n) => any\n ? Promise<any> extends ReturnType<T[keyof T]>\n ? Then\n : Else\n : Else\n\nfunction resolve<T>(value: T | Promise<T>, onResolve: (value: T) => void) {\n if (value instanceof Promise) {\n return Promise.resolve()\n .then(() => value)\n .then(onResolve)\n }\n return onResolve(value)\n}\n\nfunction notUndefined(value: unknown, fallback: unknown) {\n return resolve(value, (resolvedValue) =>\n typeof resolvedValue === 'undefined' ? fallback : resolvedValue,\n )\n}\n\nexport function mapData<\n Output,\n Input = unknown,\n V extends DataVistors = DataVistors,\n>(\n data: Input,\n visitors: V,\n): HasPromiseVistor<\n V,\n Promise<unknown extends Output ? Input : Output>,\n unknown extends Output ? Input : Output\n> {\n const traverseData = (data: any, path: Array<string | number>): any => {\n if (Array.isArray(data)) {\n return resolve(visitors.Array?.(data, path), (resolvedData) => {\n if (resolvedData) {\n return resolvedData\n }\n const items = data.map((item, index) =>\n traverseData(item, [...path, index]),\n )\n if (items.some((item) => item instanceof Promise)) {\n return Promise.all(items)\n }\n\n return items\n })\n }\n if (data === null) {\n return notUndefined(visitors.Null?.(data, path), data)\n }\n if (Buffer.isBuffer(data)) {\n return notUndefined(visitors.Buffer?.(data, path), data)\n }\n if (typeof data === 'string') {\n return notUndefined(visitors.String?.(data, path), data)\n }\n if (typeof data === 'number') {\n return notUndefined(visitors.Number?.(data, path), data)\n }\n if (isRecord(data)) {\n return resolve(visitors.Object?.(data, path), (resolvedData) => {\n if (resolvedData) {\n return resolvedData\n }\n\n const entries = Object.entries(data).map(([key, value]) => [\n key,\n traverseData(value, [...path, key]),\n ])\n\n if (entries.some(([, value]) => value instanceof Promise)) {\n return Promise.all(\n entries.map(([key, value]) =>\n Promise.resolve()\n .then(() => value)\n .then((resolvedValue) => [key, resolvedValue]),\n ),\n ).then((entries) => Object.fromEntries(entries))\n }\n\n return Object.fromEntries(entries)\n })\n }\n return data\n }\n\n return traverseData(data, [])\n}\n",
7
+ "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",
8
+ "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"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "B01381FFF2074CC264756E2164756E21",
12
+ "names": []
13
+ }
package/build/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  deobfuscate
4
- } from "./chunk-5ystf0dn.js";
4
+ } from "./chunk-zv4znr75.js";
5
5
 
6
6
  // src/cli.ts
7
7
  import fs from "node:fs";
package/build/index.js CHANGED
@@ -4,8 +4,9 @@ import {
4
4
  clone,
5
5
  createObjectProxy,
6
6
  deobfuscate,
7
+ mapData,
7
8
  obfuscate
8
- } from "./chunk-5ystf0dn.js";
9
+ } from "./chunk-zv4znr75.js";
9
10
 
10
11
  // ../../node_modules/ajv/dist/compile/codegen/code.js
11
12
  var require_code = __commonJS((exports) => {
@@ -6184,10 +6185,10 @@ import { z as z2 } from "zod";
6184
6185
  import { z } from "zod";
6185
6186
 
6186
6187
  // ../helpers/src/files/mapOutput.ts
6187
- async function upload(uploadUrl, response) {
6188
+ async function upload(uploadUrl, body) {
6188
6189
  const uploadResponse = await fetch(uploadUrl, {
6189
6190
  method: "POST",
6190
- body: response.body
6191
+ body
6191
6192
  });
6192
6193
  const data = await uploadResponse.json();
6193
6194
  if (!data || typeof data !== "object") {
@@ -6196,32 +6197,47 @@ async function upload(uploadUrl, response) {
6196
6197
  return toFileObject(data);
6197
6198
  }
6198
6199
  async function mapOutput(value, nodeOptions, eventHandlers) {
6199
- if (Array.isArray(value)) {
6200
- return Promise.all(value.map((item) => mapOutput(item, nodeOptions)));
6201
- }
6202
- if (value instanceof Response) {
6203
- if (nodeOptions.uploadUrl) {
6204
- try {
6205
- return upload(nodeOptions.uploadUrl, value);
6206
- } catch (error) {
6207
- if (!(error instanceof Error)) {
6208
- throw error;
6200
+ return mapData(value, {
6201
+ async Object(obj) {
6202
+ if (obj instanceof Response || obj instanceof Blob) {
6203
+ if (nodeOptions.uploadUrl) {
6204
+ try {
6205
+ return await upload(nodeOptions.uploadUrl, obj instanceof Response ? obj.body : obj);
6206
+ } catch (error) {
6207
+ if (!(error instanceof Error)) {
6208
+ throw error;
6209
+ }
6210
+ eventHandlers?.onFail?.(error);
6211
+ return null;
6212
+ }
6213
+ } else {
6214
+ eventHandlers?.onSkip?.();
6215
+ return null;
6209
6216
  }
6210
- eventHandlers?.onFail?.(error);
6211
- return null;
6212
6217
  }
6213
- } else {
6214
- eventHandlers?.onSkip?.();
6215
- return null;
6216
6218
  }
6217
- }
6218
- if (value && typeof value === "object") {
6219
- return Object.fromEntries(await Promise.all(Object.entries(value).map(async ([k, v]) => [
6220
- k,
6221
- await mapOutput(v, nodeOptions)
6222
- ])));
6223
- }
6224
- return value;
6219
+ });
6220
+ }
6221
+ // ../helpers/src/files/isValidMimeType.ts
6222
+ function isValidMimeType(fileInfo, accept) {
6223
+ const mimeType = fileInfo.mime.toLowerCase();
6224
+ const acceptTypes = accept.split(",").map((type) => type.trim().toLowerCase());
6225
+ return acceptTypes.some((acceptedType) => {
6226
+ if (acceptedType === "*/*") {
6227
+ return true;
6228
+ }
6229
+ if (acceptedType.endsWith("/*")) {
6230
+ const baseType = acceptedType.split("/")[0];
6231
+ return mimeType.startsWith(baseType + "/");
6232
+ }
6233
+ if (acceptedType.includes("/")) {
6234
+ return mimeType === acceptedType;
6235
+ }
6236
+ if (acceptedType.startsWith(".")) {
6237
+ return fileInfo.ext.toLowerCase().endsWith(acceptedType);
6238
+ }
6239
+ return false;
6240
+ });
6225
6241
  }
6226
6242
 
6227
6243
  // ../helpers/src/files/index.ts
@@ -6237,6 +6253,9 @@ function toFileObject(fileInfo) {
6237
6253
  __REQUENCE_type: "RequenceFile"
6238
6254
  };
6239
6255
  }
6256
+ function isFileObject(data) {
6257
+ return fileObjectSchema.safeParse(data).success;
6258
+ }
6240
6259
 
6241
6260
  // ../helpers/src/context/context.ts
6242
6261
  var contextSchema = z2.object({
@@ -6403,6 +6422,23 @@ var acceptKeyword = {
6403
6422
  pattern: "^\\s*(?:\\w+/\\*|\\w+/[-+.\\w]+)(?:\\s*,\\s*(?:\\w+/\\*|\\w+/[-+.\\w]+))*\\s*$"
6404
6423
  }
6405
6424
  };
6425
+ var acceptKeywordEnforced = {
6426
+ ...acceptKeyword,
6427
+ compile: (accept) => function validate(data) {
6428
+ const errors = validate.errors = [];
6429
+ if (isFileObject(data)) {
6430
+ const ext = data.url.split(".").at(-1)?.toLowerCase() ?? "???";
6431
+ if (!isValidMimeType({ ext, mime: data.mime }, accept)) {
6432
+ errors.push({ message: `must be of type ${accept}` });
6433
+ return false;
6434
+ }
6435
+ } else {
6436
+ errors.push({ message: "invalid file type" });
6437
+ return false;
6438
+ }
6439
+ return true;
6440
+ }
6441
+ };
6406
6442
  var requenceTypeKeywords = {
6407
6443
  keyword: "requenceType",
6408
6444
  metaSchema: {
@@ -6433,16 +6469,34 @@ var maxByteLengthKeyword = {
6433
6469
  minimum: 0
6434
6470
  }
6435
6471
  };
6472
+ var maxByteLengthKeywordEnforced = {
6473
+ ...maxByteLengthKeyword,
6474
+ compile: (maxByteLength) => function validate(data) {
6475
+ const errors = validate.errors = [];
6476
+ if (isFileObject(data)) {
6477
+ if (data.size > maxByteLength) {
6478
+ errors.push({
6479
+ message: `file size must by lower tan ${maxByteLength}`
6480
+ });
6481
+ return false;
6482
+ }
6483
+ } else {
6484
+ errors.push({ message: "invalid file type" });
6485
+ return false;
6486
+ }
6487
+ return true;
6488
+ }
6489
+ };
6436
6490
 
6437
6491
  class Ajv extends import_ajv.Ajv {
6438
6492
  constructor(options) {
6439
6493
  super({
6440
6494
  ...options,
6441
6495
  keywords: [
6442
- acceptKeyword,
6496
+ options?.enforeFileKeywords ? acceptKeywordEnforced : acceptKeyword,
6497
+ options?.enforeFileKeywords ? maxByteLengthKeywordEnforced : maxByteLengthKeyword,
6443
6498
  requenceTypeKeywords,
6444
- instanceOfKeyword,
6445
- maxByteLengthKeyword
6499
+ instanceOfKeyword
6446
6500
  ]
6447
6501
  });
6448
6502
  }
@@ -6925,6 +6979,46 @@ function createContextHelper(options) {
6925
6979
  };
6926
6980
  }
6927
6981
 
6982
+ // src/mapInput.ts
6983
+ class RequenceFile {
6984
+ file;
6985
+ mimeType;
6986
+ size;
6987
+ constructor(file) {
6988
+ this.file = file;
6989
+ this.mimeType = file.mime;
6990
+ this.size = file.size;
6991
+ }
6992
+ request() {
6993
+ return fetch(this.file.url);
6994
+ }
6995
+ async arrayBuffer() {
6996
+ const response = await this.request();
6997
+ return response.arrayBuffer();
6998
+ }
6999
+ async blob() {
7000
+ const response = await this.request();
7001
+ return response.blob();
7002
+ }
7003
+ async json() {
7004
+ const response = await this.request();
7005
+ return response.json();
7006
+ }
7007
+ async text() {
7008
+ const response = await this.request();
7009
+ return response.text();
7010
+ }
7011
+ }
7012
+ function mapInput(data) {
7013
+ return mapData(data, {
7014
+ Object(obj) {
7015
+ if (isFileObject(obj)) {
7016
+ return new RequenceFile(obj);
7017
+ }
7018
+ }
7019
+ });
7020
+ }
7021
+
6928
7022
  // src/createAmqpConnection.ts
6929
7023
  var messageKeySchema = z8.string().transform((str) => deobfuscate(str)).pipe(z8.array(z8.string().uuid()).length(3)).transform((arr) => ({
6930
7024
  taskId: arr[0],
@@ -7035,8 +7129,8 @@ function createConnection({
7035
7129
  let immediateUpdateState;
7036
7130
  const extendedContext = createContextHelper({
7037
7131
  serviceId,
7038
- context: payload.context,
7039
- nodes: payload.meta.nodes,
7132
+ context: mapInput(payload.context),
7133
+ nodes: mapInput(payload.meta.nodes),
7040
7134
  taskId,
7041
7135
  state: payload.meta.state,
7042
7136
  onStateChange(newState) {
@@ -7259,5 +7353,5 @@ export {
7259
7353
  createService
7260
7354
  };
7261
7355
 
7262
- //# debugId=918786BF4BD2280F64756E2164756E21
7356
+ //# debugId=2BC6A73D071849F464756E2164756E21
7263
7357
  //# sourceMappingURL=index.js.map