diff --git a/packages/commons/dist/component.cjs b/packages/commons/dist/component.cjs new file mode 100644 index 00000000..256abd97 --- /dev/null +++ b/packages/commons/dist/component.cjs @@ -0,0 +1,151 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var component_exports = {}; +__export(component_exports, { + AssetsSchema: () => AssetsSchema, + AuthorSchema: () => AuthorSchema, + ComponentConfigSchema: () => ComponentConfigSchema, + ContentSchema: () => ContentSchema, + ProductionSchema: () => ProductionSchema, + get: () => get +}); +module.exports = __toCommonJS(component_exports); +var path = __toESM(require("path"), 1); +var import_zod = require("zod"); +var import_filter = require("./filter.js"); +var import_glob = require("./fs/_glob.js"); +var import_variables = require("./variables.js"); +var import_config = require("./config.js"); +const AuthorSchema = import_zod.z.object({ + name: import_zod.z.string(), + url: import_zod.z.string() +}); +const ContentSchema = import_zod.z.object({ + body: import_zod.z.string().optional(), + features: import_zod.z.string().optional(), + highlights: import_zod.z.string().optional(), + specs: import_zod.z.string().optional(), + license: import_zod.z.string().optional() +}); +const AssetsSchema = import_zod.z.object({ + gallery: import_zod.z.array(import_zod.z.string()).optional(), + renderings: import_zod.z.array(import_zod.z.string()).optional(), + components: import_zod.z.array(import_zod.z.string()).optional() +}); +const ProductionSchema = import_zod.z.object({ + "fusion-folder": import_zod.z.string(), + "nc-folder": import_zod.z.string(), + cam: import_zod.z.array(AuthorSchema) +}); +const ComponentConfigSchema = import_zod.z.object({ + // shop + cart_id: import_zod.z.string().optional(), + code: import_zod.z.string(), + price: import_zod.z.number().optional(), + cscartCats: import_zod.z.array(import_zod.z.number()).optional(), + cscartId: import_zod.z.number().optional(), + vendorId: import_zod.z.number().optional(), + //internal + version: import_zod.z.string().optional(), + status: import_zod.z.string().optional(), + authors: import_zod.z.array(AuthorSchema).optional(), + replaced_by: import_zod.z.string().optional(), + alternatives: import_zod.z.array(import_zod.z.string()).optional(), + flags: import_zod.z.number().optional(), + // public + download: import_zod.z.boolean().optional(), + name: import_zod.z.string(), + edrawings: import_zod.z.string().optional(), + showDimensions: import_zod.z.boolean().optional(), + showParts: import_zod.z.boolean().optional(), + slug: import_zod.z.string(), + score: import_zod.z.number().optional(), + Preview3d: import_zod.z.boolean().optional(), + keywords: import_zod.z.string().optional(), + meta_keywords: import_zod.z.string().optional(), + content: ContentSchema.optional(), + assets: AssetsSchema.optional(), + /** + * @deprecated + */ + howto_categories: import_zod.z.union([import_zod.z.string(), import_zod.z.array(import_zod.z.string())]).optional(), + steps: import_zod.z.any().optional(), + sourceLanguage: import_zod.z.string().optional(), + category: import_zod.z.string(), + product_dimensions: import_zod.z.string().optional(), + production: ProductionSchema.optional() +}).passthrough(); +const find_items = (nodes, options) => { + nodes = nodes.filter(options.filter); + return nodes.map((c) => { + const root = (0, import_variables.resolve)(options.root, false, {}); + return { + rel: (0, import_glob.forward_slash)(`${path.relative(root, path.parse(c).dir)}`), + path: (0, import_glob.forward_slash)(`${options.root}/${path.relative(root, c)}`), + config: (0, import_config.readOSRConfig)(c) + }; + }); +}; +const get = (src, root, type) => { + const srcInfo = (0, import_glob.pathInfoEx)(src, false, { + absolute: true + }); + switch (type) { + case import_filter.PFilterValid.marketplace_component: { + const options = { + filter: import_filter.isValidMarketplaceComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + case import_filter.PFilterValid.library_component: { + const options = { + filter: import_filter.isValidLibraryComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + case import_filter.PFilterInvalid.marketplace_component: { + const options = { + filter: import_filter.isInvalidMarketplaceComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AssetsSchema, + AuthorSchema, + ComponentConfigSchema, + ContentSchema, + ProductionSchema, + get +}); +//# sourceMappingURL=component.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/component.cjs.map b/packages/commons/dist/component.cjs.map new file mode 100644 index 00000000..189743ef --- /dev/null +++ b/packages/commons/dist/component.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/component.ts"],"sourcesContent":["import * as path from 'path'\r\nimport * as fs from 'fs'\r\nimport { z } from \"zod\";\r\n\r\n// Author schema\r\nexport const AuthorSchema = z.object({\r\n name: z.string(),\r\n url: z.string(),\r\n});\r\n\r\n// Content schema\r\nexport const ContentSchema = z.object({\r\n body: z.string().optional(),\r\n features: z.string().optional(),\r\n highlights: z.string().optional(),\r\n specs: z.string().optional(),\r\n license: z.string().optional()\r\n});\r\n\r\n// Assets schema\r\nexport const AssetsSchema = z.object({\r\n gallery: z.array(z.string()).optional(),\r\n renderings: z.array(z.string()).optional(),\r\n components: z.array(z.string()).optional()\r\n});\r\n\r\n// Production schema\r\nexport const ProductionSchema = z.object({\r\n \"fusion-folder\": z.string(),\r\n \"nc-folder\": z.string(),\r\n cam: z.array(AuthorSchema),\r\n});\r\n\r\n// Component config schema\r\nexport const ComponentConfigSchema = z.object({\r\n \r\n // shop\r\n cart_id: z.string().optional(),\r\n code: z.string(),\r\n price: z.number().optional(),\r\n cscartCats: z.array(z.number()).optional(),\r\n cscartId: z.number().optional(),\r\n vendorId: z.number().optional(),\r\n\r\n //internal\r\n version: z.string().optional(),\r\n status: z.string().optional(),\r\n authors: z.array(AuthorSchema).optional(),\r\n replaced_by: z.string().optional(),\r\n alternatives: z.array(z.string()).optional(),\r\n flags: z.number().optional(),\r\n \r\n\r\n // public\r\n download: z.boolean().optional(),\r\n name: z.string(),\r\n \r\n edrawings: z.string().optional(),\r\n showDimensions: z.boolean().optional(),\r\n showParts: z.boolean().optional(), \r\n slug: z.string(),\r\n score: z.number().optional(),\r\n \r\n Preview3d: z.boolean().optional(),\r\n keywords: z.string().optional(),\r\n meta_keywords: z.string().optional(),\r\n\r\n content: ContentSchema.optional(),\r\n assets: AssetsSchema.optional(),\r\n \r\n /**\r\n * @deprecated\r\n */\r\n howto_categories: z.union([z.string(), z.array(z.string())]).optional(),\r\n steps: z.any().optional(),\r\n sourceLanguage: z.string().optional(),\r\n category: z.string(),\r\n product_dimensions: z.string().optional(),\r\n production: ProductionSchema.optional(),\r\n}).passthrough();\r\n\r\nexport type IComponentConfig = z.infer;\r\n\r\nimport { isInvalidMarketplaceComponent, isValidLibraryComponent, isValidMarketplaceComponent, PFilterInvalid, PFilterValid } from './filter.js'\r\nimport { forward_slash, pathInfoEx } from './fs/_glob.js'\r\nimport { resolve } from './variables.js'\r\nimport { readOSRConfig } from './config.js'\r\n\r\nconst find_items = (nodes: string[], options) => {\r\n nodes = nodes.filter(options.filter)\r\n return nodes.map((c) => {\r\n const root = resolve(options.root, false, {})\r\n return {\r\n rel: forward_slash(`${path.relative(root, path.parse(c).dir)}`),\r\n path: forward_slash(`${options.root}/${path.relative(root, c)}`),\r\n config: readOSRConfig(c)\r\n }\r\n })\r\n}\r\n\r\nexport const get = (src, root, type) => {\r\n const srcInfo = pathInfoEx(src, false, {\r\n absolute: true\r\n })\r\n switch (type) {\r\n case PFilterValid.marketplace_component: {\r\n const options = {\r\n filter: isValidMarketplaceComponent,\r\n root\r\n }\r\n return find_items(srcInfo.FILES, options)\r\n }\r\n\r\n case PFilterValid.library_component: {\r\n const options = {\r\n filter: isValidLibraryComponent,\r\n root\r\n }\r\n return find_items(srcInfo.FILES, options)\r\n }\r\n\r\n case PFilterInvalid.marketplace_component: {\r\n const options = {\r\n filter: isInvalidMarketplaceComponent,\r\n root\r\n }\r\n return find_items(srcInfo.FILES, options)\r\n }\r\n }\r\n}\r\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/component.d.cts b/packages/commons/dist/component.d.cts new file mode 100644 index 00000000..f075d636 --- /dev/null +++ b/packages/commons/dist/component.d.cts @@ -0,0 +1,381 @@ +import { z } from 'zod'; + +declare const AuthorSchema: z.ZodObject<{ + name: z.ZodString; + url: z.ZodString; +}, "strip", z.ZodTypeAny, { + name?: string; + url?: string; +}, { + name?: string; + url?: string; +}>; +declare const ContentSchema: z.ZodObject<{ + body: z.ZodOptional; + features: z.ZodOptional; + highlights: z.ZodOptional; + specs: z.ZodOptional; + license: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; +}, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; +}>; +declare const AssetsSchema: z.ZodObject<{ + gallery: z.ZodOptional>; + renderings: z.ZodOptional>; + components: z.ZodOptional>; +}, "strip", z.ZodTypeAny, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; +}, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; +}>; +declare const ProductionSchema: z.ZodObject<{ + "fusion-folder": z.ZodString; + "nc-folder": z.ZodString; + cam: z.ZodArray, "many">; +}, "strip", z.ZodTypeAny, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; +}, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; +}>; +declare const ComponentConfigSchema: z.ZodObject<{ + cart_id: z.ZodOptional; + code: z.ZodString; + price: z.ZodOptional; + cscartCats: z.ZodOptional>; + cscartId: z.ZodOptional; + vendorId: z.ZodOptional; + version: z.ZodOptional; + status: z.ZodOptional; + authors: z.ZodOptional, "many">>; + replaced_by: z.ZodOptional; + alternatives: z.ZodOptional>; + flags: z.ZodOptional; + download: z.ZodOptional; + name: z.ZodString; + edrawings: z.ZodOptional; + showDimensions: z.ZodOptional; + showParts: z.ZodOptional; + slug: z.ZodString; + score: z.ZodOptional; + Preview3d: z.ZodOptional; + keywords: z.ZodOptional; + meta_keywords: z.ZodOptional; + content: z.ZodOptional; + features: z.ZodOptional; + highlights: z.ZodOptional; + specs: z.ZodOptional; + license: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }>>; + assets: z.ZodOptional>; + renderings: z.ZodOptional>; + components: z.ZodOptional>; + }, "strip", z.ZodTypeAny, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }>>; + /** + * @deprecated + */ + howto_categories: z.ZodOptional]>>; + steps: z.ZodOptional; + sourceLanguage: z.ZodOptional; + category: z.ZodString; + product_dimensions: z.ZodOptional; + production: z.ZodOptional, "many">; + }, "strip", z.ZodTypeAny, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }>>; +}, "passthrough", z.ZodTypeAny, z.objectOutputType<{ + cart_id: z.ZodOptional; + code: z.ZodString; + price: z.ZodOptional; + cscartCats: z.ZodOptional>; + cscartId: z.ZodOptional; + vendorId: z.ZodOptional; + version: z.ZodOptional; + status: z.ZodOptional; + authors: z.ZodOptional, "many">>; + replaced_by: z.ZodOptional; + alternatives: z.ZodOptional>; + flags: z.ZodOptional; + download: z.ZodOptional; + name: z.ZodString; + edrawings: z.ZodOptional; + showDimensions: z.ZodOptional; + showParts: z.ZodOptional; + slug: z.ZodString; + score: z.ZodOptional; + Preview3d: z.ZodOptional; + keywords: z.ZodOptional; + meta_keywords: z.ZodOptional; + content: z.ZodOptional; + features: z.ZodOptional; + highlights: z.ZodOptional; + specs: z.ZodOptional; + license: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }>>; + assets: z.ZodOptional>; + renderings: z.ZodOptional>; + components: z.ZodOptional>; + }, "strip", z.ZodTypeAny, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }>>; + /** + * @deprecated + */ + howto_categories: z.ZodOptional]>>; + steps: z.ZodOptional; + sourceLanguage: z.ZodOptional; + category: z.ZodString; + product_dimensions: z.ZodOptional; + production: z.ZodOptional, "many">; + }, "strip", z.ZodTypeAny, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }>>; +}, z.ZodTypeAny, "passthrough">, z.objectInputType<{ + cart_id: z.ZodOptional; + code: z.ZodString; + price: z.ZodOptional; + cscartCats: z.ZodOptional>; + cscartId: z.ZodOptional; + vendorId: z.ZodOptional; + version: z.ZodOptional; + status: z.ZodOptional; + authors: z.ZodOptional, "many">>; + replaced_by: z.ZodOptional; + alternatives: z.ZodOptional>; + flags: z.ZodOptional; + download: z.ZodOptional; + name: z.ZodString; + edrawings: z.ZodOptional; + showDimensions: z.ZodOptional; + showParts: z.ZodOptional; + slug: z.ZodString; + score: z.ZodOptional; + Preview3d: z.ZodOptional; + keywords: z.ZodOptional; + meta_keywords: z.ZodOptional; + content: z.ZodOptional; + features: z.ZodOptional; + highlights: z.ZodOptional; + specs: z.ZodOptional; + license: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }, { + body?: string; + features?: string; + highlights?: string; + specs?: string; + license?: string; + }>>; + assets: z.ZodOptional>; + renderings: z.ZodOptional>; + components: z.ZodOptional>; + }, "strip", z.ZodTypeAny, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }, { + gallery?: string[]; + renderings?: string[]; + components?: string[]; + }>>; + /** + * @deprecated + */ + howto_categories: z.ZodOptional]>>; + steps: z.ZodOptional; + sourceLanguage: z.ZodOptional; + category: z.ZodString; + product_dimensions: z.ZodOptional; + production: z.ZodOptional, "many">; + }, "strip", z.ZodTypeAny, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }, { + "fusion-folder"?: string; + "nc-folder"?: string; + cam?: { + name?: string; + url?: string; + }[]; + }>>; +}, z.ZodTypeAny, "passthrough">>; +type IComponentConfig = z.infer; +declare const get: (src: any, root: any, type: any) => { + rel: any; + path: any; + config: any; +}[]; + +export { AssetsSchema, AuthorSchema, ComponentConfigSchema, ContentSchema, type IComponentConfig, ProductionSchema, get }; diff --git a/packages/commons/dist/config.cjs b/packages/commons/dist/config.cjs new file mode 100644 index 00000000..a9541f95 --- /dev/null +++ b/packages/commons/dist/config.cjs @@ -0,0 +1,148 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var config_exports = {}; +__export(config_exports, { + CONFIG_DEFAULT: () => CONFIG_DEFAULT, + CONFIG_DEFAULT_PATH: () => CONFIG_DEFAULT_PATH, + DEFAULT_ROOTS: () => DEFAULT_ROOTS, + HOME: () => HOME, + KB_ROOT: () => KB_ROOT, + OA_ROOT: () => OA_ROOT, + OSR_CACHE: () => OSR_CACHE, + OSR_CUSTOMER_DRIVE: () => OSR_CUSTOMER_DRIVE, + OSR_LIBRARY: () => OSR_LIBRARY, + OSR_LIBRARY_DIRECTORY: () => OSR_LIBRARY_DIRECTORY, + OSR_LIBRARY_MACHINES: () => OSR_LIBRARY_MACHINES, + OSR_PRIVATE: () => OSR_PRIVATE, + OSR_ROOT: () => OSR_ROOT, + OSR_SUB_DEFAULT: () => OSR_SUB_DEFAULT, + OSR_TEMP: () => OSR_TEMP, + OSR_USER_ASSETS: () => OSR_USER_ASSETS, + POLYMECH_ROOT: () => POLYMECH_ROOT, + PRODUCT_ROOT: () => PRODUCT_ROOT, + get_var: () => get_var, + readNPMMeta: () => readNPMMeta, + readOSRConfig: () => readOSRConfig, + readOSRMeta: () => readOSRMeta, + readPackage: () => readPackage +}); +module.exports = __toCommonJS(config_exports); +var path = __toESM(require("path"), 1); +var import_env_var = __toESM(require("env-var"), 1); +var import_read = require("@polymech/fs/read"); +var import_exists = require("@polymech/fs/exists"); +var import_primitives = require("@polymech/core/primitives"); +var import_constants = require("./constants.js"); +const { get } = import_env_var.default; +const HOME = (sub = "") => path.join(process.env[process.platform == "win32" ? "USERPROFILE" : "HOME"], sub); +const get_var = (key = "") => get(key).asString() || get(key.replace(/-/g, "_")).asString() || get(key.replace(/_/g, "-")).asString(); +const OSR_ROOT = (key = "OSR-ROOT") => get_var(key) || path.join(HOME("desktop"), import_constants.API_PREFIX); +const OSR_SUB_DEFAULT = (key = "") => get_var(key) || path.join(OSR_ROOT(), key); +const CONFIG_DEFAULT_PATH = (key = "OSR-CONFIG") => get_var(key) || path.join(HOME(`${import_constants.API_PREFIX}`), ".config.json"); +const OSR_TEMP = (key = "OSR-TEMP") => get_var(key) || OSR_SUB_DEFAULT(`.${import_constants.API_PREFIX}/temp`); +const OSR_CACHE = (key = "OSR-CACHE") => get_var(key) || OSR_SUB_DEFAULT(`.${import_constants.API_PREFIX}/cache`); +const OSR_PRIVATE = (key = "OSR-PRIVATE") => get_var(key); +const KB_ROOT = (key = "OSR-KB") => get_var(key); +const OSR_LIBRARY = (key = "OSR-LIBRARY") => get_var(key); +const OSR_LIBRARY_MACHINES = (key = "OSR-LIBRARY-MACHINES") => get_var(key); +const OSR_LIBRARY_DIRECTORY = (key = "OSR-LIBRARY-DIRECTORY") => get_var(key); +const PRODUCT_ROOT = (key = "PRODUCT-ROOT") => get_var(key); +const OSR_CUSTOMER_DRIVE = (key = "OSR-CUSTOMER-DRIVE") => get_var(key); +const OA_ROOT = (key = "OA-ROOT") => get_var(key); +const OSR_USER_ASSETS = (key = "OSR-USER-ASSETS") => get_var(key); +const POLYMECH_ROOT = (key = "POLYMECH-ROOT") => get_var(key) || path.join(HOME("desktop"), import_constants.API_PREFIX_NEXT); +const DEFAULT_ROOTS = { + OSR_ROOT: OSR_ROOT(), + OSR_TEMP: OSR_TEMP(), + PRODUCT_ROOT: PRODUCT_ROOT(), + OA_ROOT: OA_ROOT(), + KB_ROOT: KB_ROOT(), + OSR_CACHE: OSR_CACHE(), + OSR_LIBRARY: OSR_LIBRARY(), + OSR_LIBRARY_MACHINES: OSR_LIBRARY_MACHINES(), + OSR_LIBRARY_DIRECTORY: OSR_LIBRARY_DIRECTORY(), + OSR_USER_ASSETS: OSR_USER_ASSETS(), + OSR_PRIVATE: OSR_PRIVATE(), + OSR_TEMPLATES: path.join(OSR_SUB_DEFAULT("osr-templates")), + OSR_CONTENT: path.join(OSR_SUB_DEFAULT("osr-content")), + OSR_PROFILES: path.join(OSR_SUB_DEFAULT("osr-profiles")), + OSR_CUSTOMER_DRIVE: OSR_CUSTOMER_DRIVE(), + POLYMECH_ROOT: POLYMECH_ROOT() +}; +const CONFIG_DEFAULT = (key = "OSR-CONFIG") => { + const cPath = path.resolve(CONFIG_DEFAULT_PATH(key)); + if ((0, import_exists.sync)(cPath)) { + return (0, import_read.sync)(cPath, "json"); + } + return false; +}; +const readNPMMeta = (_path) => (0, import_read.sync)(_path, "json") || {}; +const readPackage = (val) => { + if ((0, import_primitives.isString)(val)) { + return readNPMMeta(val); + } else if ((0, import_primitives.isObject)(val)) { + return val; + } + return {}; +}; +const readOSRMeta = (_path) => (0, import_read.sync)(_path, "json"); +const readOSRConfig = (val) => { + if ((0, import_primitives.isString)(val)) { + return readOSRMeta(val); + } else if ((0, import_primitives.isObject)(val)) { + return val; + } + return null; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + CONFIG_DEFAULT, + CONFIG_DEFAULT_PATH, + DEFAULT_ROOTS, + HOME, + KB_ROOT, + OA_ROOT, + OSR_CACHE, + OSR_CUSTOMER_DRIVE, + OSR_LIBRARY, + OSR_LIBRARY_DIRECTORY, + OSR_LIBRARY_MACHINES, + OSR_PRIVATE, + OSR_ROOT, + OSR_SUB_DEFAULT, + OSR_TEMP, + OSR_USER_ASSETS, + POLYMECH_ROOT, + PRODUCT_ROOT, + get_var, + readNPMMeta, + readOSRConfig, + readOSRMeta, + readPackage +}); +//# sourceMappingURL=config.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/config.cjs.map b/packages/commons/dist/config.cjs.map new file mode 100644 index 00000000..8c1c701c --- /dev/null +++ b/packages/commons/dist/config.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import * as path from 'path'\r\nimport pkg from 'env-var';\r\nconst { get } = pkg;\r\n\r\nimport { sync as read } from '@polymech/fs/read'\r\nimport { sync as exists } from '@polymech/fs/exists'\r\nimport { isString, isObject } from '@polymech/core/primitives'\r\nimport { API_PREFIX, API_NAMESPACE, API_PREFIX_NEXT } from './constants.js'\r\n\r\nexport const HOME = (sub = '') => path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], sub)\r\nexport const get_var = (key: string = '') => get(key).asString() || get(key.replace(/-/g, '_')).asString() || get(key.replace(/_/g, '-')).asString()\r\n\r\nexport const OSR_ROOT = (key: string = 'OSR-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX)\r\nexport const OSR_SUB_DEFAULT = (key: string = '') => get_var(key) || path.join(OSR_ROOT(), key)\r\nexport const CONFIG_DEFAULT_PATH = (key: string = 'OSR-CONFIG') => get_var(key) || path.join(HOME(`${API_PREFIX}`), '.config.json')\r\n\r\nexport const OSR_TEMP = (key: string = 'OSR-TEMP') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/temp`)\r\nexport const OSR_CACHE = (key: string = 'OSR-CACHE') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/cache`)\r\n\r\nexport const OSR_PRIVATE = (key: string = 'OSR-PRIVATE') => get_var(key)\r\nexport const KB_ROOT = (key: string = 'OSR-KB') => get_var(key)\r\nexport const OSR_LIBRARY = (key: string = 'OSR-LIBRARY') => get_var(key)\r\nexport const OSR_LIBRARY_MACHINES = (key: string = 'OSR-LIBRARY-MACHINES') => get_var(key)\r\nexport const OSR_LIBRARY_DIRECTORY = (key: string = 'OSR-LIBRARY-DIRECTORY') => get_var(key)\r\n\r\nexport const PRODUCT_ROOT = (key: string = 'PRODUCT-ROOT') => get_var(key)\r\nexport const OSR_CUSTOMER_DRIVE = (key: string = 'OSR-CUSTOMER-DRIVE') => get_var(key)\r\n\r\nexport const OA_ROOT = (key: string = 'OA-ROOT') => get_var(key)\r\nexport const OSR_USER_ASSETS = (key: string = 'OSR-USER-ASSETS') => get_var(key)\r\n\r\nexport const POLYMECH_ROOT = (key: string = 'POLYMECH-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX_NEXT)\r\n\r\nexport const DEFAULT_ROOTS = {\r\n OSR_ROOT: OSR_ROOT(),\r\n OSR_TEMP: OSR_TEMP(),\r\n PRODUCT_ROOT: PRODUCT_ROOT(),\r\n OA_ROOT: OA_ROOT(),\r\n KB_ROOT: KB_ROOT(),\r\n OSR_CACHE: OSR_CACHE(),\r\n OSR_LIBRARY: OSR_LIBRARY(),\r\n OSR_LIBRARY_MACHINES: OSR_LIBRARY_MACHINES(),\r\n OSR_LIBRARY_DIRECTORY: OSR_LIBRARY_DIRECTORY(),\r\n OSR_USER_ASSETS: OSR_USER_ASSETS(),\r\n OSR_PRIVATE: OSR_PRIVATE(),\r\n OSR_TEMPLATES: path.join(OSR_SUB_DEFAULT('osr-templates')),\r\n OSR_CONTENT: path.join(OSR_SUB_DEFAULT('osr-content')),\r\n OSR_PROFILES: path.join(OSR_SUB_DEFAULT('osr-profiles')),\r\n OSR_CUSTOMER_DRIVE: OSR_CUSTOMER_DRIVE(),\r\n POLYMECH_ROOT: POLYMECH_ROOT()\r\n}\r\n\r\nexport const CONFIG_DEFAULT = (key: string = 'OSR-CONFIG') => {\r\n const cPath = path.resolve(CONFIG_DEFAULT_PATH(key));\r\n if (exists(cPath)) {\r\n return read(cPath, 'json');\r\n }\r\n return false;\r\n}\r\n\r\nimport { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'\r\nimport { IComponentConfig } from './component.js';\r\n\r\n//////////////////////////////////////////////////////\r\n//\r\n// NPM related\r\n\r\nexport const readNPMMeta = (_path: string) => read(_path, 'json') as JSONSchemaForNPMPackageJsonFiles || {}\r\nexport const readPackage = (val): JSONSchemaForNPMPackageJsonFiles => {\r\n if (isString(val)) {\r\n return readNPMMeta(val)\r\n } else if (isObject(val)) {\r\n return val\r\n }\r\n return {}\r\n}\r\n\r\n//////////////////////////////////////////////////////\r\n//\r\n// OSR related\r\n\r\nexport const readOSRMeta = (_path: string) => read(_path, 'json') as IComponentConfig\r\nexport const readOSRConfig = (val) => {\r\n if (isString(val)) {\r\n return readOSRMeta(val)\r\n } else if (isObject(val)) {\r\n return val\r\n }\r\n return null\r\n}"],"mappings":"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","names":["pkg","exists","read"]} \ No newline at end of file diff --git a/packages/commons/dist/config.d.cts b/packages/commons/dist/config.d.cts new file mode 100644 index 00000000..035564ae --- /dev/null +++ b/packages/commons/dist/config.d.cts @@ -0,0 +1,47 @@ +import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; +import { IComponentConfig } from './component.cjs'; +import 'zod'; + +declare const HOME: (sub?: string) => string; +declare const get_var: (key?: string) => string; +declare const OSR_ROOT: (key?: string) => string; +declare const OSR_SUB_DEFAULT: (key?: string) => string; +declare const CONFIG_DEFAULT_PATH: (key?: string) => string; +declare const OSR_TEMP: (key?: string) => string; +declare const OSR_CACHE: (key?: string) => string; +declare const OSR_PRIVATE: (key?: string) => string; +declare const KB_ROOT: (key?: string) => string; +declare const OSR_LIBRARY: (key?: string) => string; +declare const OSR_LIBRARY_MACHINES: (key?: string) => string; +declare const OSR_LIBRARY_DIRECTORY: (key?: string) => string; +declare const PRODUCT_ROOT: (key?: string) => string; +declare const OSR_CUSTOMER_DRIVE: (key?: string) => string; +declare const OA_ROOT: (key?: string) => string; +declare const OSR_USER_ASSETS: (key?: string) => string; +declare const POLYMECH_ROOT: (key?: string) => string; +declare const DEFAULT_ROOTS: { + OSR_ROOT: string; + OSR_TEMP: string; + PRODUCT_ROOT: string; + OA_ROOT: string; + KB_ROOT: string; + OSR_CACHE: string; + OSR_LIBRARY: string; + OSR_LIBRARY_MACHINES: string; + OSR_LIBRARY_DIRECTORY: string; + OSR_USER_ASSETS: string; + OSR_PRIVATE: string; + OSR_TEMPLATES: string; + OSR_CONTENT: string; + OSR_PROFILES: string; + OSR_CUSTOMER_DRIVE: string; + POLYMECH_ROOT: string; +}; +declare const CONFIG_DEFAULT: (key?: string) => string | false | object; + +declare const readNPMMeta: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +declare const readPackage: (val: any) => JSONSchemaForNPMPackageJsonFiles; +declare const readOSRMeta: (_path: string) => IComponentConfig; +declare const readOSRConfig: (val: any) => any; + +export { CONFIG_DEFAULT, CONFIG_DEFAULT_PATH, DEFAULT_ROOTS, HOME, KB_ROOT, OA_ROOT, OSR_CACHE, OSR_CUSTOMER_DRIVE, OSR_LIBRARY, OSR_LIBRARY_DIRECTORY, OSR_LIBRARY_MACHINES, OSR_PRIVATE, OSR_ROOT, OSR_SUB_DEFAULT, OSR_TEMP, OSR_USER_ASSETS, POLYMECH_ROOT, PRODUCT_ROOT, get_var, readNPMMeta, readOSRConfig, readOSRMeta, readPackage }; diff --git a/packages/commons/dist/constants.cjs b/packages/commons/dist/constants.cjs new file mode 100644 index 00000000..3b9c601d --- /dev/null +++ b/packages/commons/dist/constants.cjs @@ -0,0 +1,58 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var constants_exports = {}; +__export(constants_exports, { + API_NAMESPACE: () => API_NAMESPACE, + API_PREFIX: () => API_PREFIX, + API_PREFIX_NEXT: () => API_PREFIX_NEXT, + MODULE_NAME: () => MODULE_NAME, + OA_LATEST: () => OA_LATEST, + OA_LATEST_CENSORED: () => OA_LATEST_CENSORED, + OA_LATEST_INVALID: () => OA_LATEST_INVALID, + OA_LATEST_MERGED: () => OA_LATEST_MERGED, + PP_BAZAR_LATEST_INDEX: () => PP_BAZAR_LATEST_INDEX, + PP_BAZAR_LATEST_INDEX_MERGED: () => PP_BAZAR_LATEST_INDEX_MERGED, + PROFILE_FILE_NAME: () => PROFILE_FILE_NAME +}); +module.exports = __toCommonJS(constants_exports); +const MODULE_NAME = `OSR-Commons`; +const PROFILE_FILE_NAME = `.osrl.json`; +const OA_LATEST = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json"; +const OA_LATEST_INVALID = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json"; +const OA_LATEST_CENSORED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json"; +const OA_LATEST_MERGED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json"; +const PP_BAZAR_LATEST_INDEX = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json"; +const PP_BAZAR_LATEST_INDEX_MERGED = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json"; +const API_NAMESPACE = "@polymech"; +const API_PREFIX = "polymech"; +const API_PREFIX_NEXT = "polymech"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + API_NAMESPACE, + API_PREFIX, + API_PREFIX_NEXT, + MODULE_NAME, + OA_LATEST, + OA_LATEST_CENSORED, + OA_LATEST_INVALID, + OA_LATEST_MERGED, + PP_BAZAR_LATEST_INDEX, + PP_BAZAR_LATEST_INDEX_MERGED, + PROFILE_FILE_NAME +}); +//# sourceMappingURL=constants.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/constants.cjs.map b/packages/commons/dist/constants.cjs.map new file mode 100644 index 00000000..6b7e5b29 --- /dev/null +++ b/packages/commons/dist/constants.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const MODULE_NAME = `OSR-Commons`\r\nexport const PROFILE_FILE_NAME = `.osrl.json`\r\n////////////////////////////////////////\r\n//\r\n// OA Migration\r\n\r\nexport const OA_LATEST = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json'\r\nexport const OA_LATEST_INVALID = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json'\r\nexport const OA_LATEST_CENSORED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json'\r\nexport const OA_LATEST_MERGED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json'\r\n\r\n// fecking bazar\r\nexport const PP_BAZAR_LATEST_INDEX = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json'\r\nexport const PP_BAZAR_LATEST_INDEX_MERGED = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json'\r\n\r\n// Namespaces\r\nexport const API_NAMESPACE = '@polymech'\r\nexport const API_PREFIX = 'polymech'\r\nexport const API_PREFIX_NEXT = 'polymech'"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;AACpB,MAAM,oBAAoB;AAK1B,MAAM,YAAY;AAClB,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AAGzB,MAAM,wBAAwB;AAC9B,MAAM,+BAA+B;AAGrC,MAAM,gBAAgB;AACtB,MAAM,aAAa;AACnB,MAAM,kBAAkB;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/constants.d.cts b/packages/commons/dist/constants.d.cts new file mode 100644 index 00000000..b951c5d3 --- /dev/null +++ b/packages/commons/dist/constants.d.cts @@ -0,0 +1,13 @@ +declare const MODULE_NAME = "OSR-Commons"; +declare const PROFILE_FILE_NAME = ".osrl.json"; +declare const OA_LATEST = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json"; +declare const OA_LATEST_INVALID = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json"; +declare const OA_LATEST_CENSORED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json"; +declare const OA_LATEST_MERGED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json"; +declare const PP_BAZAR_LATEST_INDEX = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json"; +declare const PP_BAZAR_LATEST_INDEX_MERGED = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json"; +declare const API_NAMESPACE = "@polymech"; +declare const API_PREFIX = "polymech"; +declare const API_PREFIX_NEXT = "polymech"; + +export { API_NAMESPACE, API_PREFIX, API_PREFIX_NEXT, MODULE_NAME, OA_LATEST, OA_LATEST_CENSORED, OA_LATEST_INVALID, OA_LATEST_MERGED, PP_BAZAR_LATEST_INDEX, PP_BAZAR_LATEST_INDEX_MERGED, PROFILE_FILE_NAME }; diff --git a/packages/commons/dist/filter.cjs b/packages/commons/dist/filter.cjs new file mode 100644 index 00000000..c7121b9b --- /dev/null +++ b/packages/commons/dist/filter.cjs @@ -0,0 +1,101 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var filter_exports = {}; +__export(filter_exports, { + FiltersValid: () => FiltersValid, + PFilterInvalid: () => PFilterInvalid, + PFilterValid: () => PFilterValid, + hasDependency: () => hasDependency, + isAPIPackage: () => isAPIPackage, + isInvalidMarketplaceComponent: () => isInvalidMarketplaceComponent, + isValidLibraryComponent: () => isValidLibraryComponent, + isValidMarketplaceComponent: () => isValidMarketplaceComponent +}); +module.exports = __toCommonJS(filter_exports); +var path = __toESM(require("path"), 1); +var import_exists = require("@polymech/fs/exists"); +var import_constants = require("./constants.js"); +var import_config = require("./config.js"); +const isAPIPackage = (_path) => { + const pkg = (0, import_config.readPackage)(_path); + return (pkg.name || "").startsWith(`${import_constants.API_NAMESPACE}/${import_constants.API_PREFIX}`) ? pkg : null; +}; +const hasDependency = (pkg, dep) => { + pkg = (0, import_config.readPackage)(pkg); + return Object.keys(pkg.dependencies || {}).concat(Object.keys(pkg.devDependencies || {})).find((d) => d === dep); +}; +const isValidMarketplaceComponent = (_path) => { + const pkg = (0, import_config.readOSRConfig)(_path); + if (!pkg || !pkg.name || !pkg.slug || !pkg.code) { + return false; + } + return true; +}; +const isInvalidMarketplaceComponent = (_path) => { + const pkg = (0, import_config.readOSRConfig)(_path); + if (pkg && !pkg.name || !pkg.slug || !pkg.code) { + return true; + } + return false; +}; +const isValidLibraryComponent = (_path) => { + const pkg = (0, import_config.readOSRConfig)(_path); + if (!pkg || !pkg.name) { + return false; + } + const templatePath = path.resolve(`${path.parse(_path).dir}/templates/shared/body.md`); + if (!(0, import_exists.sync)(templatePath)) { + return false; + } + return true; +}; +const PFilterInvalid = { + marketplace_component: "invalid_marketplace_component" +}; +const PFilterValid = { + marketplace_component: "marketplace_component", + library_component: "library_component", + package: "package" +}; +const FiltersValid = { + "marketplace_component": isValidMarketplaceComponent, + "library_component": isValidLibraryComponent, + "package": isAPIPackage +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + FiltersValid, + PFilterInvalid, + PFilterValid, + hasDependency, + isAPIPackage, + isInvalidMarketplaceComponent, + isValidLibraryComponent, + isValidMarketplaceComponent +}); +//# sourceMappingURL=filter.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/filter.cjs.map b/packages/commons/dist/filter.cjs.map new file mode 100644 index 00000000..4badcb59 --- /dev/null +++ b/packages/commons/dist/filter.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/filter.ts"],"sourcesContent":["import * as path from 'path'\r\nimport { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'\r\nimport { sync as exists } from '@polymech/fs/exists'\r\n\r\nimport {\r\n API_NAMESPACE,\r\n API_PREFIX \r\n} from './constants.js'\r\n\r\nimport {\r\n readPackage,\r\n readOSRConfig\r\n} from './config.js'\r\n\r\n//////////////////////////////////////////////////////\r\n//\r\n// NPM related\r\n\r\nexport const isAPIPackage = (_path: string) => {\r\n const pkg = readPackage(_path)\r\n return (pkg.name || '').startsWith(`${API_NAMESPACE}/${API_PREFIX}`) ? pkg : null\r\n}\r\n\r\nexport const hasDependency = (pkg: string | JSONSchemaForNPMPackageJsonFiles, dep: string) => {\r\n pkg = readPackage(pkg)\r\n return Object.keys((pkg.dependencies || {})).\r\n concat( Object.keys(pkg.devDependencies || {})).\r\n find((d:string)=> d === dep)\r\n}\r\n\r\n//////////////////////////////////////////////////////\r\n//\r\n// OSR related\r\n\r\nexport const isValidMarketplaceComponent = (_path: string) => {\r\n const pkg = readOSRConfig(_path)\r\n if( !pkg ||\r\n !pkg.name ||\r\n !pkg.slug ||\r\n !pkg.code){\r\n return false\r\n }\r\n return true \r\n}\r\n\r\nexport const isInvalidMarketplaceComponent = (_path: string) => {\r\n const pkg = readOSRConfig(_path)\r\n if( pkg &&\r\n !pkg.name ||\r\n !pkg.slug ||\r\n !pkg.code){\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport const isValidLibraryComponent = (_path: string) => {\r\n const pkg = readOSRConfig(_path)\r\n if( !pkg || !pkg.name){\r\n return false\r\n }\r\n const templatePath = path.resolve(`${path.parse(_path).dir}/templates/shared/body.md`)\r\n if(!exists(templatePath)){\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport const PFilterInvalid = {\r\n marketplace_component: 'invalid_marketplace_component'\r\n}\r\n\r\nexport const PFilterValid = {\r\n marketplace_component: 'marketplace_component',\r\n library_component: 'library_component',\r\n package: 'package'\r\n}\r\n\r\nexport const FiltersValid =\r\n{\r\n 'marketplace_component': isValidMarketplaceComponent,\r\n 'library_component': isValidLibraryComponent,\r\n 'package' : isAPIPackage\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAsB;AAEtB,oBAA+B;AAE/B,uBAGO;AAEP,oBAGO;AAMA,MAAM,eAAe,CAAC,UAAkB;AAC3C,QAAM,UAAM,2BAAY,KAAK;AAC7B,UAAQ,IAAI,QAAQ,IAAI,WAAW,GAAG,8BAAa,IAAI,2BAAU,EAAE,IAAI,MAAM;AACjF;AAEO,MAAM,gBAAgB,CAAC,KAAgD,QAAgB;AAC1F,YAAM,2BAAY,GAAG;AACrB,SAAQ,OAAO,KAAM,IAAI,gBAAgB,CAAC,CAAE,EACpC,OAAQ,OAAO,KAAK,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAC9C,KAAK,CAAC,MAAY,MAAM,GAAG;AACvC;AAMO,MAAM,8BAA8B,CAAC,UAAkB;AAC1D,QAAM,UAAM,6BAAc,KAAK;AAC/B,MAAI,CAAC,OACD,CAAC,IAAI,QACL,CAAC,IAAI,QACL,CAAC,IAAI,MAAK;AACV,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEO,MAAM,gCAAgC,CAAC,UAAkB;AAC5D,QAAM,UAAM,6BAAc,KAAK;AAC/B,MAAI,OACA,CAAC,IAAI,QACL,CAAC,IAAI,QACL,CAAC,IAAI,MAAK;AACV,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEO,MAAM,0BAA0B,CAAC,UAAkB;AACtD,QAAM,UAAM,6BAAc,KAAK;AAC/B,MAAI,CAAC,OAAO,CAAC,IAAI,MAAK;AAClB,WAAO;AAAA,EACX;AACA,QAAM,eAAgB,KAAK,QAAQ,GAAG,KAAK,MAAM,KAAK,EAAE,GAAG,2BAA2B;AACtF,MAAG,KAAC,cAAAA,MAAO,YAAY,GAAE;AACrB,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEO,MAAM,iBAAiB;AAAA,EAC1B,uBAAuB;AAC3B;AAEO,MAAM,eAAe;AAAA,EACxB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,SAAS;AACb;AAEO,MAAM,eACb;AAAA,EACI,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,WAAY;AAChB;","names":["exists"]} \ No newline at end of file diff --git a/packages/commons/dist/filter.d.cts b/packages/commons/dist/filter.d.cts new file mode 100644 index 00000000..4c3e6683 --- /dev/null +++ b/packages/commons/dist/filter.d.cts @@ -0,0 +1,22 @@ +import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; + +declare const isAPIPackage: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +declare const hasDependency: (pkg: string | JSONSchemaForNPMPackageJsonFiles, dep: string) => string; +declare const isValidMarketplaceComponent: (_path: string) => boolean; +declare const isInvalidMarketplaceComponent: (_path: string) => boolean; +declare const isValidLibraryComponent: (_path: string) => boolean; +declare const PFilterInvalid: { + marketplace_component: string; +}; +declare const PFilterValid: { + marketplace_component: string; + library_component: string; + package: string; +}; +declare const FiltersValid: { + marketplace_component: (_path: string) => boolean; + library_component: (_path: string) => boolean; + package: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +}; + +export { FiltersValid, PFilterInvalid, PFilterValid, hasDependency, isAPIPackage, isInvalidMarketplaceComponent, isValidLibraryComponent, isValidMarketplaceComponent }; diff --git a/packages/commons/dist/fs.cjs b/packages/commons/dist/fs.cjs new file mode 100644 index 00000000..cf2cc58d --- /dev/null +++ b/packages/commons/dist/fs.cjs @@ -0,0 +1,77 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var fs_exports = {}; +__export(fs_exports, { + UNC_REGEX: () => UNC_REGEX, + WIN32_PATH_REGEX: () => WIN32_PATH_REGEX, + isFile: () => isFile, + isFolder: () => isFolder, + is_absolute: () => is_absolute +}); +module.exports = __toCommonJS(fs_exports); +var fs = __toESM(require("fs"), 1); +var import_os = require("./os.js"); +const UNC_REGEX = /^[\\\/]{2,}[^\\\/]+[\\\/]+[^\\\/]+/; +const WIN32_PATH_REGEX = /^([a-z]:)?[\\\/]/i; +const isFile = (src) => { + let srcIsFile = false; + try { + srcIsFile = fs.lstatSync(src).isFile(); + } catch (e) { + } + return srcIsFile; +}; +const isFolder = (src) => { + let srcIsFolder = false; + try { + srcIsFolder = fs.lstatSync(src).isDirectory(); + } catch (e) { + } + return srcIsFolder; +}; +const is_relative_win32 = (fp) => !fp.test(UNC_REGEX) && !WIN32_PATH_REGEX.test(fp); +const is_absolute_posix = (fp) => fp.charAt(0) === "/"; +const is_absolute_win32 = (fp) => { + if (/[a-z]/i.test(fp.charAt(0)) && fp.charAt(1) === ":" && fp.charAt(2) === "\\") { + return true; + } + if (fp.slice(0, 2) === "\\\\") { + return true; + } + return !is_relative_win32(fp); +}; +const is_absolute = (fp) => (0, import_os.is_windows)() ? is_absolute_win32(fp) : is_absolute_posix(fp); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + UNC_REGEX, + WIN32_PATH_REGEX, + isFile, + isFolder, + is_absolute +}); +//# sourceMappingURL=fs.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/fs.cjs.map b/packages/commons/dist/fs.cjs.map new file mode 100644 index 00000000..0aaa61c3 --- /dev/null +++ b/packages/commons/dist/fs.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/fs.ts"],"sourcesContent":["import * as fs from 'fs'\r\n\r\n// https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#namespaces\r\n// https://github.com/isaacs/node-glob/blob/main/src/pattern.ts\r\n\r\nexport const UNC_REGEX = /^[\\\\\\/]{2,}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+/\r\nexport const WIN32_PATH_REGEX = /^([a-z]:)?[\\\\\\/]/i\r\n\r\nimport { is_windows } from './os.js'\r\n\r\n\r\nexport const isFile = (src: string) => {\r\n let srcIsFile = false;\r\n try {\r\n srcIsFile = fs.lstatSync(src).isFile()\r\n } catch (e) { }\r\n return srcIsFile\r\n}\r\n\r\nexport const isFolder = (src: string) => {\r\n let srcIsFolder = false;\r\n try {\r\n srcIsFolder = fs.lstatSync(src).isDirectory()\r\n } catch (e) { }\r\n return srcIsFolder;\r\n}\r\n\r\nconst is_relative_win32 = (fp) => !fp.test(UNC_REGEX) && !WIN32_PATH_REGEX.test(fp)\r\nconst is_absolute_posix = (fp) => fp.charAt(0) === '/'\r\nconst is_absolute_win32 = (fp) => {\r\n if (/[a-z]/i.test(fp.charAt(0)) && fp.charAt(1) === ':' && fp.charAt(2) === '\\\\') {\r\n return true\r\n }\r\n // Microsoft Azure absolute filepath\r\n if (fp.slice(0, 2) === '\\\\\\\\') {\r\n return true;\r\n }\r\n return !is_relative_win32(fp)\r\n}\r\nexport const is_absolute = (fp) => is_windows() ? is_absolute_win32(fp) : is_absolute_posix(fp)\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AAQpB,gBAA2B;AAHpB,MAAM,YAAY;AAClB,MAAM,mBAAmB;AAKzB,MAAM,SAAS,CAAC,QAAgB;AACnC,MAAI,YAAY;AAChB,MAAI;AACA,gBAAY,GAAG,UAAU,GAAG,EAAE,OAAO;AAAA,EACzC,SAAS,GAAG;AAAA,EAAE;AACd,SAAO;AACX;AAEO,MAAM,WAAW,CAAC,QAAgB;AACrC,MAAI,cAAc;AAClB,MAAI;AACA,kBAAc,GAAG,UAAU,GAAG,EAAE,YAAY;AAAA,EAChD,SAAS,GAAG;AAAA,EAAE;AACd,SAAO;AACX;AAEA,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,iBAAiB,KAAK,EAAE;AAClF,MAAM,oBAAoB,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;AACnD,MAAM,oBAAoB,CAAC,OAAO;AAC9B,MAAI,SAAS,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,MAAM;AAC9E,WAAO;AAAA,EACX;AAEA,MAAI,GAAG,MAAM,GAAG,CAAC,MAAM,QAAQ;AAC3B,WAAO;AAAA,EACX;AACA,SAAO,CAAC,kBAAkB,EAAE;AAChC;AACO,MAAM,cAAc,CAAC,WAAQ,sBAAW,IAAI,kBAAkB,EAAE,IAAI,kBAAkB,EAAE;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/fs.d.cts b/packages/commons/dist/fs.d.cts new file mode 100644 index 00000000..18d91260 --- /dev/null +++ b/packages/commons/dist/fs.d.cts @@ -0,0 +1,7 @@ +declare const UNC_REGEX: RegExp; +declare const WIN32_PATH_REGEX: RegExp; +declare const isFile: (src: string) => boolean; +declare const isFolder: (src: string) => boolean; +declare const is_absolute: (fp: any) => boolean; + +export { UNC_REGEX, WIN32_PATH_REGEX, isFile, isFolder, is_absolute }; diff --git a/packages/commons/dist/index.cjs b/packages/commons/dist/index.cjs new file mode 100644 index 00000000..55478972 --- /dev/null +++ b/packages/commons/dist/index.cjs @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var index_exports = {}; +module.exports = __toCommonJS(index_exports); +__reExport(index_exports, require("./fs.js"), module.exports); +__reExport(index_exports, require("./config.js"), module.exports); +__reExport(index_exports, require("./os.js"), module.exports); +__reExport(index_exports, require("./paths.js"), module.exports); +__reExport(index_exports, require("./variables.js"), module.exports); +__reExport(index_exports, require("./profile.js"), module.exports); +__reExport(index_exports, require("./types.js"), module.exports); +__reExport(index_exports, require("./constants.js"), module.exports); +__reExport(index_exports, require("./fs/_glob.js"), module.exports); +__reExport(index_exports, require("./component.js"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./fs.js"), + ...require("./config.js"), + ...require("./os.js"), + ...require("./paths.js"), + ...require("./variables.js"), + ...require("./profile.js"), + ...require("./types.js"), + ...require("./constants.js"), + ...require("./fs/_glob.js"), + ...require("./component.js") +}); +//# sourceMappingURL=index.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/index.cjs.map b/packages/commons/dist/index.cjs.map new file mode 100644 index 00000000..b0f2d238 --- /dev/null +++ b/packages/commons/dist/index.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './fs.js'\r\nexport * from './config.js'\r\nexport * from './os.js'\r\nexport * from './paths.js'\r\nexport * from './variables.js'\r\nexport * from './profile.js'\r\nexport * from './types.js'\r\nexport * from './constants.js'\r\nexport * from './fs/_glob.js'\r\nexport * from './component.js'\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,oBAAd;AACA,0BAAc,wBADd;AAEA,0BAAc,oBAFd;AAGA,0BAAc,uBAHd;AAIA,0BAAc,2BAJd;AAKA,0BAAc,yBALd;AAMA,0BAAc,uBANd;AAOA,0BAAc,2BAPd;AAQA,0BAAc,0BARd;AASA,0BAAc,2BATd;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/index.d.cts b/packages/commons/dist/index.d.cts new file mode 100644 index 00000000..f9520242 --- /dev/null +++ b/packages/commons/dist/index.d.cts @@ -0,0 +1,42 @@ +export { UNC_REGEX, WIN32_PATH_REGEX, isFile, isFolder, is_absolute } from './fs.cjs'; +export { CONFIG_DEFAULT, CONFIG_DEFAULT_PATH, DEFAULT_ROOTS, HOME, KB_ROOT, OA_ROOT, OSR_CACHE, OSR_CUSTOMER_DRIVE, OSR_LIBRARY, OSR_LIBRARY_DIRECTORY, OSR_LIBRARY_MACHINES, OSR_PRIVATE, OSR_ROOT, OSR_SUB_DEFAULT, OSR_TEMP, OSR_USER_ASSETS, POLYMECH_ROOT, PRODUCT_ROOT, get_var, readNPMMeta, readOSRConfig, readOSRMeta, readPackage } from './config.cjs'; +export { EArch, EPlatform, is_windows } from './os.cjs'; +export { DATE_VARS, DEFAULT_VARS, _substitute, resolve, resolveVariables, substitute } from './variables.cjs'; +export { IProfile, parse, resolveConfig } from './profile.cjs'; +export { IConvertedFileMeta, IDiscourseUser, IGeo, IGeoLocation, IGeo_Administrative, IGeo_Informative, IGeo_LocalityInfo, IImage, IMAchineBuilderXp, IModerable, IModerationStatus, INotification, IOA_Service, IOA_UserDetail, IOSRUserData, IOpeningHours, IPlasticType, IProduct, IProfileType, ISODateString, IUploadedFileMeta, IUrl, IUser, IUserDB, IUserPP, IUserPPDB, IUserState, IWorkspaceType, I_OSR_USER, I_USER_SHORT, MachineBuilderXpLabel, NotificationType, PlasticTypeLabel, TOSR_User_Type, WorkspaceType } from './types.cjs'; +export { API_NAMESPACE, API_PREFIX, API_PREFIX_NEXT, MODULE_NAME, OA_LATEST, OA_LATEST_CENSORED, OA_LATEST_INVALID, OA_LATEST_MERGED, PP_BAZAR_LATEST_INDEX, PP_BAZAR_LATEST_INDEX_MERGED, PROFILE_FILE_NAME } from './constants.cjs'; +import { GlobOptions } from 'glob'; +import { PATH_INFO } from './types_common.cjs'; +export { DST_VARIABLES, GeoPos, ICsCartConfig, ICsCartConfigMySQL, IDeeplConfig, IDiscourseConfig, IGiteaConfig, IIgConfig, IOSRConfig, IOptionsBase, IScaleserp, PATH_VARIABLES, SRC_VARIABLES } from './types_common.cjs'; +export { AssetsSchema, AuthorSchema, ComponentConfigSchema, ContentSchema, IComponentConfig, ProductionSchema, get } from './component.cjs'; +export { IKBotOptions } from './types_kbot.cjs'; +import '@schemastore/package'; +import 'zod'; + +/*! + * glob-base + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +interface GlobBaseResult { + base: string; + isGlob: boolean; + glob: string; +} +declare const globBase: (pattern: string) => GlobBaseResult; + +interface Options { + flipBackslashes?: boolean; +} +declare const globParent: (str: string, opts?: Options) => string; + +declare const files: (cwd: any, glob: any, options?: any) => []; +declare const filesEx: (cwd: any, glob: any, options?: GlobOptions) => []; + +declare const getExtensions: (glob: string) => string[]; +declare const forward_slash: (path: any) => any; +declare const pathInfoEx: (src: string, altToken?: boolean, globOptions?: GlobOptions) => PATH_INFO; +declare const pathInfo: (src: string, altToken?: boolean, cwd?: string) => PATH_INFO; + +export { PATH_INFO, files, filesEx, forward_slash, getExtensions, globBase, globParent, pathInfo, pathInfoEx }; diff --git a/packages/commons/dist/logger.cjs b/packages/commons/dist/logger.cjs new file mode 100644 index 00000000..dbb576db --- /dev/null +++ b/packages/commons/dist/logger.cjs @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var logger_exports = {}; +__export(logger_exports, { + MODULE_NAME: () => import_constants2.MODULE_NAME, + createLogger: () => createLogger, + defaultLogger: () => defaultLogger, + logger: () => logger +}); +module.exports = __toCommonJS(logger_exports); +var import_tslog = require("tslog"); +var import_constants = require("./constants.js"); +var import_constants2 = require("./constants.js"); +function createLogger(name, options) { + return new import_tslog.Logger({ + name, + type: "pretty", + ...options + }); +} +const defaultLogger = createLogger("DefaultLogger", { + minLevel: 1 +}); +const logger = createLogger(import_constants.MODULE_NAME, {}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + MODULE_NAME, + createLogger, + defaultLogger, + logger +}); +//# sourceMappingURL=logger.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/logger.cjs.map b/packages/commons/dist/logger.cjs.map new file mode 100644 index 00000000..637916c8 --- /dev/null +++ b/packages/commons/dist/logger.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/logger.ts"],"sourcesContent":["import { ISettingsParam, Logger } from \"tslog\"\r\n\r\nexport function createLogger(name: string, options?: any) {\r\n return new Logger({\r\n name,\r\n type: 'pretty',\r\n ...options,\r\n })\r\n}\r\nexport const defaultLogger = createLogger('DefaultLogger', {\r\n minLevel: 1\r\n})\r\n\r\nimport { MODULE_NAME } from './constants.js'\r\nexport { MODULE_NAME } from './constants.js'\r\n\r\nexport const logger = createLogger(MODULE_NAME, {})\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwC;AAaxC,uBAA4B;AAC5B,IAAAA,oBAA4B;AAZrB,SAAS,aAAa,MAAc,SAAe;AACtD,SAAO,IAAI,oBAAO;AAAA,IACd;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACP,CAAC;AACL;AACO,MAAM,gBAAgB,aAAa,iBAAiB;AAAA,EACvD,UAAU;AACd,CAAC;AAKM,MAAM,SAAS,aAAa,8BAAa,CAAC,CAAC;","names":["import_constants"]} \ No newline at end of file diff --git a/packages/commons/dist/logger.d.cts b/packages/commons/dist/logger.d.cts new file mode 100644 index 00000000..3a962794 --- /dev/null +++ b/packages/commons/dist/logger.d.cts @@ -0,0 +1,9 @@ +import { Logger } from 'tslog'; +export { MODULE_NAME } from './constants.cjs'; + +declare function createLogger(name: string, options?: any): Logger; +declare const defaultLogger: Logger; + +declare const logger: Logger; + +export { createLogger, defaultLogger, logger }; diff --git a/packages/commons/dist/os.cjs b/packages/commons/dist/os.cjs new file mode 100644 index 00000000..c0f96b84 --- /dev/null +++ b/packages/commons/dist/os.cjs @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var os_exports = {}; +__export(os_exports, { + EArch: () => EArch, + EPlatform: () => EPlatform, + is_windows: () => is_windows +}); +module.exports = __toCommonJS(os_exports); +var EPlatform = /* @__PURE__ */ ((EPlatform2) => { + EPlatform2["Linux"] = "linux"; + EPlatform2["Windows"] = "win32"; + EPlatform2["OSX"] = "darwin"; + return EPlatform2; +})(EPlatform || {}); +var EArch = /* @__PURE__ */ ((EArch2) => { + EArch2["x64"] = "64"; + EArch2["x32"] = "32"; + return EArch2; +})(EArch || {}); +const is_windows = () => process && process.platform === "win32"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + EArch, + EPlatform, + is_windows +}); +//# sourceMappingURL=os.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/os.cjs.map b/packages/commons/dist/os.cjs.map new file mode 100644 index 00000000..5bf4e275 --- /dev/null +++ b/packages/commons/dist/os.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/os.ts"],"sourcesContent":["export enum EPlatform {\r\n\tLinux = 'linux',\r\n\tWindows = 'win32',\r\n\tOSX = 'darwin'\r\n}\r\nexport enum EArch {\r\n\tx64 = '64',\r\n\tx32 = '32'\r\n}\r\nexport const is_windows = () => process && (process.platform === 'win32')\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,YAAL,kBAAKA,eAAL;AACN,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,SAAM;AAHK,SAAAA;AAAA,GAAA;AAKL,IAAK,QAAL,kBAAKC,WAAL;AACN,EAAAA,OAAA,SAAM;AACN,EAAAA,OAAA,SAAM;AAFK,SAAAA;AAAA,GAAA;AAIL,MAAM,aAAa,MAAM,WAAY,QAAQ,aAAa;","names":["EPlatform","EArch"]} \ No newline at end of file diff --git a/packages/commons/dist/os.d.cts b/packages/commons/dist/os.d.cts new file mode 100644 index 00000000..088b3147 --- /dev/null +++ b/packages/commons/dist/os.d.cts @@ -0,0 +1,12 @@ +declare enum EPlatform { + Linux = "linux", + Windows = "win32", + OSX = "darwin" +} +declare enum EArch { + x64 = "64", + x32 = "32" +} +declare const is_windows: () => boolean; + +export { EArch, EPlatform, is_windows }; diff --git a/packages/commons/dist/paths.cjs b/packages/commons/dist/paths.cjs new file mode 100644 index 00000000..fd21632f --- /dev/null +++ b/packages/commons/dist/paths.cjs @@ -0,0 +1 @@ +//# sourceMappingURL=paths.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/paths.cjs.map b/packages/commons/dist/paths.cjs.map new file mode 100644 index 00000000..84c51b28 --- /dev/null +++ b/packages/commons/dist/paths.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/paths.d.cts b/packages/commons/dist/paths.d.cts new file mode 100644 index 00000000..223e65e8 --- /dev/null +++ b/packages/commons/dist/paths.d.cts @@ -0,0 +1,2 @@ + +export { } diff --git a/packages/commons/dist/profile.cjs b/packages/commons/dist/profile.cjs new file mode 100644 index 00000000..225dc257 --- /dev/null +++ b/packages/commons/dist/profile.cjs @@ -0,0 +1,112 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var profile_exports = {}; +__export(profile_exports, { + parse: () => parse, + resolveConfig: () => resolveConfig +}); +module.exports = __toCommonJS(profile_exports); +var path = __toESM(require("path"), 1); +var import_constants = require("@polymech/core/constants"); +var import_read = require("@polymech/fs/read"); +var import_exists = require("@polymech/fs/exists"); +var import_types = require("@polymech/core/types"); +var import_variables = require("./variables.js"); +const _resolve = (config) => { + for (const key in config) { + if (config[key] && typeof config[key] == "string") { + const resolved = (0, import_variables.substitute)(false, config[key], config); + config[key] = resolved; + } + } + return config; +}; +const resolveConfig = (config) => { + config = _resolve(config); + config = _resolve(config); + return config; +}; +const parse = (profilePath, profile, options = { env: "default" }, rel) => { + profilePath = path.resolve((0, import_variables.resolve)(profilePath, false, profile.variables)); + if (!(0, import_exists.sync)(profilePath)) { + return; + } + const _profile = (0, import_read.sync)(profilePath, "json") || { includes: [], variables: {} }; + _profile.includes = _profile.includes || []; + _profile.variables = _profile.variables || {}; + if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].includes) { + profile.includes = [ + ...profile.includes, + ..._profile.includes, + ..._profile.env[options.env].includes + ]; + } else { + profile.includes = [ + ...profile.includes, + ..._profile.includes + ]; + } + if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].variables) { + profile.variables = { + ...profile.variables, + ..._profile.variables, + ..._profile.env[options.env].variables + }; + } + for (const k in _profile.variables) { + if ((0, import_types.isString)(_profile.variables[k])) { + _profile.variables[k] = (0, import_variables.substitute)(false, _profile.variables[k], profile.variables); + } + } + profile.variables = { ...profile.variables, ..._profile.variables, ..._profile.env[options.env]?.variables || {} }; + for (const k in profile.variables) { + if ((0, import_types.isString)(profile.variables[k])) { + profile.variables[k] = (0, import_variables.substitute)(false, profile.variables[k], profile.variables); + } + } + profile.includes = Array.from(new Set(profile.includes)); + profile.includes = [ + ...profile.includes.map((i) => { + if (!path.isAbsolute(i) && rel && !i.match(import_constants.REGEX_VAR)) { + return path.resolve(`${rel}/${i}`); + } + let ret = (0, import_variables.resolve)(i, false, profile.variables); + ret = path.resolve((0, import_variables.substitute)(false, ret, profile.variables)); + return ret; + }) + ]; + profile.includes = profile.includes.filter((include) => include !== null && include !== ""); + profile.includes = Array.from(new Set(profile.includes)); + return profile; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + parse, + resolveConfig +}); +//# sourceMappingURL=profile.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/profile.cjs.map b/packages/commons/dist/profile.cjs.map new file mode 100644 index 00000000..b4a833a0 --- /dev/null +++ b/packages/commons/dist/profile.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/profile.ts"],"sourcesContent":["import * as path from 'path'\r\nimport { REGEX_VAR } from \"@polymech/core/constants\"\r\nimport { sync as read } from '@polymech/fs/read'\r\nimport { sync as exists } from '@polymech/fs/exists'\r\nimport { isString } from '@polymech/core/types'\r\n\r\nimport { resolve, substitute } from './variables.js'\r\n\r\ninterface EnvVariables {\r\n [key: string]: string\r\n}\r\n\r\ninterface EnvConfig {\r\n includes: string[]\r\n variables: EnvVariables\r\n}\r\n\r\nexport interface IProfile {\r\n includes: string[]\r\n variables: EnvVariables\r\n env?: {\r\n [key: string]: EnvConfig\r\n }\r\n}\r\n\r\n\r\nconst _resolve = (config) => {\r\n for (const key in config) {\r\n if (config[key] && typeof config[key] == 'string') {\r\n const resolved = substitute(false, config[key], config)\r\n config[key] = resolved\r\n }\r\n }\r\n return config;\r\n}\r\n// @todo: Implement the function `resolveConfig`\r\nexport const resolveConfig = (config) => {\r\n config = _resolve(config)\r\n config = _resolve(config)\r\n return config\r\n}\r\n\r\nexport const parse = (profilePath: string, profile: IProfile, options: { env: string } = { env: 'default' }, rel?: string) => {\r\n profilePath = path.resolve(resolve(profilePath, false, profile.variables))\r\n if (!exists(profilePath as string)) {\r\n return\r\n }\r\n const _profile = read(profilePath as string, 'json') as any || { includes: [], variables: {} } as IProfile\r\n\r\n _profile.includes = _profile.includes || []\r\n _profile.variables = _profile.variables || {}\r\n\r\n if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].includes) {\r\n profile.includes = [\r\n ...profile.includes,\r\n ..._profile.includes,\r\n ..._profile.env[options.env].includes\r\n ]\r\n } else {\r\n profile.includes = [\r\n ...profile.includes,\r\n ..._profile.includes\r\n ]\r\n }\r\n if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].variables) {\r\n profile.variables = {\r\n ...profile.variables,\r\n ..._profile.variables,\r\n ..._profile.env[options.env].variables\r\n }\r\n }\r\n for (const k in _profile.variables) {\r\n if (isString(_profile.variables[k])) {\r\n _profile.variables[k] = substitute(false, _profile.variables[k], profile.variables)\r\n }\r\n }\r\n\r\n profile.variables = { ...profile.variables, ..._profile.variables, ..._profile.env[options.env]?.variables || {} }\r\n for (const k in profile.variables) {\r\n if (isString(profile.variables[k])) {\r\n profile.variables[k] = substitute(false, profile.variables[k], profile.variables)\r\n }\r\n }\r\n profile.includes = Array.from(new Set(profile.includes))\r\n profile.includes = [\r\n ...profile.includes.map((i) => {\r\n if (!path.isAbsolute(i) && rel && !i.match(REGEX_VAR)) {\r\n return path.resolve(`${rel}/${i}`)\r\n }\r\n let ret = resolve(i, false, profile.variables)\r\n ret = path.resolve(substitute(false, ret, profile.variables))\r\n return ret\r\n })]\r\n\r\n profile.includes = profile.includes.filter((include) =>\r\n include !== null &&\r\n include !== '')\r\n profile.includes = Array.from(new Set(profile.includes))\r\n return profile\r\n}"],"mappings":"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","names":["exists","read"]} \ No newline at end of file diff --git a/packages/commons/dist/profile.d.cts b/packages/commons/dist/profile.d.cts new file mode 100644 index 00000000..72cbb47c --- /dev/null +++ b/packages/commons/dist/profile.d.cts @@ -0,0 +1,20 @@ +interface EnvVariables { + [key: string]: string; +} +interface EnvConfig { + includes: string[]; + variables: EnvVariables; +} +interface IProfile { + includes: string[]; + variables: EnvVariables; + env?: { + [key: string]: EnvConfig; + }; +} +declare const resolveConfig: (config: any) => any; +declare const parse: (profilePath: string, profile: IProfile, options?: { + env: string; +}, rel?: string) => IProfile; + +export { type IProfile, parse, resolveConfig }; diff --git a/packages/commons/dist/types.cjs b/packages/commons/dist/types.cjs new file mode 100644 index 00000000..06daf68a --- /dev/null +++ b/packages/commons/dist/types.cjs @@ -0,0 +1,24 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_exports = {}; +module.exports = __toCommonJS(types_exports); +__reExport(types_exports, require("./types_kbot.js"), module.exports); +__reExport(types_exports, require("./types_common.js"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./types_kbot.js"), + ...require("./types_common.js") +}); +//# sourceMappingURL=types.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/types.cjs.map b/packages/commons/dist/types.cjs.map new file mode 100644 index 00000000..9a7dd7d9 --- /dev/null +++ b/packages/commons/dist/types.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface IConvertedFileMeta {\r\n photoData: Blob\r\n objectUrl: string\r\n name: string\r\n type: string\r\n}\r\n\r\nexport interface IUploadedFileMeta {\r\n downloadUrl: string\r\n contentType?: string | null\r\n fullPath: string\r\n name: string\r\n type: string\r\n size: number\r\n timeCreated: string\r\n updated: string\r\n data: any\r\n}\r\n\r\n// Types for moderation status\r\nexport type IModerationStatus =\r\n | 'draft'\r\n | 'awaiting-moderation'\r\n | 'rejected'\r\n | 'accepted'\r\n\r\nexport interface IModerable {\r\n moderation: IModerationStatus\r\n _createdBy?: string\r\n _id?: string\r\n}\r\n\r\nexport type ISODateString = string;\r\n\r\nexport interface IUserState {\r\n user?: IUser\r\n}\r\n// IUser retains most of the fields from legacy users (omitting passwords),\r\n// and has a few additional fields. Note 'email' is excluded\r\n// _uid is unique/fixed identifier\r\n// ALL USER INFO BELOW IS PUBLIC\r\nexport interface IUser {\r\n // authID is additional id populated by firebase auth, required for some auth operations\r\n _authID: string\r\n _lastActive?: ISODateString\r\n // userName is same as legacy 'mention_name', e.g. @my-name. It will also be the doc _id and\r\n // firebase auth displayName property\r\n userName: string\r\n displayName: string\r\n moderation: IModerationStatus\r\n // note, user avatar url is taken direct from userName so no longer populated here\r\n // avatar:string\r\n verified: boolean\r\n badges?: IUserBadges\r\n // images will be in different formats if they are pending upload vs pulled from db\r\n coverImages: IUploadedFileMeta[] | IConvertedFileMeta[]\r\n links: IExternalLink[]\r\n userRoles?: string[]\r\n about?: string | null\r\n DHSite_id?: number\r\n DHSite_mention_name?: string\r\n country?: string | null\r\n // location?: ILocation | null\r\n year?: ISODateString\r\n stats?: IUserStats\r\n /** keep a map of all howto ids that a user has voted as useful */\r\n votedUsefulHowtos?: { [howtoId: string]: boolean }\r\n /** keep a map of all Research ids that a user has voted as useful */\r\n votedUsefulResearch?: { [researchId: string]: boolean }\r\n notifications?: INotification[]\r\n}\r\n\r\ninterface IUserBadges {\r\n verified: boolean\r\n}\r\n\r\ninterface IExternalLink {\r\n url: string\r\n label:\r\n | 'email'\r\n | 'website'\r\n | 'discord'\r\n | 'bazar'\r\n | 'forum'\r\n | 'social media'\r\n | 'facebook'\r\n | 'instagram'\r\n | 'github'\r\n | 'linkedin'\r\n | 'map'\r\n | 'forum'\r\n | 'marketplace'\r\n | 'other'\r\n | 'other-2'\r\n}\r\n\r\n/**\r\n * Track the ids and moderation status as summary for user stats\r\n */\r\ninterface IUserStats {\r\n userCreatedHowtos: { [id: string]: IModerationStatus }\r\n userCreatedResearch: { [id: string]: IModerationStatus }\r\n userCreatedEvents: { [id: string]: IModerationStatus }\r\n}\r\n\r\nexport type IUserDB = IUser;\r\n\r\nexport interface INotification {\r\n _id: string\r\n _created: string\r\n triggeredBy: {\r\n displayName: string\r\n userId: string\r\n }\r\n relevantUrl?: string\r\n type: NotificationType\r\n read: boolean\r\n}\r\n\r\nexport type NotificationType =\r\n | 'new_comment'\r\n | 'howto_useful'\r\n | 'new_comment_research'\r\n | 'research_useful'\r\n\r\n\r\nexport type PlasticTypeLabel =\r\n | 'pet'\r\n | 'hdpe'\r\n | 'pvc'\r\n | 'ldpe'\r\n | 'pp'\r\n | 'ps'\r\n | 'other'\r\n\r\nexport type MachineBuilderXpLabel =\r\n | 'electronics'\r\n | 'machining'\r\n | 'welding'\r\n | 'assembling'\r\n | 'mould-making'\r\n | 'development'\r\n\r\nexport type WorkspaceType =\r\n | 'shredder'\r\n | 'sheetpress'\r\n | 'extrusion'\r\n | 'injection'\r\n | 'mix'\r\n | 'machine shop'\r\n | 'service'\r\n | 'educational'\r\n | 'supplier'\r\n | '3dprint'\r\n\r\nexport type TOSR_User_Type = \r\n | 'Precious Plastic'\r\n | 'OSR-Plastic'\r\n | 'Unknown'\r\n | 'User Contact'\r\n | 'Crawler'\r\n | 'Fablab'\r\n | 'OSE'\r\n | 'Meetup'\r\n\r\nexport interface IPlasticType {\r\n label: PlasticTypeLabel\r\n number: string\r\n imageSrc?: string\r\n}\r\n\r\nexport interface IProfileType {\r\n label: string;\r\n imageSrc?: string\r\n cleanImageSrc?: string\r\n cleanImageVerifiedSrc?: string\r\n textLabel?: string\r\n}\r\nexport interface IWorkspaceType {\r\n label: WorkspaceType\r\n imageSrc?: string\r\n textLabel?: string\r\n subText?: string\r\n}\r\n\r\nexport interface IMAchineBuilderXp {\r\n label: MachineBuilderXpLabel\r\n}\r\n\r\nexport interface IOpeningHours {\r\n day: string\r\n openFrom: string\r\n openTo: string\r\n}\r\n\r\n/**\r\n * PP users can have a bunch of custom meta fields depending on profile type\r\n */\r\nexport interface IUserPP extends IUser {\r\n profileType: string;\r\n workspaceType?: WorkspaceType | null\r\n mapPinDescription?: string | null\r\n openingHours?: IOpeningHours[]\r\n collectedPlasticTypes?: PlasticTypeLabel[] | null\r\n machineBuilderXp?: IMAchineBuilderXp[] | null\r\n isExpert?: boolean | null\r\n isV4Member?: boolean | null\r\n}\r\n\r\nexport type IUserPPDB = IUserPP;\r\n\r\n\r\n///////////////////////////////////////////////////////////////////\r\n//\r\n// OSR Specific Namespace\r\n\r\nexport interface IGeoLocation {\r\n lng: number;\r\n lat: number;\r\n}\r\n\r\nexport interface IOA_UserDetail {\r\n lastActive: Date;\r\n profilePicUrl: string;\r\n shortDescription: string;\r\n heroImageUrl: string;\r\n name: string;\r\n profileUrl: string;\r\n}\r\n\r\nexport interface IGeo_Administrative {\r\n name: string;\r\n description: string;\r\n isoName: string;\r\n order: number;\r\n adminLevel: number;\r\n isoCode: string;\r\n wikidataId: string;\r\n geonameId: number;\r\n}\r\n\r\nexport interface IGeo_Informative {\r\n name: string;\r\n description: string;\r\n order: number;\r\n isoCode: string;\r\n wikidataId: string;\r\n geonameId: number;\r\n}\r\n\r\nexport interface IGeo_LocalityInfo {\r\n administrative: IGeo_Administrative[];\r\n informative: IGeo_Informative[];\r\n}\r\n\r\nexport interface IGeo {\r\n latitude: number;\r\n longitude: number;\r\n continent: string;\r\n lookupSource: string;\r\n continentCode: string;\r\n localityLanguageRequested: string;\r\n city: string;\r\n countryName: string;\r\n postcode: string;\r\n countryCode: string;\r\n principalSubdivision: string;\r\n principalSubdivisionCode: string;\r\n plusCode: string;\r\n locality: string;\r\n localityInfo: IGeo_LocalityInfo;\r\n}\r\n\r\nexport interface IUrl {\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport interface IOA_Service {\r\n welding: boolean;\r\n assembling: boolean;\r\n machining: boolean;\r\n electronics: boolean;\r\n molds: boolean;\r\n}\r\n\r\nexport interface IImage {\r\n url: string;\r\n}\r\n\r\nexport interface IOSRUserData {\r\n urls: IUrl[];\r\n description: string;\r\n services: IOA_Service[];\r\n title: string;\r\n images: IImage[];\r\n jsError?:boolean\r\n}\r\n\r\nexport interface I_OSR_USER {\r\n _created: Date;\r\n location: IGeoLocation;\r\n _modified: Date;\r\n _id: string;\r\n detail: IOA_UserDetail;\r\n type: string;\r\n _deleted: boolean;\r\n moderation: string;\r\n geo: IGeo;\r\n data: IOSRUserData;\r\n}\r\n\r\nexport interface I_USER_SHORT {\r\n name: string;\r\n email: string;\r\n bazar: string;\r\n web: string;\r\n social: string;\r\n censored: string;\r\n lastActive: Date;\r\n ig: string;\r\n}\r\n\r\nexport type IProduct = {\r\n slug: string;\r\n name: string;\r\n category: string;\r\n code: string;\r\n forum?: string;\r\n forumCategory?: string;\r\n version?: string;\r\n cart_id?: string;\r\n};\r\n\r\nexport interface IDiscourseUser {\r\n id: number\r\n username: string\r\n name: string\r\n avatar_template: string\r\n active: boolean\r\n admin: boolean\r\n moderator: boolean\r\n last_seen_at: any\r\n last_emailed_at: string\r\n created_at: string\r\n last_seen_age: any\r\n last_emailed_age: number\r\n created_at_age: number\r\n trust_level: number\r\n manual_locked_trust_level: any\r\n flag_level: number\r\n title: any\r\n time_read: number\r\n staged: boolean\r\n days_visited: number\r\n posts_read_count: number\r\n topics_entered: number\r\n post_count: number\r\n \r\n }\r\n \r\n export * from './types_kbot.js'\r\n export * from './types_common.js'\r\n\r\n "],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;AAyWI,0BAAc,4BAzWlB;AA0WI,0BAAc,8BA1WlB;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types.d.cts b/packages/commons/dist/types.d.cts new file mode 100644 index 00000000..085bbfdb --- /dev/null +++ b/packages/commons/dist/types.d.cts @@ -0,0 +1,267 @@ +export { IKBotOptions } from './types_kbot.cjs'; +export { DST_VARIABLES, GeoPos, ICsCartConfig, ICsCartConfigMySQL, IDeeplConfig, IDiscourseConfig, IGiteaConfig, IIgConfig, IOSRConfig, IOptionsBase, IScaleserp, PATH_INFO, PATH_VARIABLES, SRC_VARIABLES } from './types_common.cjs'; + +interface IConvertedFileMeta { + photoData: Blob; + objectUrl: string; + name: string; + type: string; +} +interface IUploadedFileMeta { + downloadUrl: string; + contentType?: string | null; + fullPath: string; + name: string; + type: string; + size: number; + timeCreated: string; + updated: string; + data: any; +} +type IModerationStatus = 'draft' | 'awaiting-moderation' | 'rejected' | 'accepted'; +interface IModerable { + moderation: IModerationStatus; + _createdBy?: string; + _id?: string; +} +type ISODateString = string; +interface IUserState { + user?: IUser; +} +interface IUser { + _authID: string; + _lastActive?: ISODateString; + userName: string; + displayName: string; + moderation: IModerationStatus; + verified: boolean; + badges?: IUserBadges; + coverImages: IUploadedFileMeta[] | IConvertedFileMeta[]; + links: IExternalLink[]; + userRoles?: string[]; + about?: string | null; + DHSite_id?: number; + DHSite_mention_name?: string; + country?: string | null; + year?: ISODateString; + stats?: IUserStats; + /** keep a map of all howto ids that a user has voted as useful */ + votedUsefulHowtos?: { + [howtoId: string]: boolean; + }; + /** keep a map of all Research ids that a user has voted as useful */ + votedUsefulResearch?: { + [researchId: string]: boolean; + }; + notifications?: INotification[]; +} +interface IUserBadges { + verified: boolean; +} +interface IExternalLink { + url: string; + label: 'email' | 'website' | 'discord' | 'bazar' | 'forum' | 'social media' | 'facebook' | 'instagram' | 'github' | 'linkedin' | 'map' | 'forum' | 'marketplace' | 'other' | 'other-2'; +} +/** + * Track the ids and moderation status as summary for user stats + */ +interface IUserStats { + userCreatedHowtos: { + [id: string]: IModerationStatus; + }; + userCreatedResearch: { + [id: string]: IModerationStatus; + }; + userCreatedEvents: { + [id: string]: IModerationStatus; + }; +} +type IUserDB = IUser; +interface INotification { + _id: string; + _created: string; + triggeredBy: { + displayName: string; + userId: string; + }; + relevantUrl?: string; + type: NotificationType; + read: boolean; +} +type NotificationType = 'new_comment' | 'howto_useful' | 'new_comment_research' | 'research_useful'; +type PlasticTypeLabel = 'pet' | 'hdpe' | 'pvc' | 'ldpe' | 'pp' | 'ps' | 'other'; +type MachineBuilderXpLabel = 'electronics' | 'machining' | 'welding' | 'assembling' | 'mould-making' | 'development'; +type WorkspaceType = 'shredder' | 'sheetpress' | 'extrusion' | 'injection' | 'mix' | 'machine shop' | 'service' | 'educational' | 'supplier' | '3dprint'; +type TOSR_User_Type = 'Precious Plastic' | 'OSR-Plastic' | 'Unknown' | 'User Contact' | 'Crawler' | 'Fablab' | 'OSE' | 'Meetup'; +interface IPlasticType { + label: PlasticTypeLabel; + number: string; + imageSrc?: string; +} +interface IProfileType { + label: string; + imageSrc?: string; + cleanImageSrc?: string; + cleanImageVerifiedSrc?: string; + textLabel?: string; +} +interface IWorkspaceType { + label: WorkspaceType; + imageSrc?: string; + textLabel?: string; + subText?: string; +} +interface IMAchineBuilderXp { + label: MachineBuilderXpLabel; +} +interface IOpeningHours { + day: string; + openFrom: string; + openTo: string; +} +/** + * PP users can have a bunch of custom meta fields depending on profile type + */ +interface IUserPP extends IUser { + profileType: string; + workspaceType?: WorkspaceType | null; + mapPinDescription?: string | null; + openingHours?: IOpeningHours[]; + collectedPlasticTypes?: PlasticTypeLabel[] | null; + machineBuilderXp?: IMAchineBuilderXp[] | null; + isExpert?: boolean | null; + isV4Member?: boolean | null; +} +type IUserPPDB = IUserPP; +interface IGeoLocation { + lng: number; + lat: number; +} +interface IOA_UserDetail { + lastActive: Date; + profilePicUrl: string; + shortDescription: string; + heroImageUrl: string; + name: string; + profileUrl: string; +} +interface IGeo_Administrative { + name: string; + description: string; + isoName: string; + order: number; + adminLevel: number; + isoCode: string; + wikidataId: string; + geonameId: number; +} +interface IGeo_Informative { + name: string; + description: string; + order: number; + isoCode: string; + wikidataId: string; + geonameId: number; +} +interface IGeo_LocalityInfo { + administrative: IGeo_Administrative[]; + informative: IGeo_Informative[]; +} +interface IGeo { + latitude: number; + longitude: number; + continent: string; + lookupSource: string; + continentCode: string; + localityLanguageRequested: string; + city: string; + countryName: string; + postcode: string; + countryCode: string; + principalSubdivision: string; + principalSubdivisionCode: string; + plusCode: string; + locality: string; + localityInfo: IGeo_LocalityInfo; +} +interface IUrl { + name: string; + url: string; +} +interface IOA_Service { + welding: boolean; + assembling: boolean; + machining: boolean; + electronics: boolean; + molds: boolean; +} +interface IImage { + url: string; +} +interface IOSRUserData { + urls: IUrl[]; + description: string; + services: IOA_Service[]; + title: string; + images: IImage[]; + jsError?: boolean; +} +interface I_OSR_USER { + _created: Date; + location: IGeoLocation; + _modified: Date; + _id: string; + detail: IOA_UserDetail; + type: string; + _deleted: boolean; + moderation: string; + geo: IGeo; + data: IOSRUserData; +} +interface I_USER_SHORT { + name: string; + email: string; + bazar: string; + web: string; + social: string; + censored: string; + lastActive: Date; + ig: string; +} +type IProduct = { + slug: string; + name: string; + category: string; + code: string; + forum?: string; + forumCategory?: string; + version?: string; + cart_id?: string; +}; +interface IDiscourseUser { + id: number; + username: string; + name: string; + avatar_template: string; + active: boolean; + admin: boolean; + moderator: boolean; + last_seen_at: any; + last_emailed_at: string; + created_at: string; + last_seen_age: any; + last_emailed_age: number; + created_at_age: number; + trust_level: number; + manual_locked_trust_level: any; + flag_level: number; + title: any; + time_read: number; + staged: boolean; + days_visited: number; + posts_read_count: number; + topics_entered: number; + post_count: number; +} + +export type { IConvertedFileMeta, IDiscourseUser, IGeo, IGeoLocation, IGeo_Administrative, IGeo_Informative, IGeo_LocalityInfo, IImage, IMAchineBuilderXp, IModerable, IModerationStatus, INotification, IOA_Service, IOA_UserDetail, IOSRUserData, IOpeningHours, IPlasticType, IProduct, IProfileType, ISODateString, IUploadedFileMeta, IUrl, IUser, IUserDB, IUserPP, IUserPPDB, IUserState, IWorkspaceType, I_OSR_USER, I_USER_SHORT, MachineBuilderXpLabel, NotificationType, PlasticTypeLabel, TOSR_User_Type, WorkspaceType }; diff --git a/packages/commons/dist/types_cache.cjs b/packages/commons/dist/types_cache.cjs new file mode 100644 index 00000000..256dc069 --- /dev/null +++ b/packages/commons/dist/types_cache.cjs @@ -0,0 +1,16 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_cache_exports = {}; +module.exports = __toCommonJS(types_cache_exports); +//# sourceMappingURL=types_cache.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/types_cache.cjs.map b/packages/commons/dist/types_cache.cjs.map new file mode 100644 index 00000000..c79b6210 --- /dev/null +++ b/packages/commons/dist/types_cache.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/types_cache.ts"],"sourcesContent":["export interface IOptionsCache {\r\n skip?: boolean\r\n clear?: boolean\r\n namespace?: string\r\n cacheRoot?: string\r\n}\r\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_cache.d.cts b/packages/commons/dist/types_cache.d.cts new file mode 100644 index 00000000..28812d09 --- /dev/null +++ b/packages/commons/dist/types_cache.d.cts @@ -0,0 +1,8 @@ +interface IOptionsCache { + skip?: boolean; + clear?: boolean; + namespace?: string; + cacheRoot?: string; +} + +export type { IOptionsCache }; diff --git a/packages/commons/dist/types_common.cjs b/packages/commons/dist/types_common.cjs new file mode 100644 index 00000000..b2fe938e --- /dev/null +++ b/packages/commons/dist/types_common.cjs @@ -0,0 +1,16 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_common_exports = {}; +module.exports = __toCommonJS(types_common_exports); +//# sourceMappingURL=types_common.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/types_common.cjs.map b/packages/commons/dist/types_common.cjs.map new file mode 100644 index 00000000..1d2296a3 --- /dev/null +++ b/packages/commons/dist/types_common.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/types_common.ts"],"sourcesContent":["export interface GeoPos {\n\tlon: number\n\tlat: number\n}\n\nexport interface PATH_INFO {\n DIR?: string\n NAME?: string\n FILE_NAME?: string\n FILE_EXT?: string\n PATH?: string\n IS_FILE?: boolean\n IS_FOLDER?: boolean\n IS_EXPRESSION?: boolean\n IS_GLOB?: boolean\n path: string\n GLOB: string\n GLOB_EXTENSIONS: string[]\n FILES: string[]\n}\n\nexport interface IDeeplConfig {\n auth_key: string\n free_api: boolean\n}\n\nexport interface IIgConfig {\n username: string\n password: string\n}\n\n\nexport interface ICsCartConfigMySQL {\n host: string\n user: string\n database: string\n password: string\n}\nexport interface ICsCartConfig {\n token: string\n url: string\n username: string\n\n siteUrl?: string\n timeout?: number\n language?: string\n userToken?: string\n\n mysql?: ICsCartConfigMySQL\n}\nexport interface IGiteaConfig {\n token: string\n url: string\n}\nexport interface IDiscourseConfig {\n host: string\n key: string\n username: string\n rateLimitConcurrency: number\n}\n\nexport interface IScaleserp {\n key: string\n}\n\nexport interface IOSRConfig {\n deepl: IDeeplConfig\n ig: IIgConfig\n cscart: ICsCartConfig\n discourse: IDiscourseConfig\n discourse_admin: IDiscourseConfig\n instagram: IIgConfig\n urls: any\n scaleserp?: IScaleserp\n gitea?: IGiteaConfig\n}\n\nexport interface SRC_VARIABLES {\n SRC_PATH: string\n SRC_DIR: string\n SRC_NAME: string\n SRC_FILE_NAME: string\n SRC_FILE_EXT: string\n SRC_IS_FILE: boolean\n SRC_IS_FOLDER: boolean\n SRC_IS_EXPRESSION: boolean\n SRC_IS_GLOB: boolean\n SRC_GLOB: string\n SRC_GLOB_EXTENSIONS: string[]\n SRC_FILES: string[]\n}\n\nexport interface DST_VARIABLES {\n DST_PATH: string\n DST_DIR: string\n DST_NAME: string\n DST_FILE_NAME: string\n DST_FILE_EXT: string\n DST_IS_FILE: boolean\n DST_IS_FOLDER: boolean\n DST_IS_EXPRESSION: boolean\n DST_IS_GLOB: boolean\n DST_GLOB: string\n DST_GLOB_EXTENSIONS: string[]\n DST_FILES: string[]\n}\n\nexport type PATH_VARIABLES = SRC_VARIABLES & DST_VARIABLES\n\nexport interface IOptionsBase {\n variables: PATH_VARIABLES\n}\n\nexport interface PATH_INFO {\n DIR?: string\n FILE_EXT?: string\n FILE_NAME?: string\n FILES: string[]\n GLOB_EXTENSIONS: string[]\n GLOB: string\n IS_EXPRESSION?: boolean\n IS_FILE?: boolean\n IS_FOLDER?: boolean\n IS_GLOB?: boolean\n NAME?: string\n path: string\n PATH?: string\n}\n\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_common.d.cts b/packages/commons/dist/types_common.d.cts new file mode 100644 index 00000000..5be86c09 --- /dev/null +++ b/packages/commons/dist/types_common.d.cts @@ -0,0 +1,116 @@ +interface GeoPos { + lon: number; + lat: number; +} +interface IDeeplConfig { + auth_key: string; + free_api: boolean; +} +interface IIgConfig { + username: string; + password: string; +} +interface ICsCartConfigMySQL { + host: string; + user: string; + database: string; + password: string; +} +interface ICsCartConfig { + token: string; + url: string; + username: string; + siteUrl?: string; + timeout?: number; + language?: string; + userToken?: string; + mysql?: ICsCartConfigMySQL; +} +interface IGiteaConfig { + token: string; + url: string; +} +interface IDiscourseConfig { + host: string; + key: string; + username: string; + rateLimitConcurrency: number; +} +interface IScaleserp { + key: string; +} +interface IOSRConfig { + deepl: IDeeplConfig; + ig: IIgConfig; + cscart: ICsCartConfig; + discourse: IDiscourseConfig; + discourse_admin: IDiscourseConfig; + instagram: IIgConfig; + urls: any; + scaleserp?: IScaleserp; + gitea?: IGiteaConfig; +} +interface SRC_VARIABLES { + SRC_PATH: string; + SRC_DIR: string; + SRC_NAME: string; + SRC_FILE_NAME: string; + SRC_FILE_EXT: string; + SRC_IS_FILE: boolean; + SRC_IS_FOLDER: boolean; + SRC_IS_EXPRESSION: boolean; + SRC_IS_GLOB: boolean; + SRC_GLOB: string; + SRC_GLOB_EXTENSIONS: string[]; + SRC_FILES: string[]; +} +interface DST_VARIABLES { + DST_PATH: string; + DST_DIR: string; + DST_NAME: string; + DST_FILE_NAME: string; + DST_FILE_EXT: string; + DST_IS_FILE: boolean; + DST_IS_FOLDER: boolean; + DST_IS_EXPRESSION: boolean; + DST_IS_GLOB: boolean; + DST_GLOB: string; + DST_GLOB_EXTENSIONS: string[]; + DST_FILES: string[]; +} +type PATH_VARIABLES = SRC_VARIABLES & DST_VARIABLES; +interface IOptionsBase { + variables: PATH_VARIABLES; +} +interface PATH_INFO { + DIR?: string; + NAME?: string; + FILE_NAME?: string; + FILE_EXT?: string; + PATH?: string; + IS_FILE?: boolean; + IS_FOLDER?: boolean; + IS_EXPRESSION?: boolean; + IS_GLOB?: boolean; + path: string; + GLOB: string; + GLOB_EXTENSIONS: string[]; + FILES: string[]; +} +interface PATH_INFO { + DIR?: string; + FILE_EXT?: string; + FILE_NAME?: string; + FILES: string[]; + GLOB_EXTENSIONS: string[]; + GLOB: string; + IS_EXPRESSION?: boolean; + IS_FILE?: boolean; + IS_FOLDER?: boolean; + IS_GLOB?: boolean; + NAME?: string; + path: string; + PATH?: string; +} + +export type { DST_VARIABLES, GeoPos, ICsCartConfig, ICsCartConfigMySQL, IDeeplConfig, IDiscourseConfig, IGiteaConfig, IIgConfig, IOSRConfig, IOptionsBase, IScaleserp, PATH_INFO, PATH_VARIABLES, SRC_VARIABLES }; diff --git a/packages/commons/dist/types_gui.cjs b/packages/commons/dist/types_gui.cjs new file mode 100644 index 00000000..cadf718d --- /dev/null +++ b/packages/commons/dist/types_gui.cjs @@ -0,0 +1,184 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_gui_exports = {}; +__export(types_gui_exports, { + BLOCK_GROUPS: () => BLOCK_GROUPS, + BLOCK_MODE: () => BLOCK_MODE, + BLOCK_OUTLET: () => BLOCK_OUTLET, + BlockType: () => BlockType, + CIFLAG: () => CIFLAG, + COMMAND_TYPES: () => COMMAND_TYPES, + EVENTS: () => EVENTS, + EXECUTION_STATE: () => EXECUTION_STATE, + RUN_FLAGS: () => RUN_FLAGS, + VARIABLE_FLAGS: () => VARIABLE_FLAGS +}); +module.exports = __toCommonJS(types_gui_exports); +var RUN_FLAGS = /* @__PURE__ */ ((RUN_FLAGS2) => { + RUN_FLAGS2[RUN_FLAGS2["CHILDREN"] = 32] = "CHILDREN"; + RUN_FLAGS2[RUN_FLAGS2["WAIT"] = 32768] = "WAIT"; + return RUN_FLAGS2; +})(RUN_FLAGS || {}); +; +var EXECUTION_STATE = /* @__PURE__ */ ((EXECUTION_STATE2) => { + EXECUTION_STATE2[EXECUTION_STATE2["NONE"] = 0] = "NONE"; + EXECUTION_STATE2[EXECUTION_STATE2["RUNNING"] = 1] = "RUNNING"; + EXECUTION_STATE2[EXECUTION_STATE2["ERROR"] = 2] = "ERROR"; + EXECUTION_STATE2[EXECUTION_STATE2["PAUSED"] = 4] = "PAUSED"; + EXECUTION_STATE2[EXECUTION_STATE2["FINISH"] = 8] = "FINISH"; + EXECUTION_STATE2[EXECUTION_STATE2["STOPPED"] = 16] = "STOPPED"; + EXECUTION_STATE2[EXECUTION_STATE2["ONCE"] = 2147483648] = "ONCE"; + EXECUTION_STATE2[EXECUTION_STATE2["RESET_NEXT_FRAME"] = 8388608] = "RESET_NEXT_FRAME"; + EXECUTION_STATE2[EXECUTION_STATE2["LOCKED"] = 536870912] = "LOCKED"; + return EXECUTION_STATE2; +})(EXECUTION_STATE || {}); +var BLOCK_MODE = /* @__PURE__ */ ((BLOCK_MODE2) => { + BLOCK_MODE2[BLOCK_MODE2["NORMAL"] = 0] = "NORMAL"; + BLOCK_MODE2[BLOCK_MODE2["UPDATE_WIDGET_PROPERTY"] = 1] = "UPDATE_WIDGET_PROPERTY"; + return BLOCK_MODE2; +})(BLOCK_MODE || {}); +; +var BLOCK_OUTLET = /* @__PURE__ */ ((BLOCK_OUTLET2) => { + BLOCK_OUTLET2[BLOCK_OUTLET2["NONE"] = 0] = "NONE"; + BLOCK_OUTLET2[BLOCK_OUTLET2["PROGRESS"] = 1] = "PROGRESS"; + BLOCK_OUTLET2[BLOCK_OUTLET2["ERROR"] = 2] = "ERROR"; + BLOCK_OUTLET2[BLOCK_OUTLET2["PAUSED"] = 4] = "PAUSED"; + BLOCK_OUTLET2[BLOCK_OUTLET2["FINISH"] = 8] = "FINISH"; + BLOCK_OUTLET2[BLOCK_OUTLET2["STOPPED"] = 16] = "STOPPED"; + return BLOCK_OUTLET2; +})(BLOCK_OUTLET || {}); +; +var EVENTS = /* @__PURE__ */ ((EVENTS2) => { + EVENTS2["ON_RUN_BLOCK"] = "onRunBlock"; + EVENTS2["ON_RUN_BLOCK_FAILED"] = "onRunBlockFailed"; + EVENTS2["ON_RUN_BLOCK_SUCCESS"] = "onRunBlockSuccess"; + EVENTS2["ON_BLOCK_SELECTED"] = "onItemSelected"; + EVENTS2["ON_BLOCK_UNSELECTED"] = "onBlockUnSelected"; + EVENTS2["ON_BLOCK_EXPRESSION_FAILED"] = "onExpressionFailed"; + EVENTS2["ON_BUILD_BLOCK_INFO_LIST"] = "onBuildBlockInfoList"; + EVENTS2["ON_BUILD_BLOCK_INFO_LIST_END"] = "onBuildBlockInfoListEnd"; + EVENTS2["ON_BLOCK_PROPERTY_CHANGED"] = "onBlockPropertyChanged"; + EVENTS2["ON_SCOPE_CREATED"] = "onScopeCreated"; + EVENTS2["ON_VARIABLE_CHANGED"] = "onVariableChanged"; + EVENTS2["ON_CREATE_VARIABLE_CI"] = "onCreateVariableCI"; + return EVENTS2; +})(EVENTS || {}); +var BlockType = /* @__PURE__ */ ((BlockType2) => { + BlockType2["AssignmentExpression"] = "AssignmentExpression"; + BlockType2["ArrayExpression"] = "ArrayExpression"; + BlockType2["BlockStatement"] = "BlockStatement"; + BlockType2["BinaryExpression"] = "BinaryExpression"; + BlockType2["BreakStatement"] = "BreakStatement"; + BlockType2["CallExpression"] = "CallExpression"; + BlockType2["CatchClause"] = "CatchClause"; + BlockType2["ConditionalExpression"] = "ConditionalExpression"; + BlockType2["ContinueStatement"] = "ContinueStatement"; + BlockType2["DoWhileStatement"] = "DoWhileStatement"; + BlockType2["DebuggerStatement"] = "DebuggerStatement"; + BlockType2["EmptyStatement"] = "EmptyStatement"; + BlockType2["ExpressionStatement"] = "ExpressionStatement"; + BlockType2["ForStatement"] = "ForStatement"; + BlockType2["ForInStatement"] = "ForInStatement"; + BlockType2["FunctionDeclaration"] = "FunctionDeclaration"; + BlockType2["FunctionExpression"] = "FunctionExpression"; + BlockType2["Identifier"] = "Identifier"; + BlockType2["IfStatement"] = "IfStatement"; + BlockType2["Literal"] = "Literal"; + BlockType2["LabeledStatement"] = "LabeledStatement"; + BlockType2["LogicalExpression"] = "LogicalExpression"; + BlockType2["MemberExpression"] = "MemberExpression"; + BlockType2["NewExpression"] = "NewExpression"; + BlockType2["ObjectExpression"] = "ObjectExpression"; + BlockType2["Program"] = "Program"; + BlockType2["Property"] = "Property"; + BlockType2["ReturnStatement"] = "ReturnStatement"; + BlockType2["SequenceExpression"] = "SequenceExpression"; + BlockType2["SwitchStatement"] = "SwitchStatement"; + BlockType2["SwitchCase"] = "SwitchCase"; + BlockType2["ThisExpression"] = "ThisExpression"; + BlockType2["ThrowStatement"] = "ThrowStatement"; + BlockType2["TryStatement"] = "TryStatement"; + BlockType2["UnaryExpression"] = "UnaryExpression"; + BlockType2["UpdateExpression"] = "UpdateExpression"; + BlockType2["VariableDeclaration"] = "VariableDeclaration"; + BlockType2["VariableDeclarator"] = "VariableDeclarator"; + BlockType2["WhileStatement"] = "WhileStatement"; + BlockType2["WithStatement"] = "WithStatement"; + return BlockType2; +})(BlockType || {}); +; +var VARIABLE_FLAGS = /* @__PURE__ */ ((VARIABLE_FLAGS2) => { + VARIABLE_FLAGS2[VARIABLE_FLAGS2["PUBLISH"] = 2] = "PUBLISH"; + VARIABLE_FLAGS2[VARIABLE_FLAGS2["PUBLISH_IF_SERVER"] = 4] = "PUBLISH_IF_SERVER"; + return VARIABLE_FLAGS2; +})(VARIABLE_FLAGS || {}); +; +var BLOCK_GROUPS = /* @__PURE__ */ ((BLOCK_GROUPS2) => { + BLOCK_GROUPS2["VARIABLE"] = "DriverVariable"; + BLOCK_GROUPS2["BASIC_COMMAND"] = "DriverBasicCommand"; + BLOCK_GROUPS2["CONDITIONAL_COMMAND"] = "DriverConditionalCommand"; + BLOCK_GROUPS2["RESPONSE_VARIABLE"] = "DriverResponseVariable"; + BLOCK_GROUPS2["RESPONSE_BLOCKS"] = "conditionalProcess"; + BLOCK_GROUPS2["RESPONSE_VARIABLES"] = "processVariables"; + BLOCK_GROUPS2["BASIC_VARIABLES"] = "basicVariables"; + return BLOCK_GROUPS2; +})(BLOCK_GROUPS || {}); +; +var COMMAND_TYPES = /* @__PURE__ */ ((COMMAND_TYPES2) => { + COMMAND_TYPES2["BASIC_COMMAND"] = "basic"; + COMMAND_TYPES2["CONDITIONAL_COMMAND"] = "conditional"; + COMMAND_TYPES2["INIT_COMMAND"] = "init"; + return COMMAND_TYPES2; +})(COMMAND_TYPES || {}); +; +var CIFLAG = /* @__PURE__ */ ((CIFLAG2) => { + CIFLAG2[CIFLAG2["NONE"] = 0] = "NONE"; + CIFLAG2[CIFLAG2["BASE_64"] = 1] = "BASE_64"; + CIFLAG2[CIFLAG2["USE_FUNCTION"] = 2] = "USE_FUNCTION"; + CIFLAG2[CIFLAG2["REPLACE_VARIABLES"] = 4] = "REPLACE_VARIABLES"; + CIFLAG2[CIFLAG2["REPLACE_VARIABLES_EVALUATED"] = 8] = "REPLACE_VARIABLES_EVALUATED"; + CIFLAG2[CIFLAG2["ESCAPE"] = 16] = "ESCAPE"; + CIFLAG2[CIFLAG2["REPLACE_BLOCK_CALLS"] = 32] = "REPLACE_BLOCK_CALLS"; + CIFLAG2[CIFLAG2["REMOVE_DELIMTTERS"] = 64] = "REMOVE_DELIMTTERS"; + CIFLAG2[CIFLAG2["ESCAPE_SPECIAL_CHARS"] = 128] = "ESCAPE_SPECIAL_CHARS"; + CIFLAG2[CIFLAG2["USE_REGEX"] = 256] = "USE_REGEX"; + CIFLAG2[CIFLAG2["USE_FILTREX"] = 512] = "USE_FILTREX"; + CIFLAG2[CIFLAG2["CASCADE"] = 1024] = "CASCADE"; + CIFLAG2[CIFLAG2["EXPRESSION"] = 2048] = "EXPRESSION"; + CIFLAG2[CIFLAG2["DONT_PARSE"] = 4096] = "DONT_PARSE"; + CIFLAG2[CIFLAG2["TO_HEX"] = 8192] = "TO_HEX"; + CIFLAG2[CIFLAG2["REPLACE_HEX"] = 16384] = "REPLACE_HEX"; + CIFLAG2[CIFLAG2["WAIT"] = 32768] = "WAIT"; + CIFLAG2[CIFLAG2["DONT_ESCAPE"] = 65536] = "DONT_ESCAPE"; + CIFLAG2[CIFLAG2["END"] = 131072] = "END"; + return CIFLAG2; +})(CIFLAG || {}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + BLOCK_GROUPS, + BLOCK_MODE, + BLOCK_OUTLET, + BlockType, + CIFLAG, + COMMAND_TYPES, + EVENTS, + EXECUTION_STATE, + RUN_FLAGS, + VARIABLE_FLAGS +}); +//# sourceMappingURL=types_gui.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/types_gui.cjs.map b/packages/commons/dist/types_gui.cjs.map new file mode 100644 index 00000000..5a67ff70 --- /dev/null +++ b/packages/commons/dist/types_gui.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/types_gui.ts"],"sourcesContent":["/**\n * Flags to describe a block's execution behavior.\n *\n * @enum {integer} module=xide/types/RUN_FLAGS\n * @memberOf module=xide/types\n */\nexport enum RUN_FLAGS {\n /**\n * The block can execute child blocks.\n * @constant\n * @type int\n */\n CHILDREN = 0x00000020,\n /**\n * Block is waiting for a message => EXECUTION_STATE==RUNNING\n * @constant\n * @type int\n */\n WAIT = 0x000008000\n};\n\n/**\n * Flags to describe a block's execution state.\n *\n * @enum {integer} module=xide/types/EXECUTION_STATE\n * @memberOf module=xide/types\n */\nexport enum EXECUTION_STATE {\n /**\n * The block is doing nothing and also has done nothing. The is the default state\n * @constant\n * @type int\n */\n NONE = 0x00000000,\n /**\n * The block is running.\n * @constant\n * @type int\n */\n RUNNING = 0x00000001,\n /**\n * The block is an error state.\n * @constant\n * @type int\n */\n ERROR = 0x00000002,\n /**\n * The block is in an paused state.\n * @constant\n * @type int\n */\n PAUSED = 0x00000004,\n /**\n * The block is an finished state, ready to be cleared to \"NONE\" at the next frame.\n * @constant\n * @type int\n */\n FINISH = 0x00000008,\n /**\n * The block is an stopped state, ready to be cleared to \"NONE\" at the next frame.\n * @constant\n * @type int\n */\n STOPPED = 0x00000010,\n /**\n * The block has been launched once...\n * @constant\n * @type int\n */\n ONCE = 0x80000000,\n /**\n * Block will be reseted next frame\n * @constant\n * @type int\n */\n RESET_NEXT_FRAME = 0x00800000,\n /**\n * Block is locked and so no further inputs can be activated.\n * @constant\n * @type int\n */\n LOCKED = 0x20000000\t// Block is locked for utilisation in xblox\n}\n\nexport enum BLOCK_MODE {\n NORMAL = 0,\n UPDATE_WIDGET_PROPERTY = 1\n};\n\n/**\n * Flags to describe a block's belonging to a standard signal.\n * @enum {integer} module=xblox/types/BLOCK_OUTLET\n * @memberOf module=xblox/types\n */\nexport enum BLOCK_OUTLET {\n NONE = 0x00000000,\n PROGRESS = 0x00000001,\n ERROR = 0x00000002,\n PAUSED = 0x00000004,\n FINISH = 0x00000008,\n STOPPED = 0x00000010\n};\n\nexport enum EVENTS {\n ON_RUN_BLOCK = 'onRunBlock',\n ON_RUN_BLOCK_FAILED = 'onRunBlockFailed',\n ON_RUN_BLOCK_SUCCESS = 'onRunBlockSuccess',\n ON_BLOCK_SELECTED = 'onItemSelected',\n ON_BLOCK_UNSELECTED = 'onBlockUnSelected',\n ON_BLOCK_EXPRESSION_FAILED = 'onExpressionFailed',\n ON_BUILD_BLOCK_INFO_LIST = 'onBuildBlockInfoList',\n ON_BUILD_BLOCK_INFO_LIST_END = 'onBuildBlockInfoListEnd',\n ON_BLOCK_PROPERTY_CHANGED = 'onBlockPropertyChanged',\n ON_SCOPE_CREATED = 'onScopeCreated',\n ON_VARIABLE_CHANGED = 'onVariableChanged',\n ON_CREATE_VARIABLE_CI = 'onCreateVariableCI'\n}\n\nexport enum BlockType {\n AssignmentExpression = 'AssignmentExpression',\n ArrayExpression = 'ArrayExpression',\n BlockStatement = 'BlockStatement',\n BinaryExpression = 'BinaryExpression',\n BreakStatement = 'BreakStatement',\n CallExpression = 'CallExpression',\n CatchClause = 'CatchClause',\n ConditionalExpression = 'ConditionalExpression',\n ContinueStatement = 'ContinueStatement',\n DoWhileStatement = 'DoWhileStatement',\n DebuggerStatement = 'DebuggerStatement',\n EmptyStatement = 'EmptyStatement',\n ExpressionStatement = 'ExpressionStatement',\n ForStatement = 'ForStatement',\n ForInStatement = 'ForInStatement',\n FunctionDeclaration = 'FunctionDeclaration',\n FunctionExpression = 'FunctionExpression',\n Identifier = 'Identifier',\n IfStatement = 'IfStatement',\n Literal = 'Literal',\n LabeledStatement = 'LabeledStatement',\n LogicalExpression = 'LogicalExpression',\n MemberExpression = 'MemberExpression',\n NewExpression = 'NewExpression',\n ObjectExpression = 'ObjectExpression',\n Program = 'Program',\n Property = 'Property',\n ReturnStatement = 'ReturnStatement',\n SequenceExpression = 'SequenceExpression',\n SwitchStatement = 'SwitchStatement',\n SwitchCase = 'SwitchCase',\n ThisExpression = 'ThisExpression',\n ThrowStatement = 'ThrowStatement',\n TryStatement = 'TryStatement',\n UnaryExpression = 'UnaryExpression',\n UpdateExpression = 'UpdateExpression',\n VariableDeclaration = 'VariableDeclaration',\n VariableDeclarator = 'VariableDeclarator',\n WhileStatement = 'WhileStatement',\n WithStatement = 'WithStatement'\n};\n/**\n * Variable Flags\n *\n * @enum {int} VARIABLE_FLAGS\n * @global\n */\nexport enum VARIABLE_FLAGS {\n PUBLISH = 0x00000002,\n PUBLISH_IF_SERVER = 0x00000004\n};\n\nexport enum BLOCK_GROUPS {\n VARIABLE = 'DriverVariable',\n BASIC_COMMAND = 'DriverBasicCommand',\n CONDITIONAL_COMMAND = 'DriverConditionalCommand',\n RESPONSE_VARIABLE = 'DriverResponseVariable',\n RESPONSE_BLOCKS = 'conditionalProcess',\n RESPONSE_VARIABLES = 'processVariables',\n BASIC_VARIABLES = 'basicVariables'\n};\n\nexport enum COMMAND_TYPES {\n BASIC_COMMAND = 'basic',\n CONDITIONAL_COMMAND = 'conditional',\n INIT_COMMAND = 'init'\n};\n\nexport enum CIFLAG {\n /**\n * Instruct for no additional extra processing\n * @constant\n * @type int\n */\n NONE = 0x00000000,\n /**\n * Will instruct the pre/post processor to base-64 decode or encode\n * @constant\n * @type int\n */\n BASE_64 = 0x00000001,\n /**\n * Post/Pre process the value with a user function\n * @constant\n * @type int\n */\n USE_FUNCTION = 0x00000002,\n /**\n * Replace variables with local scope's variables during the post/pre process\n * @constant\n * @type int\n */\n REPLACE_VARIABLES = 0x00000004,\n /**\n * Replace variables with local scope's variables during the post/pre process but evaluate the whole string\n * as Javascript\n * @constant\n * @type int\n */\n REPLACE_VARIABLES_EVALUATED = 0x00000008,\n /**\n * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions\n * @constant\n * @type int\n */\n ESCAPE = 0x00000010,\n /**\n * Will instruct the pre/post processor to replace block calls with oridinary vanilla script\n * @constant\n * @type int\n */\n REPLACE_BLOCK_CALLS = 0x00000020,\n /**\n * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string\n * @constant\n * @type int\n */\n REMOVE_DELIMTTERS = 0x00000040,\n /**\n * Will instruct the pre/post processor to remove \"[\" ,\"]\" , \"(\" , \")\" , \"{\", \"}\" , \"*\" , \"+\" , \".\"\n * @constant\n * @type int\n */\n ESCAPE_SPECIAL_CHARS = 0x00000080,\n /**\n * Will instruct the pre/post processor to use regular expressions over string substitution\n * @constant\n * @type int\n */\n USE_REGEX = 0x00000100,\n /**\n * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution\n * @constant\n * @type int\n */\n USE_FILTREX = 0x00000200,\n /**\n * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking.\n * @constant\n * @type int\n */\n CASCADE = 0x00000400,\n /**\n * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking.\n * @constant\n * @type int\n */\n EXPRESSION = 0x00000800,\n /**\n * Dont parse anything\n * @constant\n * @type int\n */\n DONT_PARSE = 0x000001000,\n /**\n * Convert to hex\n * @constant\n * @type int\n */\n TO_HEX = 0x000002000,\n /**\n * Convert to hex\n * @constant\n * @type int\n */\n REPLACE_HEX = 0x000004000,\n /**\n * Wait for finish\n * @constant\n * @type int\n */\n WAIT = 0x000008000,\n /**\n * Wait for finish\n * @constant\n * @type int\n */\n DONT_ESCAPE = 0x000010000,\n /**\n * Flag to mark the maximum core bit mask, after here its user land\n * @constant\n * @type int\n */\n END = 0x000020000\n}\n"],"mappings":"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","names":["RUN_FLAGS","EXECUTION_STATE","BLOCK_MODE","BLOCK_OUTLET","EVENTS","BlockType","VARIABLE_FLAGS","BLOCK_GROUPS","COMMAND_TYPES","CIFLAG"]} \ No newline at end of file diff --git a/packages/commons/dist/types_gui.d.cts b/packages/commons/dist/types_gui.d.cts new file mode 100644 index 00000000..c63aa692 --- /dev/null +++ b/packages/commons/dist/types_gui.d.cts @@ -0,0 +1,298 @@ +/** + * Flags to describe a block's execution behavior. + * + * @enum {integer} module=xide/types/RUN_FLAGS + * @memberOf module=xide/types + */ +declare enum RUN_FLAGS { + /** + * The block can execute child blocks. + * @constant + * @type int + */ + CHILDREN = 32, + /** + * Block is waiting for a message => EXECUTION_STATE==RUNNING + * @constant + * @type int + */ + WAIT = 32768 +} +/** + * Flags to describe a block's execution state. + * + * @enum {integer} module=xide/types/EXECUTION_STATE + * @memberOf module=xide/types + */ +declare enum EXECUTION_STATE { + /** + * The block is doing nothing and also has done nothing. The is the default state + * @constant + * @type int + */ + NONE = 0, + /** + * The block is running. + * @constant + * @type int + */ + RUNNING = 1, + /** + * The block is an error state. + * @constant + * @type int + */ + ERROR = 2, + /** + * The block is in an paused state. + * @constant + * @type int + */ + PAUSED = 4, + /** + * The block is an finished state, ready to be cleared to "NONE" at the next frame. + * @constant + * @type int + */ + FINISH = 8, + /** + * The block is an stopped state, ready to be cleared to "NONE" at the next frame. + * @constant + * @type int + */ + STOPPED = 16, + /** + * The block has been launched once... + * @constant + * @type int + */ + ONCE = 2147483648, + /** + * Block will be reseted next frame + * @constant + * @type int + */ + RESET_NEXT_FRAME = 8388608, + /** + * Block is locked and so no further inputs can be activated. + * @constant + * @type int + */ + LOCKED = 536870912 +} +declare enum BLOCK_MODE { + NORMAL = 0, + UPDATE_WIDGET_PROPERTY = 1 +} +/** + * Flags to describe a block's belonging to a standard signal. + * @enum {integer} module=xblox/types/BLOCK_OUTLET + * @memberOf module=xblox/types + */ +declare enum BLOCK_OUTLET { + NONE = 0, + PROGRESS = 1, + ERROR = 2, + PAUSED = 4, + FINISH = 8, + STOPPED = 16 +} +declare enum EVENTS { + ON_RUN_BLOCK = "onRunBlock", + ON_RUN_BLOCK_FAILED = "onRunBlockFailed", + ON_RUN_BLOCK_SUCCESS = "onRunBlockSuccess", + ON_BLOCK_SELECTED = "onItemSelected", + ON_BLOCK_UNSELECTED = "onBlockUnSelected", + ON_BLOCK_EXPRESSION_FAILED = "onExpressionFailed", + ON_BUILD_BLOCK_INFO_LIST = "onBuildBlockInfoList", + ON_BUILD_BLOCK_INFO_LIST_END = "onBuildBlockInfoListEnd", + ON_BLOCK_PROPERTY_CHANGED = "onBlockPropertyChanged", + ON_SCOPE_CREATED = "onScopeCreated", + ON_VARIABLE_CHANGED = "onVariableChanged", + ON_CREATE_VARIABLE_CI = "onCreateVariableCI" +} +declare enum BlockType { + AssignmentExpression = "AssignmentExpression", + ArrayExpression = "ArrayExpression", + BlockStatement = "BlockStatement", + BinaryExpression = "BinaryExpression", + BreakStatement = "BreakStatement", + CallExpression = "CallExpression", + CatchClause = "CatchClause", + ConditionalExpression = "ConditionalExpression", + ContinueStatement = "ContinueStatement", + DoWhileStatement = "DoWhileStatement", + DebuggerStatement = "DebuggerStatement", + EmptyStatement = "EmptyStatement", + ExpressionStatement = "ExpressionStatement", + ForStatement = "ForStatement", + ForInStatement = "ForInStatement", + FunctionDeclaration = "FunctionDeclaration", + FunctionExpression = "FunctionExpression", + Identifier = "Identifier", + IfStatement = "IfStatement", + Literal = "Literal", + LabeledStatement = "LabeledStatement", + LogicalExpression = "LogicalExpression", + MemberExpression = "MemberExpression", + NewExpression = "NewExpression", + ObjectExpression = "ObjectExpression", + Program = "Program", + Property = "Property", + ReturnStatement = "ReturnStatement", + SequenceExpression = "SequenceExpression", + SwitchStatement = "SwitchStatement", + SwitchCase = "SwitchCase", + ThisExpression = "ThisExpression", + ThrowStatement = "ThrowStatement", + TryStatement = "TryStatement", + UnaryExpression = "UnaryExpression", + UpdateExpression = "UpdateExpression", + VariableDeclaration = "VariableDeclaration", + VariableDeclarator = "VariableDeclarator", + WhileStatement = "WhileStatement", + WithStatement = "WithStatement" +} +/** + * Variable Flags + * + * @enum {int} VARIABLE_FLAGS + * @global + */ +declare enum VARIABLE_FLAGS { + PUBLISH = 2, + PUBLISH_IF_SERVER = 4 +} +declare enum BLOCK_GROUPS { + VARIABLE = "DriverVariable", + BASIC_COMMAND = "DriverBasicCommand", + CONDITIONAL_COMMAND = "DriverConditionalCommand", + RESPONSE_VARIABLE = "DriverResponseVariable", + RESPONSE_BLOCKS = "conditionalProcess", + RESPONSE_VARIABLES = "processVariables", + BASIC_VARIABLES = "basicVariables" +} +declare enum COMMAND_TYPES { + BASIC_COMMAND = "basic", + CONDITIONAL_COMMAND = "conditional", + INIT_COMMAND = "init" +} +declare enum CIFLAG { + /** + * Instruct for no additional extra processing + * @constant + * @type int + */ + NONE = 0, + /** + * Will instruct the pre/post processor to base-64 decode or encode + * @constant + * @type int + */ + BASE_64 = 1, + /** + * Post/Pre process the value with a user function + * @constant + * @type int + */ + USE_FUNCTION = 2, + /** + * Replace variables with local scope's variables during the post/pre process + * @constant + * @type int + */ + REPLACE_VARIABLES = 4, + /** + * Replace variables with local scope's variables during the post/pre process but evaluate the whole string + * as Javascript + * @constant + * @type int + */ + REPLACE_VARIABLES_EVALUATED = 8, + /** + * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions + * @constant + * @type int + */ + ESCAPE = 16, + /** + * Will instruct the pre/post processor to replace block calls with oridinary vanilla script + * @constant + * @type int + */ + REPLACE_BLOCK_CALLS = 32, + /** + * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string + * @constant + * @type int + */ + REMOVE_DELIMTTERS = 64, + /** + * Will instruct the pre/post processor to remove "[" ,"]" , "(" , ")" , "{", "}" , "*" , "+" , "." + * @constant + * @type int + */ + ESCAPE_SPECIAL_CHARS = 128, + /** + * Will instruct the pre/post processor to use regular expressions over string substitution + * @constant + * @type int + */ + USE_REGEX = 256, + /** + * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution + * @constant + * @type int + */ + USE_FILTREX = 512, + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + CASCADE = 1024, + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + EXPRESSION = 2048, + /** + * Dont parse anything + * @constant + * @type int + */ + DONT_PARSE = 4096, + /** + * Convert to hex + * @constant + * @type int + */ + TO_HEX = 8192, + /** + * Convert to hex + * @constant + * @type int + */ + REPLACE_HEX = 16384, + /** + * Wait for finish + * @constant + * @type int + */ + WAIT = 32768, + /** + * Wait for finish + * @constant + * @type int + */ + DONT_ESCAPE = 65536, + /** + * Flag to mark the maximum core bit mask, after here its user land + * @constant + * @type int + */ + END = 131072 +} + +export { BLOCK_GROUPS, BLOCK_MODE, BLOCK_OUTLET, BlockType, CIFLAG, COMMAND_TYPES, EVENTS, EXECUTION_STATE, RUN_FLAGS, VARIABLE_FLAGS }; diff --git a/packages/commons/dist/types_kbot.cjs b/packages/commons/dist/types_kbot.cjs new file mode 100644 index 00000000..d1cb3e17 --- /dev/null +++ b/packages/commons/dist/types_kbot.cjs @@ -0,0 +1,16 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_kbot_exports = {}; +module.exports = __toCommonJS(types_kbot_exports); +//# sourceMappingURL=types_kbot.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/types_kbot.cjs.map b/packages/commons/dist/types_kbot.cjs.map new file mode 100644 index 00000000..151f2f35 --- /dev/null +++ b/packages/commons/dist/types_kbot.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/types_kbot.ts"],"sourcesContent":["export interface IKBotOptions {\n /** Path to the project directory */\n path?: string;\n /** Description of the modifications to make to the project. Supports file paths. */\n query?: string;\n /** Optional output path for modified files */\n output?: string | undefined;\n /** Optional destination path for the result, will substitute ${MODEL} and ${ROUTER} in the path */\n dst?: string | undefined;\n /** Template (typescript) or path to use for processing, see https://git.polymech.io/polymech/ai-template-typescript */\n template?: ((\"typescript\") | string) | undefined;\n /** Template root directory. When specified, templates are loaded with a prefix, eg: ${POLYMECH-ROOT}/ai-template-${options.template} */\n templateRoot?: string;\n /** List of template parts to disable. Addionally, tools categories can be disabled, eg: --disable=fs,git,interact,terminal,search,web,email,user */\n disable?: string[];\n /** List of specific tools to disable */\n disableTools?: string[];\n /** Glob patterns to match files for processing, comma separated, eg: src/*.tsx,src/*.ts */\n glob?: string[] | undefined;\n /** AI model to use for processing. Available models:\n \u001b[35m\u001b[1m\u001b[22m\u001b[39m\n \u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n \u001b[35m\u001b[1m\u001b[22m\u001b[39m\n google/gemini-pro-1.5-exp | paid\n meta-llama/llama-3.2-11b-vision-instruct:free | free\n google/gemini-flash-1.5-exp | paid\n google/gemini-flash-1.5-8b-exp | paid\n microsoft/phi-3-medium-128k-instruct:free | free\n microsoft/phi-3-mini-128k-instruct:free | free\n google/gemini-2.0-flash-thinking-exp:free | free\n google/gemini-2.0-flash-exp:free | free\n meta-llama/llama-3.2-1b-instruct | paid\n meta-llama/llama-3.2-3b-instruct | paid\n meta-llama/llama-3.1-8b-instruct | paid\n mistralai/mistral-7b-instruct | paid\n mistralai/mistral-7b-instruct-v0.3 | paid\n meta-llama/llama-3-8b-instruct | paid\n amazon/nova-micro-v1 | paid\n google/gemini-flash-1.5-8b | paid\n mistralai/ministral-3b | paid\n meta-llama/llama-3.2-11b-vision-instruct | paid\n amazon/nova-lite-v1 | paid\n google/gemini-flash-1.5 | paid\n mistralai/ministral-8b | paid\n microsoft/phi-3-mini-128k-instruct | paid\n microsoft/phi-3.5-mini-128k-instruct | paid\n meta-llama/llama-3.1-70b-instruct | paid\n nvidia/llama-3.1-nemotron-70b-instruct | paid\n deepseek/deepseek-chat | paid\n cohere/command-r-08-2024 | paid\n mistralai/mistral-nemo | paid\n mistralai/pixtral-12b | paid\n openai/gpt-4o-mini | paid\n openai/gpt-4o-mini-2024-07-18 | paid\n mistralai/mistral-7b-instruct-v0.1 | paid\n ai21/jamba-1-5-mini | paid\n mistralai/mistral-small | paid\n qwen/qwen-2.5-72b-instruct | paid\n meta-llama/llama-3-70b-instruct | paid\n mistralai/mixtral-8x7b-instruct | paid\n mistralai/mistral-tiny | paid\n mistralai/codestral-mamba | paid\n anthropic/claude-3-haiku:beta | paid\n anthropic/claude-3-haiku | paid\n nousresearch/hermes-3-llama-3.1-70b | paid\n cohere/command-r-03-2024 | paid\n cohere/command-r | paid\n openai/gpt-3.5-turbo-0125 | paid\n google/gemini-pro | paid\n openai/gpt-3.5-turbo | paid\n mistralai/mixtral-8x7b-instruct:nitro | paid\n meta-llama/llama-3.1-405b-instruct | paid\n amazon/nova-pro-v1 | paid\n anthropic/claude-3.5-haiku:beta | paid\n anthropic/claude-3.5-haiku | paid\n anthropic/claude-3.5-haiku-20241022:beta | paid\n anthropic/claude-3.5-haiku-20241022 | paid\n microsoft/phi-3-medium-128k-instruct | paid\n openai/gpt-3.5-turbo-1106 | paid\n openai/gpt-3.5-turbo-0613 | paid\n meta-llama/llama-3.2-90b-vision-instruct | paid\n google/gemini-pro-1.5 | paid\n mistralai/mixtral-8x22b-instruct | paid\n mistralai/mistral-large | paid\n mistralai/mistral-large-2407 | paid\n mistralai/mistral-large-2411 | paid\n mistralai/pixtral-large-2411 | paid\n ai21/jamba-1-5-large | paid\n x-ai/grok-2-1212 | paid\n cohere/command-r-plus-08-2024 | paid\n openai/gpt-4o | paid\n openai/gpt-4o-2024-08-06 | paid\n openai/gpt-4o-2024-11-20 | paid\n mistralai/mistral-medium | paid\n cohere/command-r-plus | paid\n cohere/command-r-plus-04-2024 | paid\n openai/gpt-3.5-turbo-16k | paid\n anthropic/claude-3.5-sonnet:beta | paid\n anthropic/claude-3.5-sonnet | paid\n anthropic/claude-3-sonnet:beta | paid\n anthropic/claude-3-sonnet | paid\n anthropic/claude-3.5-sonnet-20240620:beta | paid\n anthropic/claude-3.5-sonnet-20240620 | paid\n openai/gpt-4o-2024-05-13 | paid\n x-ai/grok-beta | paid\n x-ai/grok-vision-beta | paid\n openai/gpt-4o:extended | paid\n openai/gpt-4-turbo | paid\n openai/gpt-4-1106-preview | paid\n openai/gpt-4-turbo-preview | paid\n openai/o1 | paid\n anthropic/claude-3-opus:beta | paid\n anthropic/claude-3-opus | paid\n openai/gpt-4 | paid\n openai/gpt-4-0314 | paid\n openai/gpt-4-32k-0314 | paid\n openai/gpt-4-32k | paid\n \u001b[35m\u001b[1m\u001b[22m\u001b[39m\n \u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n \u001b[35m\u001b[1m\u001b[22m\u001b[39m\n gpt-4o-audio-preview-2024-10-01\n gpt-4o-realtime-preview\n gpt-4o-realtime-preview-2024-10-01\n o1-mini-2024-09-12\n dall-e-2\n gpt-4-turbo\n gpt-4-1106-preview\n gpt-3.5-turbo\n gpt-3.5-turbo-0125\n gpt-3.5-turbo-instruct\n gpt-4-1106-vision-preview\n babbage-002\n davinci-002\n whisper-1\n dall-e-3\n gpt-4o-mini-2024-07-18\n text-embedding-3-small\n gpt-4o-mini\n gpt-3.5-turbo-16k\n gpt-4-0125-preview\n gpt-4-turbo-preview\n omni-moderation-latest\n gpt-4o-2024-05-13\n omni-moderation-2024-09-26\n tts-1-hd-1106\n chatgpt-4o-latest\n gpt-4\n gpt-4-0613\n o1-mini\n o1-preview\n o1-preview-2024-09-12\n tts-1-hd\n gpt-4-vision-preview\n text-embedding-ada-002\n gpt-3.5-turbo-1106\n gpt-4o-audio-preview\n tts-1\n tts-1-1106\n gpt-3.5-turbo-instruct-0914\n text-embedding-3-large\n gpt-4o-realtime-preview-2024-12-17\n gpt-4o-mini-realtime-preview\n gpt-4o-mini-realtime-preview-2024-12-17\n gpt-4o-2024-11-20\n gpt-4o-audio-preview-2024-12-17\n gpt-4o-mini-audio-preview\n gpt-4o-2024-08-06\n gpt-4o-mini-audio-preview-2024-12-17\n gpt-4o\n gpt-4-turbo-2024-04-09\n -----\n */\n model?: string;\n /** Router to use: openai or openrouter */\n router?: string;\n /** Chat completion type - completion (without tools) or tools (with function calling) */\n type?: \"completion\" | \"tools\";\n /** Logging level for the application */\n logLevel?: unknown;\n /** Profile for constants */\n profile?: string;\n /** Environment (in profile) */\n env?: string;\n /** Configuration as JSON string or path to JSON file, eg: {\"openrouter\":{\"key\":\"your-key\"}} or path/to/config.json */\n config?: string | undefined;\n /** Write out as script */\n dump?: string | undefined;\n /** Path to preferences file */\n preferences?: string;\n /** Logging directory */\n logs?: string;\n}"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_kbot.d.cts b/packages/commons/dist/types_kbot.d.cts new file mode 100644 index 00000000..120feeb3 --- /dev/null +++ b/packages/commons/dist/types_kbot.d.cts @@ -0,0 +1,194 @@ +interface IKBotOptions { + /** Path to the project directory */ + path?: string; + /** Description of the modifications to make to the project. Supports file paths. */ + query?: string; + /** Optional output path for modified files */ + output?: string | undefined; + /** Optional destination path for the result, will substitute ${MODEL} and ${ROUTER} in the path */ + dst?: string | undefined; + /** Template (typescript) or path to use for processing, see https://git.polymech.io/polymech/ai-template-typescript */ + template?: (("typescript") | string) | undefined; + /** Template root directory. When specified, templates are loaded with a prefix, eg: ${POLYMECH-ROOT}/ai-template-${options.template} */ + templateRoot?: string; + /** List of template parts to disable. Addionally, tools categories can be disabled, eg: --disable=fs,git,interact,terminal,search,web,email,user */ + disable?: string[]; + /** List of specific tools to disable */ + disableTools?: string[]; + /** Glob patterns to match files for processing, comma separated, eg: src/*.tsx,src/*.ts */ + glob?: string[] | undefined; + /** AI model to use for processing. Available models: +  +  OpenRouter models: +  + google/gemini-pro-1.5-exp | paid + meta-llama/llama-3.2-11b-vision-instruct:free | free + google/gemini-flash-1.5-exp | paid + google/gemini-flash-1.5-8b-exp | paid + microsoft/phi-3-medium-128k-instruct:free | free + microsoft/phi-3-mini-128k-instruct:free | free + google/gemini-2.0-flash-thinking-exp:free | free + google/gemini-2.0-flash-exp:free | free + meta-llama/llama-3.2-1b-instruct | paid + meta-llama/llama-3.2-3b-instruct | paid + meta-llama/llama-3.1-8b-instruct | paid + mistralai/mistral-7b-instruct | paid + mistralai/mistral-7b-instruct-v0.3 | paid + meta-llama/llama-3-8b-instruct | paid + amazon/nova-micro-v1 | paid + google/gemini-flash-1.5-8b | paid + mistralai/ministral-3b | paid + meta-llama/llama-3.2-11b-vision-instruct | paid + amazon/nova-lite-v1 | paid + google/gemini-flash-1.5 | paid + mistralai/ministral-8b | paid + microsoft/phi-3-mini-128k-instruct | paid + microsoft/phi-3.5-mini-128k-instruct | paid + meta-llama/llama-3.1-70b-instruct | paid + nvidia/llama-3.1-nemotron-70b-instruct | paid + deepseek/deepseek-chat | paid + cohere/command-r-08-2024 | paid + mistralai/mistral-nemo | paid + mistralai/pixtral-12b | paid + openai/gpt-4o-mini | paid + openai/gpt-4o-mini-2024-07-18 | paid + mistralai/mistral-7b-instruct-v0.1 | paid + ai21/jamba-1-5-mini | paid + mistralai/mistral-small | paid + qwen/qwen-2.5-72b-instruct | paid + meta-llama/llama-3-70b-instruct | paid + mistralai/mixtral-8x7b-instruct | paid + mistralai/mistral-tiny | paid + mistralai/codestral-mamba | paid + anthropic/claude-3-haiku:beta | paid + anthropic/claude-3-haiku | paid + nousresearch/hermes-3-llama-3.1-70b | paid + cohere/command-r-03-2024 | paid + cohere/command-r | paid + openai/gpt-3.5-turbo-0125 | paid + google/gemini-pro | paid + openai/gpt-3.5-turbo | paid + mistralai/mixtral-8x7b-instruct:nitro | paid + meta-llama/llama-3.1-405b-instruct | paid + amazon/nova-pro-v1 | paid + anthropic/claude-3.5-haiku:beta | paid + anthropic/claude-3.5-haiku | paid + anthropic/claude-3.5-haiku-20241022:beta | paid + anthropic/claude-3.5-haiku-20241022 | paid + microsoft/phi-3-medium-128k-instruct | paid + openai/gpt-3.5-turbo-1106 | paid + openai/gpt-3.5-turbo-0613 | paid + meta-llama/llama-3.2-90b-vision-instruct | paid + google/gemini-pro-1.5 | paid + mistralai/mixtral-8x22b-instruct | paid + mistralai/mistral-large | paid + mistralai/mistral-large-2407 | paid + mistralai/mistral-large-2411 | paid + mistralai/pixtral-large-2411 | paid + ai21/jamba-1-5-large | paid + x-ai/grok-2-1212 | paid + cohere/command-r-plus-08-2024 | paid + openai/gpt-4o | paid + openai/gpt-4o-2024-08-06 | paid + openai/gpt-4o-2024-11-20 | paid + mistralai/mistral-medium | paid + cohere/command-r-plus | paid + cohere/command-r-plus-04-2024 | paid + openai/gpt-3.5-turbo-16k | paid + anthropic/claude-3.5-sonnet:beta | paid + anthropic/claude-3.5-sonnet | paid + anthropic/claude-3-sonnet:beta | paid + anthropic/claude-3-sonnet | paid + anthropic/claude-3.5-sonnet-20240620:beta | paid + anthropic/claude-3.5-sonnet-20240620 | paid + openai/gpt-4o-2024-05-13 | paid + x-ai/grok-beta | paid + x-ai/grok-vision-beta | paid + openai/gpt-4o:extended | paid + openai/gpt-4-turbo | paid + openai/gpt-4-1106-preview | paid + openai/gpt-4-turbo-preview | paid + openai/o1 | paid + anthropic/claude-3-opus:beta | paid + anthropic/claude-3-opus | paid + openai/gpt-4 | paid + openai/gpt-4-0314 | paid + openai/gpt-4-32k-0314 | paid + openai/gpt-4-32k | paid +  +  OpenAI models: +  + gpt-4o-audio-preview-2024-10-01 + gpt-4o-realtime-preview + gpt-4o-realtime-preview-2024-10-01 + o1-mini-2024-09-12 + dall-e-2 + gpt-4-turbo + gpt-4-1106-preview + gpt-3.5-turbo + gpt-3.5-turbo-0125 + gpt-3.5-turbo-instruct + gpt-4-1106-vision-preview + babbage-002 + davinci-002 + whisper-1 + dall-e-3 + gpt-4o-mini-2024-07-18 + text-embedding-3-small + gpt-4o-mini + gpt-3.5-turbo-16k + gpt-4-0125-preview + gpt-4-turbo-preview + omni-moderation-latest + gpt-4o-2024-05-13 + omni-moderation-2024-09-26 + tts-1-hd-1106 + chatgpt-4o-latest + gpt-4 + gpt-4-0613 + o1-mini + o1-preview + o1-preview-2024-09-12 + tts-1-hd + gpt-4-vision-preview + text-embedding-ada-002 + gpt-3.5-turbo-1106 + gpt-4o-audio-preview + tts-1 + tts-1-1106 + gpt-3.5-turbo-instruct-0914 + text-embedding-3-large + gpt-4o-realtime-preview-2024-12-17 + gpt-4o-mini-realtime-preview + gpt-4o-mini-realtime-preview-2024-12-17 + gpt-4o-2024-11-20 + gpt-4o-audio-preview-2024-12-17 + gpt-4o-mini-audio-preview + gpt-4o-2024-08-06 + gpt-4o-mini-audio-preview-2024-12-17 + gpt-4o + gpt-4-turbo-2024-04-09 + ----- + */ + model?: string; + /** Router to use: openai or openrouter */ + router?: string; + /** Chat completion type - completion (without tools) or tools (with function calling) */ + type?: "completion" | "tools"; + /** Logging level for the application */ + logLevel?: unknown; + /** Profile for constants */ + profile?: string; + /** Environment (in profile) */ + env?: string; + /** Configuration as JSON string or path to JSON file, eg: {"openrouter":{"key":"your-key"}} or path/to/config.json */ + config?: string | undefined; + /** Write out as script */ + dump?: string | undefined; + /** Path to preferences file */ + preferences?: string; + /** Logging directory */ + logs?: string; +} + +export type { IKBotOptions }; diff --git a/packages/commons/dist/uri.cjs b/packages/commons/dist/uri.cjs new file mode 100644 index 00000000..428683ba --- /dev/null +++ b/packages/commons/dist/uri.cjs @@ -0,0 +1,59 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var uri_exports = {}; +__export(uri_exports, { + parseForDownload: () => parseForDownload +}); +module.exports = __toCommonJS(uri_exports); +var import_url = require("url"); +var path = __toESM(require("path"), 1); +const filenamify = require("filenamify"); +const _sanitize = require("sanitize-filename"); +const sanitize_ex = (f) => { + let str = filenamify(_sanitize(f)).replace(/[^\x00-\x7F]/g, "").replace("_", ""); + return str; +}; +const parseForDownload = (url, dst) => { + const parsed = new import_url.URL(url); + const parts = path.parse(parsed.pathname); + const filename = sanitize_ex(decodeURI(parts.base)); + const downloadPath = path.resolve(`${dst}/${filename}`); + const downloadUrl = parsed.origin + parsed.pathname; + return { + urlParts: parsed, + pathParts: parts, + filename, + path: downloadPath, + url: downloadUrl + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + parseForDownload +}); +//# sourceMappingURL=uri.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/uri.cjs.map b/packages/commons/dist/uri.cjs.map new file mode 100644 index 00000000..c91dd9c9 --- /dev/null +++ b/packages/commons/dist/uri.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/uri.ts"],"sourcesContent":["import { URL } from 'url'\r\nimport * as path from 'path'\r\n\r\nconst filenamify = require('filenamify')\r\nconst _sanitize = require(\"sanitize-filename\")\r\n\r\nconst sanitize_ex = (f) => {\r\n let str: string = filenamify(_sanitize(f)).replace(/[^\\x00-\\x7F]/g, \"\").replace('_', '');\r\n return str;\r\n}\r\n\r\nexport interface IDownloadUrl{\r\n urlParts: URL\r\n pathParts: path.ParsedPath\r\n filename: string\r\n path:string\r\n url: string\r\n}\r\n\r\nexport const parseForDownload = (url: string, dst: string) : IDownloadUrl => {\r\n\r\n const parsed = new URL(url);\r\n const parts = path.parse(parsed.pathname)\r\n\r\n const filename = sanitize_ex(decodeURI(parts.base))\r\n const downloadPath = path.resolve(`${dst}/${filename}`)\r\n const downloadUrl = parsed.origin + parsed.pathname\r\n \r\n return {\r\n urlParts:parsed,\r\n pathParts: parts,\r\n filename: filename,\r\n path: downloadPath,\r\n url: downloadUrl\r\n }\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAoB;AACpB,WAAsB;AAEtB,MAAM,aAAa,QAAQ,YAAY;AACvC,MAAM,YAAY,QAAQ,mBAAmB;AAE7C,MAAM,cAAc,CAAC,MAAM;AACvB,MAAI,MAAc,WAAW,UAAU,CAAC,CAAC,EAAE,QAAQ,iBAAiB,EAAE,EAAE,QAAQ,KAAK,EAAE;AACvF,SAAO;AACX;AAUO,MAAM,mBAAmB,CAAC,KAAa,QAA+B;AAEzE,QAAM,SAAS,IAAI,eAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK,MAAM,OAAO,QAAQ;AAExC,QAAM,WAAW,YAAY,UAAU,MAAM,IAAI,CAAC;AAClD,QAAM,eAAe,KAAK,QAAQ,GAAG,GAAG,IAAI,QAAQ,EAAE;AACtD,QAAM,cAAc,OAAO,SAAS,OAAO;AAE3C,SAAO;AAAA,IACH,UAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,MAAM;AAAA,IACN,KAAK;AAAA,EACT;AACJ;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/uri.d.cts b/packages/commons/dist/uri.d.cts new file mode 100644 index 00000000..e6a3972a --- /dev/null +++ b/packages/commons/dist/uri.d.cts @@ -0,0 +1,13 @@ +import { URL } from 'url'; +import * as path from 'path'; + +interface IDownloadUrl { + urlParts: URL; + pathParts: path.ParsedPath; + filename: string; + path: string; + url: string; +} +declare const parseForDownload: (url: string, dst: string) => IDownloadUrl; + +export { type IDownloadUrl, parseForDownload }; diff --git a/packages/commons/dist/variables.cjs b/packages/commons/dist/variables.cjs new file mode 100644 index 00000000..d4a26fed --- /dev/null +++ b/packages/commons/dist/variables.cjs @@ -0,0 +1,72 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var variables_exports = {}; +__export(variables_exports, { + DATE_VARS: () => DATE_VARS, + DEFAULT_VARS: () => DEFAULT_VARS, + _substitute: () => _substitute, + resolve: () => resolve, + resolveVariables: () => resolveVariables, + substitute: () => substitute +}); +module.exports = __toCommonJS(variables_exports); +var import_constants = require("@polymech/core/constants"); +var import_config = require("./config.js"); +const DATE_VARS = () => { + return { + YYYY: new Date(Date.now()).getFullYear(), + MM: new Date(Date.now()).getMonth() + 1, + DD: new Date(Date.now()).getDate(), + HH: new Date(Date.now()).getHours(), + SS: new Date(Date.now()).getSeconds() + }; +}; +const _substitute = (template, map, keep = true, alt = false) => { + const transform = (k) => k || ""; + return template.replace(alt ? import_constants.REGEX_VAR_ALT : import_constants.REGEX_VAR, (match, key, format) => { + if (map[key]) { + return transform(map[key]).toString(); + } else if (map[key.replace(/-/g, "_")]) { + return transform(map[key.replace(/-/g, "_")]).toString(); + } else if (keep) { + return "${" + key + "}"; + } else { + return ""; + } + }); +}; +const substitute = (alt, template, vars = {}, keep = true) => alt ? _substitute(template, vars, keep, alt) : _substitute(template, vars, keep, alt); +const DEFAULT_VARS = (vars) => { + return { + ...import_config.DEFAULT_ROOTS, + ...DATE_VARS(), + ...vars + }; +}; +const resolveVariables = (_path, alt = false, vars = {}) => substitute(alt, _path, DEFAULT_VARS(vars)); +const resolve = (_path, alt = false, vars = {}) => resolveVariables(_path, alt, vars); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + DATE_VARS, + DEFAULT_VARS, + _substitute, + resolve, + resolveVariables, + substitute +}); +//# sourceMappingURL=variables.cjs.map \ No newline at end of file diff --git a/packages/commons/dist/variables.cjs.map b/packages/commons/dist/variables.cjs.map new file mode 100644 index 00000000..fc1ed58d --- /dev/null +++ b/packages/commons/dist/variables.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/variables.ts"],"sourcesContent":["import { REGEX_VAR, REGEX_VAR_ALT } from \"@polymech/core/constants\"\r\n\r\nimport { DEFAULT_ROOTS } from './config.js'\r\n\r\nexport const DATE_VARS = () => {\r\n return {\r\n YYYY: new Date(Date.now()).getFullYear(),\r\n MM: new Date(Date.now()).getMonth() + 1,\r\n DD: new Date(Date.now()).getDate(),\r\n HH: new Date(Date.now()).getHours(),\r\n SS: new Date(Date.now()).getSeconds()\r\n }\r\n}\r\n\r\nexport const _substitute = (template, map: Record, keep: boolean = true, alt: boolean = false) => {\r\n const transform = (k) => k || ''\r\n return template.replace(alt ? REGEX_VAR_ALT : REGEX_VAR, (match, key, format) => {\r\n if (map[key]) {\r\n return transform(map[key]).toString()\r\n } else if (map[key.replace(/-/g, '_')]) {\r\n return transform(map[key.replace(/-/g, '_')]).toString()\r\n } else if (keep) {\r\n return \"${\" + key + \"}\"\r\n } else {\r\n return \"\"\r\n }\r\n })\r\n}\r\nexport const substitute = (alt: boolean, template: string, vars: Record = {}, keep: boolean = true) => alt ? _substitute(template, vars, keep, alt) : _substitute(template, vars, keep, alt)\r\nexport const DEFAULT_VARS = (vars: any) => {\r\n return {\r\n ...DEFAULT_ROOTS,\r\n ...DATE_VARS(),\r\n ...vars\r\n }\r\n}\r\nexport const resolveVariables = (_path: string, alt: boolean = false, vars: Record = {}) =>\r\n substitute(alt, _path, DEFAULT_VARS(vars))\r\n\r\nexport const resolve = (_path: string, alt: boolean = false, vars: Record = {}) =>\r\n resolveVariables(_path, alt, vars)\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyC;AAEzC,oBAA8B;AAEvB,MAAM,YAAY,MAAM;AAC3B,SAAO;AAAA,IACH,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,YAAY;AAAA,IACvC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,SAAS,IAAI;AAAA,IACtC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,QAAQ;AAAA,IACjC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,SAAS;AAAA,IAClC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,WAAW;AAAA,EACxC;AACJ;AAEO,MAAM,cAAc,CAAC,UAAU,KAA0B,OAAgB,MAAM,MAAe,UAAU;AAC3G,QAAM,YAAY,CAAC,MAAM,KAAK;AAC9B,SAAO,SAAS,QAAQ,MAAM,iCAAgB,4BAAW,CAAC,OAAO,KAAK,WAAW;AAC7E,QAAI,IAAI,GAAG,GAAG;AACV,aAAO,UAAU,IAAI,GAAG,CAAC,EAAE,SAAS;AAAA,IACxC,WAAW,IAAI,IAAI,QAAQ,MAAM,GAAG,CAAC,GAAG;AACpC,aAAO,UAAU,IAAI,IAAI,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS;AAAA,IAC3D,WAAW,MAAM;AACb,aAAO,OAAO,MAAM;AAAA,IACxB,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;AACO,MAAM,aAAa,CAAC,KAAc,UAAkB,OAA4B,CAAC,GAAG,OAAgB,SAAS,MAAM,YAAY,UAAU,MAAM,MAAM,GAAG,IAAI,YAAY,UAAU,MAAM,MAAM,GAAG;AACjM,MAAM,eAAe,CAAC,SAAc;AACvC,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG,UAAU;AAAA,IACb,GAAG;AAAA,EACP;AACJ;AACO,MAAM,mBAAmB,CAAC,OAAe,MAAe,OAAO,OAA+B,CAAC,MAClG,WAAW,KAAK,OAAO,aAAa,IAAI,CAAC;AAEtC,MAAM,UAAU,CAAC,OAAe,MAAe,OAAO,OAA+B,CAAC,MACzF,iBAAiB,OAAO,KAAK,IAAI;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/variables.d.cts b/packages/commons/dist/variables.d.cts new file mode 100644 index 00000000..3473399a --- /dev/null +++ b/packages/commons/dist/variables.d.cts @@ -0,0 +1,14 @@ +declare const DATE_VARS: () => { + YYYY: number; + MM: number; + DD: number; + HH: number; + SS: number; +}; +declare const _substitute: (template: any, map: Record, keep?: boolean, alt?: boolean) => any; +declare const substitute: (alt: boolean, template: string, vars?: Record, keep?: boolean) => any; +declare const DEFAULT_VARS: (vars: any) => any; +declare const resolveVariables: (_path: string, alt?: boolean, vars?: Record) => any; +declare const resolve: (_path: string, alt?: boolean, vars?: Record) => any; + +export { DATE_VARS, DEFAULT_VARS, _substitute, resolve, resolveVariables, substitute }; diff --git a/packages/i18n/dist/lib/translate copy.d.ts b/packages/i18n/dist/lib/translate copy.d.ts new file mode 100644 index 00000000..77606ac5 --- /dev/null +++ b/packages/i18n/dist/lib/translate copy.d.ts @@ -0,0 +1,29 @@ +import * as TOML from 'smol-toml'; +import { IOptions } from '../types.js'; +import * as deepl from './deepl.js'; +export declare const clean: (text?: string) => string; +export declare const hash: (text: string) => string; +export declare const translateObjectAIT: (obj: any, src: string, options: IOptions) => Promise; +export declare const translateXLS: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateDeepL: (text: string, srcLang: string, dstLang: string, dOptions: deepl.IDeepLOptions, options?: IOptions, file?: string) => Promise; +export declare const translateObject: (obj: any, src: string, options: IOptions) => Promise; +export declare const getTranslation: (translations: any, all?: boolean) => any; +export declare const translateMarkup: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateJSON: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateTOML: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateYAML: (src: string, dst: string, options: IOptions) => Promise>; +export declare const translateFiles: (file: any, targets: string[], options: IOptions) => Promise; +export declare const translate: (opts: IOptions) => Promise; +export declare const translateText: (text: string, srcLang: string, dstLang: string, options?: IOptions) => Promise; +export declare const storeSet: (storePath: string, text: string, translation: string, file?: string) => void; +export declare const storeGet: (storePath: string, text: string, file?: string) => any; +export declare const TRANSLATORS: { + '.md': (src: string, dst: string, options: IOptions) => Promise; + '.html': (src: string, dst: string, options: IOptions) => Promise; + '.json': (src: string, dst: string, options: IOptions) => Promise; + '.toml': (src: string, dst: string, options: IOptions) => Promise; + '.yaml': (src: string, dst: string, options: IOptions) => Promise>; + '.xlsx': (src: string, dst: string, options: IOptions) => Promise; + '.xls': (src: string, dst: string, options: IOptions) => Promise; +}; +export declare const getTranslator: (file: string) => any; diff --git a/packages/i18n/dist/lib/translate copy.js b/packages/i18n/dist/lib/translate copy.js new file mode 100644 index 00000000..2c3343a8 --- /dev/null +++ b/packages/i18n/dist/lib/translate copy.js @@ -0,0 +1,441 @@ +import * as path from 'path'; +import { JSONPath } from 'jsonpath-plus'; +import { createHash } from 'crypto'; +import { get_cached, set_cached } from '@polymech/cache'; +import { OSR_CACHE } from '@polymech/commons'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { resolve } from '@polymech/commons'; +import { isString, isArray, isObject, isNumber } from '@polymech/core/primitives'; +import { sync as read } from "@polymech/fs/read"; +import { sync as write } from "@polymech/fs/write"; +import { sync as exists } from "@polymech/fs/exists"; +import { sync as mkdir } from "@polymech/fs/dir"; +import * as XLSX from 'xlsx'; +import { parse, stringify } from 'yaml'; +import pMap from 'p-map'; +import { minify as minify_html } from 'html-minifier-terser'; +import { globBase } from '@polymech/commons'; +// import * as TOML from '@iarna/toml' +import * as TOML from 'smol-toml'; +import { targets, parse as parseOptions } from '../options.js'; +import { MODULE_NAME } from '../constants.js'; +import { store, get } from './store.js'; +import * as deepl from './deepl.js'; +import { createLogger } from '@polymech/log'; +let logger = createLogger('i18n'); +const minify = false; +const extension = (file) => path.parse(file).ext; +import { defaultFilters, defaultOptions, transformObject, testFilters } from './async-iterator.js'; +import { update } from './glossary.js'; +export const clean = (text = "") => text.trim(); +export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); +export const translateObjectAIT = async (obj, src, options) => { + const opts = defaultOptions({ + throttleDelay: 100, + concurrentTasks: 1, + path: options.query, + filterCallback: testFilters(defaultFilters([ + async (input) => !options.keys.includes(input) + ])), + transform: async (input, path) => { + if ((isNumber(input) || parseInt(input))) { + return input; + } + const stored = get(options.store, input, options); + if (stored) { + return stored; + } + else { + const translated = await _translate(input, src, options); + if (translated) { + if (options.store) { + store(options.store, input, translated, options); + } + return translated; + } + return input; + } + }, + errorCallback: (path, value, error) => { + logger.error(`Error at path: ${path}, value: ${value}, error: ${error}`); + return value; + } + }); + try { + await transformObject(obj, opts.transform, opts.path, opts.throttleDelay, opts.concurrentTasks, opts.errorCallback, opts.filterCallback); + return obj; + } + catch (error) { + logger.error('Translation failed:', error); + } +}; +export const translateXLS = async (src, dst, options) => { + logger.debug(`Translating ${src} to ${dst}`); + if (!exists(src)) { + logger.error('File not found : ' + src); + return; + } + const dstDir = path.parse(dst).dir; + mkdir(dstDir); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { + keys: options.keys + }, MODULE_NAME); + if (osr_cache && cached && options.cache && exists(dst)) { + return cached; + } + const workbook = XLSX.readFile(src); + const worksheet = workbook.Sheets[workbook.SheetNames[0]]; + const raw_data = XLSX.utils.sheet_to_json(worksheet, { header: 1, blankrows: false, raw: false, skipHidden: true }); + const queryResult = JSONPath({ + path: options.query, + json: raw_data, + }); + let translated; + try { + translated = await translateObjectAIT(raw_data, src, { + ...options, + keys: queryResult + }); + } + catch (error) { + logger.error('Error translating XLSX', error); + return; + } + if (!translated) { + logger.error('Error translating XLSX', src); + return; + } + const sheetOut = XLSX.utils.json_to_sheet(translated, { skipHeader: true }); + const workbookOut = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(workbookOut, sheetOut, workbook.SheetNames[0]); + XLSX.writeFileXLSX(workbookOut, dst); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys }, MODULE_NAME, translated); + } + return translated; +}; +export const translateDeepL = async (text, srcLang = 'EN', dstLang = 'DE', dOptions, options = {}, file = '') => { + if (minify) { + text = await minify_html(text, { + collapseWhitespace: true + }); + } + const glossary = await update(srcLang.toLowerCase(), dstLang.toLowerCase(), options); + const deeplOptions = { + preserve_formatting: '1', + tag_handling: ["xml"], + ...dOptions, + text: text, + target_lang: dstLang, + source_lang: srcLang, + glossary_id: glossary?.glossaryId, + formality: options.formality || 'default', + }; + let ret = await deepl.translate_deepl(deeplOptions); + if (!ret) { + logger.error('Translate failed : ' + text, file); + return false; + } + ret = ret?.data; + if (options.filters) { + (ret.translations).forEach((t, i) => { + options.filters.forEach((f) => { + ret.translations[i].text = f(text, t.text, file); + }); + }); + } + return ret.translations; +}; +const _translate = async (value, src, options) => { + const translations = await translateDeepL(value, options.srcLang, options.dstLang, { + auth_key: options.api_key, + formality: options.formality || 'default', + free_api: false + }, options, src); + return getTranslation(translations); +}; +export const translateObject = async (obj, src, options) => { + if (isNumber(obj)) { + return obj; + } + if (isString(obj) && !obj.trim().length) { + return obj; + } + if (isString(obj) && options.store) { + const stored = get(options.store, obj, options); + if (stored && options.cache) { + return stored; + } + const ret = await _translate(obj, src, options); + if (ret && options.store) { + store(options.store, obj, ret, options); + return ret; + } + else { + console.error('Error translating : ', obj); + } + return obj; + } + if (isObject(obj) || isArray(obj)) { + for await (const [key, value] of Object.entries(obj)) { + if (!obj[key]) { + continue; + } + if (!isString(key)) { + continue; + } + if (isString(value) && options.keys && !options.keys.includes(key)) { + continue; + } + if (isString(value)) { + const stored = get(options.store, value, options); + if (stored && options.cache) { + obj[key] = stored; + } + else { + obj[key] = await _translate(value, src, options); + if (options.store) { + store(options.store, value, obj[key], options); + } + } + } + else if (isObject(value)) { + obj[key] = await translateObject(value, src, options); + } + else if (isArray(value)) { + let i = 0; + for await (const v of value) { + if (!v) + continue; + value[i] = await translateObject(v, src, options); + i++; + } + } + } + } + return obj; +}; +export const getTranslation = (translations, all = false) => { + if (!all) { + if (translations && translations[0] && translations[0].text) { + return translations[0].text; + } + } + else { + return translations; + } + return false; +}; +export const translateMarkup = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys, filters: options.filters }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + const srcContent = read(src); + let translations = await translateDeepL(srcContent, options.srcLang, options.dstLang, { + free_api: false, + auth_key: options.api_key + }, options, src); + translations = getTranslation(translations); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys, filters: options.filters }, MODULE_NAME, translations); + } + if (translations) { + write(dst, translations); + } + else { + return false; + } + return translations; +}; +export const translateJSON = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + let object = read(src, 'json'); + object = await translateObject(object, src, options); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys }, MODULE_NAME, object); + } + write(dst, object); + return object; +}; +export const translateTOML = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + let srcContent = read(src); + let toml = TOML.parse(srcContent); + toml = await translateObject(toml, src, options); + if (osr_cache && options.cache) { + try { + await set_cached(src, { keys: options.keys }, MODULE_NAME, TOML.stringify(toml)); + } + catch (e) { + logger.error(`Error caching ${src} TOML : ${e.message}`, toml); + } + } + write(dst, TOML.stringify(toml)); +}; +export const translateYAML = async (src, dst, options) => { + logger.debug(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return TOML.parse(cached.translations); + } + let srcContent = read(src); + let yaml = parse(srcContent); + yaml = await translateObject(yaml, src, options); + // yaml = await translateObjectAIT(yaml, src, options) + if (osr_cache && options.cache) { + try { + await set_cached(src, { keys: options.keys }, MODULE_NAME, TOML.stringify({ translations: yaml })); + } + catch (e) { + logger.error(`Error caching YAML ${src} : ${e.message}`, yaml); + } + } + const ret = stringify(yaml); + write(dst, ret); + options.stdout && process.stdout.write(ret); + return ret; +}; +export const translateFiles = async (file, targets, options) => { + const translator = getTranslator(file); + if (!translator) { + logger.error(`Can't find a translator for ${file}`); + return false; + } + if (options.dry) { + logger.info(`Abort translating, dry option is on!`); + return Promise.resolve([]); + } + return await pMap(targets, async (target) => getTranslator(file)(file, target, options), { concurrency: 1 }); +}; +export const translate = async (opts) => { + opts = parseOptions(opts, {}); + if (!opts.api_key) { + logger.error('i18n : No API key provided'); + return; + } + if (!opts.dstLang || !opts.srcLang) { + logger.error('i18n : No source or destination language provided'); + return; + } + if (opts.dstLang === opts.srcLang) { + logger.info(`Source and destination language are the same : ${opts.dstLang}`); + return; + } + if (opts.srcInfo && opts.srcInfo.IS_GLOB) { + const glob_base = globBase(opts.src); + opts.pathVariables.ROOT = path.resolve(glob_base.base); + } + else { + opts.pathVariables.ROOT = path.resolve(opts.cwd); + } + if (!opts.text && (opts.srcInfo && !opts.srcInfo.FILES)) { + logger.info(`Nothing to translate, --text or --src required`); + return; + } + const translateLang = async (lang) => { + opts.dstLang = lang; + opts.pathVariables['DST_LANG'] = opts.dstLang.toLowerCase(); + opts.pathVariables['SRC_LANG'] = opts.srcLang.toLowerCase(); + opts.pathVariables['CWD'] = path.resolve(opts.cwd); + if (opts.text) { + const ret = await translateDeepL(opts.text, opts.srcLang, lang, { + free_api: true, + auth_key: opts.api_key, + formality: opts.formality + }, opts, ""); + const translations = getTranslation(ret, opts.all); + process.stdout.write(opts.all ? JSON.stringify(translations, null, 2) : translations); + logger.info(`Translated ${opts.text} to ${lang}`, translations); + return ret; + } + logger.debug(`Translate ${opts.src} to ${lang}`); + return pMap(opts.srcInfo.FILES, async (f) => translateFiles(f, targets(f, opts), opts), { concurrency: 1 }); + }; + let languages = opts.dstLang.split(','); + const translated = await pMap(languages, async (lang) => translateLang(lang), { concurrency: 1 }); + logger.debug(`Translated all: ${opts.text ? opts.text : opts.src} to ${languages}`); + return translated; +}; +export const translateText = async (text, srcLang, dstLang, options = {}) => { + if (!text || text.length === 0) { + return ''; + } + if (srcLang === dstLang) { + return text; + } + if (!options.store) { + logger.error('No store provided'); + return text; + } + const store = path.resolve(resolve(options.store, false)); + if (!exists(store)) { + logger.warn(`Invalid store root : ${store}`); + } + const config = CONFIG_DEFAULT(); + text = clean(text); + if (exists(options.store)) { + const stored = storeGet(options.store, text); + if (stored) { + return stored; + } + } + if (!options.storeRoot) { + options.storeRoot = "${OSR_ROOT}/i18n-store"; + } + if (!options.api_key) { + if (!config || !config.deepl || !config.deepl.auth_key) { + logger.error('i18n:translateText: No API key provided'); + return text; + } + options.api_key = config.deepl.auth_key; + } + const out = await translateDeepL(text, srcLang, dstLang, { + ...config.deepl + }, options, ""); + const translation = getTranslation(out, false); + if (translation) { + storeSet(options.store, text, translation); + return translation; + } + else { + logger.warn('Error translating : ', text); + } + return text; +}; +export const storeSet = (storePath, text, translation, file = '') => { + const store = read(storePath, 'json') || {}; + store[text] = clean(translation); + write(storePath, store); +}; +export const storeGet = (storePath, text, file = '') => { + const db = read(storePath, 'json') || {}; + if (db[text]) { + return db[text]; + } +}; +export const TRANSLATORS = { + '.md': translateMarkup, + '.html': translateMarkup, + '.json': translateJSON, + '.toml': translateTOML, + '.yaml': translateYAML, + '.xlsx': translateXLS, + '.xls': translateXLS +}; +export const getTranslator = (file) => TRANSLATORS[extension(file)]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlIGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3RyYW5zbGF0ZSBjb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNqRixPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZDLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVELE9BQU8sRUFBRSxRQUFR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 \ No newline at end of file diff --git a/packages/i18n/dist/lib/translate_ex.d.ts b/packages/i18n/dist/lib/translate_ex.d.ts new file mode 100644 index 00000000..3150ae1d --- /dev/null +++ b/packages/i18n/dist/lib/translate_ex.d.ts @@ -0,0 +1,6 @@ +import { IOptions } from '../types.js'; +import * as deepl from './deepl.js'; +export declare const clean: (text?: string) => string; +export declare const hash: (text: string) => string; +export declare const translateDeepL: (text: string, srcLang: string, dstLang: string, dOptions: deepl.IDeepLOptions, options?: IOptions, file?: string) => Promise; +export declare const translateText: (text: string, srcLang: string, dstLang: string, options?: IOptions) => Promise; diff --git a/packages/i18n/dist/lib/translate_ex.js b/packages/i18n/dist/lib/translate_ex.js new file mode 100644 index 00000000..8abbf3df --- /dev/null +++ b/packages/i18n/dist/lib/translate_ex.js @@ -0,0 +1,84 @@ +import { createHash } from 'crypto'; +import * as deepl from './deepl.js'; +import { createLogger } from '@polymech/log'; +let logger = createLogger('i18n'); +import { update } from './glossary.js'; +export const clean = (text = "") => text.trim(); +export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); +export const translateDeepL = async (text, srcLang = 'EN', dstLang = 'DE', dOptions, options = {}, file = '') => { + const glossary = await update(srcLang.toLowerCase(), dstLang.toLowerCase(), options); + const deeplOptions = { + preserve_formatting: '1', + tag_handling: ["xml"], + ...dOptions, + text: text, + target_lang: dstLang, + source_lang: srcLang, + glossary_id: glossary?.glossaryId, + formality: options.formality || 'default', + }; + let ret = await deepl.translate_deepl(deeplOptions); + if (!ret) { + logger.error('Translate failed : ' + text, file); + return false; + } + ret = ret?.data; + if (options.filters) { + (ret.translations).forEach((t, i) => { + options.filters.forEach((f) => { + ret.translations[i].text = f(text, t.text, file); + }); + }); + } + return ret.translations; +}; +export const translateText = async (text, srcLang, dstLang, options = {}) => { + /* + if (!text || text.length === 0) { + return '' + } + if (srcLang === dstLang) { + return text + } + if (!options.store) { + logger.error('No store provided') + return text + } + const store = path.resolve(resolve(options.store, false)) + if (!exists(store)) { + logger.warn(`Invalid store root : ${store}`) + } + const config: any = CONFIG_DEFAULT() + text = clean(text) + if (exists(options.store)) { + const stored = storeGet(options.store, text) + if (stored) { + return stored + } + } + if(!options.storeRoot){ + options.storeRoot = "${OSR_ROOT}/i18n-store" + } + if(!options.api_key){ + if(!config || !config.deepl || !config.deepl.auth_key){ + logger.error('i18n:translateText: No API key provided') + return text + } + options.api_key = config.deepl.auth_key + } + const out: string[] = await translateDeepL(text, srcLang, dstLang, + { + ...config.deepl + }, options, "") + + const translation = getTranslation(out, false) + if (translation) { + // storeSet(options.store, text, translation) + return translation + } else { + logger.warn('Error translating : ', text) + } + */ + return text; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlX2V4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90cmFuc2xhdGVfZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQVNuQyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUVuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDdkQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM1RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUMvQixJQUFZLEVBQ1osVUFBa0IsSUFBSSxFQUN0QixVQUFrQixJQUFJLEVBQ3RCLFFBQTZCLEVBQzdCLFVBQW9CLEVBQUUsRUFDdEIsT0FBZSxFQUFFLEVBQUUsRUFBRTtJQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BGLE1BQU0sWUFBWSxHQUFHO1FBQ2pCLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JCLEdBQUcsUUFBUTtRQUNYLElBQUksRUFBRSxJQUFJO1FBQ1YsV0FBVyxFQUFFLE9BQStCO1FBQzVDLFdBQVcsRUFBRSxPQUErQjtRQUM1QyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDakMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUztLQUNyQixDQUFBO0lBRXhCLElBQUksR0FBRyxHQUFRLE1BQU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQXlCLENBQUE7SUFDaEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUNELEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFBO0lBQ2YsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxPQUE2QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDcEQsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUE7QUFDM0IsQ0FBQyxDQUFBO0FBSUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxVQUFvQixFQUFFLEVBQUUsRUFBRTtJQUMxRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BNkNFO0lBQ0YsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/src/lib/translate_ex.ts b/packages/i18n/src/lib/translate_ex.ts new file mode 100644 index 00000000..0d32b05c --- /dev/null +++ b/packages/i18n/src/lib/translate_ex.ts @@ -0,0 +1,105 @@ +import * as path from 'path' +import { createHash } from 'crypto' +import { CONFIG_DEFAULT } from '@polymech/commons' + +import { resolve } from '@polymech/commons' +import { sync as read } from "@polymech/fs/read" +import { sync as write } from "@polymech/fs/write" +import { sync as exists } from "@polymech/fs/exists" +import { IOptions, TranslateFilter } from '../types.js' +import { store, get } from './store.js' +import * as deepl from './deepl.js' + +import { createLogger } from '@polymech/log' +let logger = createLogger('i18n') + +import { update } from './glossary.js' + +export const clean = (text: string = "") => text.trim() +export const hash = (text: string) => createHash('md5').update(clean(text)).digest('base64') +export const translateDeepL = async ( + text: string, + srcLang: string = 'EN', + dstLang: string = 'DE', + dOptions: deepl.IDeepLOptions, + options: IOptions = {}, + file: string = '') => { + const glossary = await update(srcLang.toLowerCase(), dstLang.toLowerCase(), options) + const deeplOptions = { + preserve_formatting: '1', + tag_handling: ["xml"], + ...dOptions, + text: text, + target_lang: dstLang as deepl.DeepLLanguages, + source_lang: srcLang as deepl.DeepLLanguages, + glossary_id: glossary?.glossaryId, + formality: options.formality || 'default', + } as deepl.IDeepLOptions + + let ret: any = await deepl.translate_deepl(deeplOptions) as deepl.IDeepLResponse + if (!ret) { + logger.error('Translate failed : ' + text, file) + return false + } + ret = ret?.data + if (options.filters) { + (ret.translations).forEach((t, i) => { + (options.filters as TranslateFilter[]).forEach((f) => { + ret.translations[i].text = f(text, t.text, file) + }) + }) + } + return ret.translations +} + + + +export const translateText = async (text: string, srcLang: string, dstLang: string, options: IOptions = {}) => { + /* + if (!text || text.length === 0) { + return '' + } + if (srcLang === dstLang) { + return text + } + if (!options.store) { + logger.error('No store provided') + return text + } + const store = path.resolve(resolve(options.store, false)) + if (!exists(store)) { + logger.warn(`Invalid store root : ${store}`) + } + const config: any = CONFIG_DEFAULT() + text = clean(text) + if (exists(options.store)) { + const stored = storeGet(options.store, text) + if (stored) { + return stored + } + } + if(!options.storeRoot){ + options.storeRoot = "${OSR_ROOT}/i18n-store" + } + if(!options.api_key){ + if(!config || !config.deepl || !config.deepl.auth_key){ + logger.error('i18n:translateText: No API key provided') + return text + } + options.api_key = config.deepl.auth_key + } + const out: string[] = await translateDeepL(text, srcLang, dstLang, + { + ...config.deepl + }, options, "") + + const translation = getTranslation(out, false) + if (translation) { + // storeSet(options.store, text, translation) + return translation + } else { + logger.warn('Error translating : ', text) + } + */ + return text +} \ No newline at end of file